守则不足,攻则有余。——《孙子兵法•军形篇》
守尚不足,攻而有余?岂不怪哉?这句话千百年来困扰了无数先贤,甚至有人干脆把这句话改成了“守则有余,攻则不足”。然而在我看来,这句话并无任何错误之处,事实上,“守不足”的情况下,确可以“攻有余”。不信?来看看死理性派分析吧。
即使攻方兵力不足,也未必会输
美国普林斯顿大学的“博弈论”课程中曾经有这样一道题目:
如果给你 2 个师,让你攻破一座由敌方 3 个师守御的城市。规定双方都只能整师调动部队。通往这座城市的道路总共有甲、乙两条。当你发动进攻的时候,如果你的兵力大于敌方,那么你将获胜;如果你的兵力小于或者等于敌方,那么你就会战败。你将如何制定攻城方案?
也许你会觉得这是一个“不可能完成的任务”:在兵力相等的情况交战还会战败,更别提对方的兵力还比你多出整整50% 来。但这样的情形却是比较真实的,实际作战中防守方确实比进攻方有更多的补给,而且如果再在以逸待劳的情况下,借助各种防御工事,只要双方科技水平和兵员素质不是太过悬殊,守方的战力总是比相同兵力的攻方要高。
但即便如此,这次作战中双方获胜的概率却都是50%。不相信?让我们来看一看双方可能的战略部署。
敌军的三个师的兵力部署方案有 4 种:
A 3 个师都布置在甲道路上; B 2 个师布置在甲,1 个师布置在乙; C 1 个师布置在甲,2 个师布置在乙; D 3 个师都布置在乙道路上。
我军则有以下 3 种进攻方案:
1,2 个师都从甲道路上进攻 2,2 个师分别从甲、乙两条道路上进攻 3,2 个师都从乙道路上进攻
让我们根据这几种方案列一张表格:
如果我们假定双方采取每一种方案的可能性是相等的,那么攻方获胜的概率就是 6/12 = 1/2,即我们在前面所说的 50%。
先等一等!这是我们假设守方会等可能性地采取 A,B,C,D 四种策略的情况下所得到的结论。但如果考察一下 A,D 两个方案就会发现,采取这两个方案时攻方获胜的可能性更大。再进一步对比我们还可以发现,B 方案一定比 A 方案好,而 C 方案也一定比 D 方案好。那守方有什么理由会选择 A,D 两种方案呢?换言之,其实可供守方选择的只有 B,C 两个方案而已,它们的可能性各是50%。那么这种情况下攻方获胜的可能性只有 1/3 而已。
但是再等一等!守方不是傻瓜,难道攻方就是白痴吗?如果守方只会采取 B,C 两种方案,那么攻方也不会会采取必败的 2 号方案。所以其实可供攻方选择的也只有 1,3 两个方案而已,他们的可能性也都是 50%。于是我们可以得到一张新的表格:
双方获胜的概率依然都是 50%。是不是有点不可思议?守方拥有更多的兵力以及更优良的作战条件,但是双方获胜的概率却是相等的。
在兵力相等的情况下,攻方胜算更大
我相信读者读到这里一定还会好奇,如果是攻守双方的兵力相等的情况下,各自的胜算又是多少呢?我们不妨给守军削减一个师的兵力,再来看看守方这时候的策略:
A 2 个师全力防守甲 B 2 个师分兵防守甲、乙 C 2 个师全力防守乙
攻方依然可以采取前面中的 1,2,3 三种策略。那么此时双方的对阵情况如下:
可以看出无论守方采取那种策略,攻方获胜的概率都是 2/3,所以总的获胜概率也是 2/3。这个结果非常有趣,表面上看来对守方有利的博弈,占优势的却是攻方。这也恰恰印证了那句话:“进攻是最好的防守。”
为什么进攻是最好的防守
但是,为什么呢?也许答案可以用汉朝贾谊的著作《过秦论》中的六个字来概括:“攻守之势异也。”对于攻方来说,他们的目的只是“攻进城市”,在这场博弈游戏中,不论他们在甲、乙中哪条道路上取得优势,都能达到目的。相比起来守方的任务则艰巨许多,他们必须针对各种进攻策略作出部署,在这个例子中,他们就必须要在甲和乙两条道路上同时抵御住攻进。换言之,战争中的作战规则可能对守方有利,但是在胜利条件上却是偏袒攻方的。《孙子兵法•军形篇》中说道:“不可胜者,守也;可胜者,攻也。”此句恰好在“守则不足,攻则有余”一句的前面,也恰好印证了我们的理论。
我们不妨以《星际争霸2》为例:如果你只打算死守,就必须防范所有可能的进攻进攻方式。对手有可能使用前期爆兵流,或者后期科技流;有可能从正面进攻,也可能可能绕到背后空投地面部队。这样的话,你就既要在前期就保证足够的兵力应对rush,同时还要攀升科技打后期;既要建造地面战斗单位和防御工事,还得拥有对空防御。在不知道对方策略的时候,相同数量的资源,攻方只需要集中起来打造一种部队,你却需要把几乎所有的单位和建筑给建造一遍!而这些最终不过全是徒劳而已,正如《孙子兵法》所说的那样:“无所不备,则无所不寡。”
值得一提的是,强大的信息情报收集能力能够为守方扳回一局,这就好像玩《星际争霸2》如果开了全图,详细了解敌方的生产情况的话,就可以开展有针对性的防守。只是,信息不对称博弈就不是本文所讨论的内容了。
结语
至此,虽不排除我们按照理工科的思维曲解了孙子的原意,但毕竟他老人家的这句“守则不足,攻则有余”在死理性派手里,得到了一个颇好的诠释。也许对付“全世界三面来袭”的最好办法,就是像莎士比亚的《约翰王》里所说的那样,“给他们一个迎头痛击”。
本文用一个简单却非常新颖的计算,从一个特定的角度解释了进攻为什么是最好的防守。当然,现实中的战争远非本文简单的计算就能全面概括的,毕竟三里之城,七里之郭,也有环而攻之而不胜的时候。
纸上谈兵:萨尔浒之战以少胜多的原理
小时候我们都学过纸上谈兵这个词。其实历史上纸上谈兵的并非只有赵括一人,还有数学家。1914年一战期间,英国工程师弗雷德里克•兰彻斯特(我敢打赌这家伙是一个死理性派)异想天开地用数学解析战争,创立了著名的兰彻斯特战斗模型。通过它,我们能很容易地发现以少胜多背后的数学故事,比如经典的萨尔浒之战。
但在故事开始前,有必要说明的是,这只是 一个简化的数学模型 ,忽略了一些难以量化的因素,譬如天时、地利、人和以及政治因素,而它们对战争也有举足轻重的影响。事实上,从科学角度讲,研究结果仅对研究的模型有效。不过我们都知道,研究总是从基础模型开始的。
用兰彻斯特模型解析战争
这个著名的兰彻斯特战斗模型,实际上是一个讨论参战方战斗力和时间关系的模型,可以用来宏观地描述参战双方的战斗力损耗过程。这样说或许有些抽象,让我们先思考一个问题,现在有两支军队 A 军和 B 军。A 军以精锐著称,但兵力只有 B 军的一半,B 军人多势众,但单兵作战能力平均只有A军士兵的一半, 除此之外它们其他方面全部是等同的。如果这两支军队交战,一支军队消灭另一支军队即为胜利,你认为谁将是这场战斗的赢家?读者们不妨先选定一个答案( A 胜、B 胜或者玉石俱焚),然后再来看看兰彻斯特战斗模型怎么说。
假设现在有一场战斗,交战的双方为甲方和乙方。我们规定它们在战斗中某一时刻的战斗力(冷兵器时代,一般情况下就是部队中士兵的人数)分别是 x( t ) 和 y( t ) ,其中t表示时间。同时为方便起见,假设 x( t ) 和 y( t ) 都是关于 t 的连续可微函数,且恒为非负。换言之,双方的战斗力都是随着时间连续变化的,不可能在某一时刻发生突变(譬如《西游记》中的孙悟空从天宫搬来救兵),也不可能在某一时刻有变化率的突变(譬如打架的时候被对方一巴掌打通任督二脉)。
在此基础上,我们再假设某方战斗力的变化都是由于敌方对它的攻击造成的,这样战斗力在某一时刻的变化量,便只和该时刻对方的战斗力正相关。
据此我们可以得出下面两个微分方程:
其中系数 a 和 b 分别是乙方和甲方对对方的杀伤率,也就是某方每单位战斗力能够对敌方造成的战斗力损耗。
这便是著名的兰彻斯特战斗方程。也许现在这个方程看上去还不够直观,但如果把它稍作变换,就可以得到这样的式子。
在上面的式子中,假设等式左右两边的值为正,当 x = 0 时,必有 y > 0 。这也就意味着当甲方的战斗力消耗殆尽的时候,乙军还有人活着,这种情况下自然是乙军获得了胜利。同理,当等式左右两边的值小于0时,甲军将取得胜利。那当这个值等于0的时候呢?显然双方将惨烈地同归于尽,最终就像电影《赤壁》收尾处所说的那般:“大家都输了。”
更重要的是,上述这个式子还说明了 在战斗中双方的军事实力和各自军队战斗力的平方成正比 。这也就是著名的兰彻斯特平方律。
举个最简单的例子,倘若两支旗鼓相当的军队来火并的话,此时a=b , x 0 = y 0 = 1 ,这时候 a y? 2 = b x? 2 ,最终双方将同归于尽。但是倘若甲军去和一支人数是它的两倍,但每个士兵的实力只有他一半的乙军来打呢(这正是在前面提出的问题)?由 2a = b, y 0 = 2x 0 可得 a y? 2 / b x? 2 = 2。这表明占据人数优势的乙方将取得胜利,尽管他们的功夫都只有对手的一半。
更进一步来看后面这个例子,把 2a = b, y 0 = 2x 0 ,x = 0 这些条件都代入到上面给出的等式当中,可以得到y= √2 x。这意味着在乙军彻底消灭他的劲敌——精锐的甲军以后,自身兵力的损失还不到一半。如此事实无疑会让以精锐闻名的甲军感到压力山大,因为他们如果想要在人数不变的情况下和乙军对敌而不败的话,至少要让自己的每个士兵的单兵作战能力达到乙军的四倍才行!
上面的例子让我们看到,兰彻斯特平方率直观地反映了对战双方的战斗力对比。金庸迷们一定记得《笑傲江湖》中东方不败独战令狐冲、任我行、向左使、任盈盈的精彩片段,双方实际上打成平手。由此根据兰彻斯特平方率能推算出,东方不败的战斗力是其余四人战斗力平均值的16倍!也就是说,如果令狐冲、任我行、向左使、任盈盈战斗力分别是100、80、60、40的话(平均战斗力70),东方不败的战斗力就是70 × 16 = 1120 。Ta的“天下第一”还真不是浪得虚名。
萨尔浒之战以少胜多的原因
从兰彻斯特到将近百年后的今天,历史开始显得久远。但这并不妨碍我们做一回“事后诸葛亮”,意行沙场,也来纸上谈兵,用激扬文字再指点当年战场。而这一回,我们就从数学角度来讲述那场经典的以少胜多——萨尔浒之战。
这是发生在万历四十七年(公元1619年),中国辽东的一场规模浩大且影响深远的大战。
在这场战役中,当时仅拥有约六万八旗子弟的后金军首领爱新觉罗•努尔哈赤,凭借着他老到的战略眼光,竟将兵力二倍于他、汹汹而来的大明王师打得惨败而归。此战明廷丧师近五万,将官战死者亦有三百余人,其中还包括山海关总兵杜松这样的高级将领,可谓精锐尽失。若说当年李成梁对待努尔哈赤的态度是“为虺弗摧”的话,经此一役的后金对明廷来说,已然是“为蛇若何”了。
然而在此战之前,并非人人都把后金当回事,至少此次战役中明军方面最高统帅、辽东经略杨镐大人就是如此。据说在萨尔浒战役之前,杨镐曾与努尔哈赤修书一封,称大明王朝集结了四十七万大军将袭,并将出兵日期如实相告,似乎想以天朝神威威吓后金,好“不战而屈人之兵”。由此可见,在当时的杨镐看来,“消灭贼酋”不过是手到擒来的事情,根本没有想到会有战败的可能。但是事实上,如果杨镐大人了解兰彻斯特模型,也许他就会发现,虽然他的兵力是对方的两倍,但他的惨败却早在出师之日就已注定。
何出此言呢?不妨让我们用兰彻斯特战斗方程来分析萨尔浒之战。
当时努尔哈赤麾下的八旗子弟都是久经沙场的精锐,军队素质自然不可小觑。但明军亦有先进的武器和装备可与之抗衡,再加上常年和叛军作战的川军,以及由当年一代名将戚继光精心打造的浙军,军队的兵员能力也不在后金军之下。所以双方的杀伤率系数不妨看做是相等的。
那么兵力情况又是怎么样呢?我们在前面就已说过,后金军的兵力约六万人,而明朝方面的数据则是十二万。恰如前面的例子一般,后者的兵力是前者的两倍。换言之,如果杨镐的大军就这么杀过来的话,似乎努尔哈赤唯一的方法,就是在对方到来之前,把自己手下兵士的作战能力提高到原来的四倍。
但是一个很有趣的事实是,在萨尔浒之战的交战过程中,始终占据兵力优势的却是后金。原来杨镐在进攻的时候竟把自己的军队分成了四路,而这四路军队不但没有统一的调度,相互之间的通信也甚不灵便(实际战争中,有两路军队已经被努尔哈赤消灭了,第三路军竟还毫不知情)。这就使得本来兵力薄弱的努尔哈赤反倒拥有了以众击寡、各个击破的局部战略优势。虽然后金的兵力只有明朝的一半,但是后金每次战斗中面对的兵力,却都只有自己的一半。
让我们来为这种战略局面算一笔帐。假设后金军和明军的杀伤率系数都是 1,战斗力以万人为单位,那么后金军的军事实力是:
假设明朝的四路军队中兵力平均分配,也就是每路有 3 万人(实际兵力部署与此相去不远),那么明朝的军事实力则是:
我们发现,拥有巨大人数优势的明军的军事实力和后金军其实是相当的!
当然,这里的计算有一个问题。我们给出的这种明军兵力分配方案,恰巧是使得它的军事实力总和最小,根据均值不等式可以知道,只要在实际分配的时候哪怕采用3.01,2.99,3,3这样的方案,明军不就能够打败后金了吗?
在这个模型下的确如此。但这要求当时的明军能如同岳飞所梦想的那样“文臣不爱钱,武臣不惜死”,军队在损失惨重的情况下依然坚持战斗到最后一人。那样的话,努尔哈赤老兄真的是要操心下自己脑袋的去处了。可惜实际情况并非如此。古代战争的一个事实是,当某方的损失超过一定数量以后(这个数量通常还并不高),往往会因为士气低落而溃散,在接下来就变成“追亡逐北”的场面了。这种情况下战斗变为屠杀,溃散军队的杀伤率约等于 0。所以战争的胜负绝大多数都不是因为一方把另一方完全歼灭,而是因为一方的士气已经无法维系。
所以不妨让我们假设双方都会在自身兵力损失达到一半的时候溃败。同时再把明军四路兵力的实际部署情况稍加调整,用 4,3,3,2 作为它的部署策略,此时的军事实力总值为38,高于后金军。第一场战斗后,后金的残余兵力 x 1 满足如下方程:
解之得 x 1 =2√6≈4.90 。也就是第一场战斗结束后后金军的剩余兵力约4.9万人。我们继续通过下面的方程求解 x 2 , x 3 , x 4 。
解之得
计算结果表明,四场战斗中每一场都是后金军的兵力占优,导致每一场战斗的胜者都是后金,所以最后的胜者也是后金——尽管总的军事实力明军更高。
要说明的是,这里对明军并没有任何的不公平。事实上这个模型还有些偏袒明军,因为在当时的历史条件下,明军士气的水平其实很难达到伤亡人数约一半时才溃散。如果按照《窃明》中所说的标准——“除了处于死地外,最优秀的封建军队也不过能忍受一、两成的伤亡而不崩溃”来计算,当后金军取得胜利的时候,它所损失的兵力也不过1.28万人,还远不到其初始兵力的三分之一。
借助数学工具,数百年后的我们可以轻松地计算出努尔哈赤必将取得大胜的结果 。可惜的是当时背负十数万将士性命的统帅杨镐并没有这样的觉悟,即使当开原总兵马林根据自身的经验向他提出“王师当出万全,宜并兵一路,鼓行而前,执取罪人,倾其巢穴”这一清醒建议的时候,他也只是傲慢地坚持故我。如此无能的统帅最终葬送了大明的精锐之师。
结语
后来的事情是:万历四十七年二月二十五日,大明王师正式出征;三月初一,西路军遭努尔哈赤攻击,寡不敌众,全军覆没,总兵杜松战死;三月初三,北路军遭受攻击,寡不敌众,全军覆没,总兵马林狼狈逃回;三月初五,东路军被后金军偷袭,猝不及防,全军覆没,总兵刘铤战死;三月初六,南路军接到三路大军战败的消息后匆忙撤兵,后金军趁势追击,损伤惨重。结果正如我们这群事后诸葛亮所分析的一样,可惜我们的分析也正如开原总兵马林的意见一样,终无改这场战事的结局。
也许在因这场惨败而下狱到他被处斩以前,杨镐也曾多次反思过这场过战斗。他或许无法像我们这样定量计算出战斗的结果,但至少也应该会对《孙子兵法》虚实篇里“以众击寡”这个词有一层新的理解吧。