第三篇《谋攻篇》

《孙子兵法·谋攻篇》是《孙子兵法》的第三篇,主要论述如何通过战略谋划取得胜利,主张通过伐谋、伐交等手段,以最小代价获取最大胜利。


原文

孙子曰:
凡用兵之法,全国为上,破国次之;全军为上,破军次之;全旅为上,破旅次之;全卒为上,破卒次之;全伍为上,破伍次之。
是故百战百胜,非善之善者也;不战而屈人之兵,善之善者也。

故上兵伐谋,其次伐交,其次伐兵,其下攻城。攻城之法,为不得已。修橹轒辒,具器械,三月而后成,距堙,又三月而后已。将不胜其忿而蚁附之,杀士卒三分之一而城不拔者,此攻之灾也。

故善用兵者,屈人之兵而非战也,拔人之城而非攻也,毁人之国而非久也。必以全争于天下,故兵不顿而利可全,此谋攻之法也。

故用兵之法,十则围之,五则攻之,倍则分之,敌则能战之,少则能逃之,不若则能避之。故小敌之坚,大敌之擒也。

夫将者,国之辅也。辅周则国必强,辅隙则国必弱。

故君之所以患于军者三:不知军之不可以进而谓之进,不知军之不可以退而谓之退,是谓縻军;不知三军之事而同三军之政者,则军士惑矣;不知三军之权而同三军之任,则军士疑矣。三军既惑且疑,则诸侯之难至矣,是谓乱军引胜。

故知胜有五:知可以战与不可以战者胜,识众寡之用者胜,上下同欲者胜,以虞待不虞者胜,将能而君不御者胜。此五者,知胜之道也。

故曰:知彼知己者,百战不殆;不知彼而知己,一胜一负;不知彼不知己,每战必殆。


译文

孙子说:大凡用兵的原则,使敌人举国屈服,不战而降是上策,击破敌国就次一等;使敌全军降服是上策,打败敌人的军队就次一等;使敌人一个 “旅” 的队伍降服是上策,击破敌人一个 “旅” 就次一等;使敌人全 “卒” 降服是上策,打败敌人一个 “卒” 的队伍就次一等;使敌人全 “伍” 投降是上策,击破敌人的 “伍” 就次一等。因此,百战百胜,不算是最好的用兵策略,只有在攻城之前,先让敌人的军事能力(包括指挥能力和作战能力)严重短缺,根本无力抵抗,才算是高明中最高明的。

所以上等的用兵策略是以谋取胜,其次是以外交手段挫敌,再次是出动军队攻敌取胜,最下策才是攻城。攻城为万不得已时才使用。制造攻城的蔽橹、轒辒,准备各种攻城器械,需要花费三个月的时间。构筑攻城的土山又要三个月。将帅控制不住忿怒的情绪,驱使士卒像蚂蚁一样去爬梯攻城,使士卒伤亡三分之一而不能攻克,这便是攻城所带来的危害。

因此,善于用兵的人,使敌人屈服而不是靠战争,攻取敌人的城池而不是靠硬攻,消灭敌国而不是靠久战,用完善的计策争胜于天下,兵力不至于折损,却可以获得全胜,这就是以谋攻敌的方法。

用兵的原则是:有十倍的兵力就包围敌人,五倍的兵力就进攻敌人,两倍的兵力就分割消灭敌人,有与敌相当的兵力则可以抗击,兵力少于敌人就要避免与其正面接触,兵力弱少就要撤退远地。所以弱小的军队顽固硬拼,就会变成强大敌军的俘虏。

将帅,是国家的辅佐,辅佐周密国家就会强大;辅佐疏漏,未尽其职,国家必然衰弱。国君对军队造成的危害有三种情况:不知道军队在什么条件下可战而使其出击,不了解军队在什么情况下可退而使其撤退,这就束缚了军队的手脚。不通详三军内务,而插手三军的政事,就会使部队将士不知所从。不了解军中的权变之谋而参与军队的指挥,就会使将士们疑虑重重。军队既迷惑又疑虑,诸侯国军队乘机而进攻,灾难就降临到头上,这就是自乱其军而丧失了胜利。

预知取胜的因素有五点:懂得什么条件下可战或不可战,能取胜;懂得兵多兵少不同用法的,能取胜;全军上下一心的,能取胜;以有备之师待无备之师的,能取胜;将帅有才干而君主不从中干预的,能取胜。这五条,是预知胜利的道理。

所以说:了解对方也了解自己的,百战不败;不了解敌方而熟悉自己的,胜负各半;既不了解敌方,又不了解自己,每战必然失败。


核心思想

  • 总体原则

    • 战争的最高境界是保全敌国(使其投降),摧毁敌国是次等选择;保全敌军、全旅、全卒、全伍同理。

    • 百战百胜并非最高明,不通过战斗就让敌人屈服才是上策。

  • 谋攻的层次:上策是挫败敌人的谋略(伐谋),次之是破坏其外交(伐交),再次是击败其军队(伐兵),最下策是攻城。攻城是迫不得已的手段,耗时耗力且伤亡惨重。

  • 全胜思想:善战者通过谋略迫使敌人屈服,而非硬拼;通过威慑夺取城池,而非强攻;摧毁敌国无需长期消耗。

  • 兵力运用法则:十倍于敌则包围,五倍则进攻,两倍则分散敌人,势均力敌则灵活作战,兵力不足则退避。弱军若硬拼,必被强敌所擒。

  • 将领与国家:将领是国家的支柱,辅佐周密则国家强盛,辅佐疏漏则国家衰弱。

  • 君主之患:君主干涉军事的三大危害:盲目指挥进退、不懂军政却插手、不懂权变却任免将领。这会导致军队混乱,招致外敌入侵。

  • 胜利的五要素:知进退、懂兵力调配、上下同心、有备无患、君主信任将领。

  • 知己知彼:知敌我双方者百战不殆,不知敌只知己胜负参半,不知敌我则每战必败。


现实意义

《谋攻篇》不仅适用于军事,也广泛用于商业竞争、人际博弈等领域:

  • 商业:通过市场分析(知彼知己)制定策略,避免价格战,以差异化竞争取胜。

  • 管理:领导者需信任专业团队,避免“外行指导内行”。

  • 个人成长:明确自身优劣势,选择适合的竞争领域(“少则能逃之,不若则能避之”)。

《谋攻篇》的精髓在于:以智取胜,以谋代力,以全争天下


  • 全国:“全” 在这里作动词,意为完全地占有。“全国” 即完整地占有别国的领土。
  • 全军、全旅、全卒、全伍:“军”“旅”“卒”“伍” 是古代军队的编制单位。据《周礼》,一万两千五百人为一军,五百人为一旅,百人为一卒,五人为一伍。“全军” 等词表示使这些编制单位完整地降服。
  • 上兵伐谋:“上” 指上等、最好的;“兵” 指用兵方法;“伐” 是攻击;“谋” 即计谋。该词指用智谋战胜敌人,强调以智取胜,而非单纯依靠武力。
  • 伐交:通过外交手段去讨伐。指通过外交途径,分化瓦解敌人的盟国,扩大、巩固自己的盟国,迫使敌人陷于孤立,最后不得不屈服。
  • 伐兵:以武力战争敌人。
  • 修橹轒辒(fén wēn):“修” 意为制造;“橹” 是古代的一种攻城工具,即 “楼橹”,也有一种说法是用藤草制成的大盾牌;“辒” 是古代攻城用的四轮车,用排木制作,外蒙牛皮,可容纳十人(一说数十人),用以运土填塞城壕。
  • 距堙(yīn):用以攻城而堆积的土山。
  • 蚁附:指士兵像蚂蚁一般爬梯攻城。
  • :通 “钝”,这里指疲惫、受挫的意思。
  • :指与敌人兵力相等,势均力敌。
  • :在这里不是逃跑的意思,而是摆脱、逃离,指兵力比敌人少,就要能摆脱敌人。
  • 不若:指条件不如敌人,包括兵力、装备、士气、地形等各种作战条件。
  • 小敌之坚,大敌之擒:“小敌” 指弱小的军队;“坚” 指坚持硬拼;“大敌” 指强大的敌人;“擒” 指被俘虏。意为弱小的军队如果坚持硬拼,就会被强大的敌军俘虏。
  • 辅周:“辅” 是辅佐;“周” 表示周密。指将帅辅佐国君时考虑周全、细致。
  • 辅隙:“隙” 指漏洞、缺陷。即将帅辅佐国君时存在疏漏、不足之处。
  • 縻(mí)军:束缚军队,使军队不能灵活作战。
  • :权谋、权变,指根据不同的情况灵活运用策略和手段。
  • 引胜:导致敌人的胜利,即自己扰乱自己的军队而使敌人获得胜利。
  • 虞(yú):准备、防备。
  • :干预、牵制。
  • 殆(dài):危险、失败的意思。

代码模拟

以下是一个简化的示例,尝试将“知彼知己,百战不殆”的原则应用于一个简单的策略游戏中。在这个游戏中,有两个玩家(或称为“军队”),每个玩家都有一定数量的“兵力”(或称为“资源”)。目标是模拟双方根据对方的兵力来调整自己的策略,以达到最优的决策。

#include <stdio.h>

// 定义玩家结构体
typedef struct {
    char name[20];
    int troops; // 兵力
    int strategy; // 策略(0: 保守, 1: 进攻, 2: 撤退)
} Player;

// 函数声明
void printPlayerInfo(Player *player);
void updateStrategy(Player *player1, Player *player2);

int main() {
    Player player1 = {"玩家1", 100, 0}; // 初始化玩家1
    Player player2 = {"玩家2", 80, 0};  // 初始化玩家2

    // 模拟几个回合的策略调整
    for (int round = 1; round <= 5; ++round) {
        printf("回合 %d\n", round);
        printPlayerInfo(&player1);
        printPlayerInfo(&player2);

        // 根据兵力调整策略(这里只是简单模拟,实际策略可能更复杂)
        updateStrategy(&player1, &player2);
        updateStrategy(&player2, &player1);

        // 根据策略调整兵力(这里只是简单模拟,实际游戏中兵力变化可能更复杂)
        // 例如:进攻可能减少兵力,保守可能保持兵力,撤退可能增加兵力(通过补给等)
        if (player1.strategy == 1) player1.troops -= 10; // 进攻减少兵力
        else if (player1.strategy == 0) player1.troops += 0; // 保守保持兵力
        else if (player1.strategy == 2) player1.troops += 5; // 撤退增加兵力

        if (player2.strategy == 1) player2.troops -= 10; // 同理
        else if (player2.strategy == 0) player2.troops += 0;
        else if (player2.strategy == 2) player2.troops += 5;

        // 检查是否有玩家兵力为负,表示该玩家已“战败”
        if (player1.troops <= 0) {
            printf("玩家1战败!\n");
            break;
        }
        if (player2.troops <= 0) {
            printf("玩家2战败!\n");
            break;
        }
    }

    return 0;
}

// 打印玩家信息
void printPlayerInfo(Player *player) {
    printf("%s: 兵力 = %d, 策略 = %d\n", player->name, player->troops, player->strategy);
}

// 根据兵力调整策略(简单模拟)
void updateStrategy(Player *player, Player *opponent) {
    if (player->troops > opponent->troops * 1.5) {
        player->strategy = 1; // 兵力优势,进攻
    } else if (player->troops < opponent->troops * 0.5) {
        player->strategy = 2; // 兵力劣势,撤退
    } else {
        player->strategy = 0; // 兵力相当,保守
    }
}

updateStrategy 函数只是根据兵力的简单比例来模拟策略的调整。在实际应用中,策略的调整可能会基于更多的因素,如地形、天气、士气、装备等。

兵力的调整也只是简单的增减,没有考虑实际的战斗过程和损失情况。在实际的游戏中,这些都需要更复杂的模拟和计算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值