# 两将军问题

> 两支军队在山谷两边，必须同时进攻才能赢。

- ID: m03835
- 分类: create
- 领域: 设计思维

## 定义

两支军队在山谷两边，必须同时进攻才能赢。唯一的通信方式是派信使穿过敌占区（信使可能被抓）。将军A派信使说"明早进攻"，但他不知道B是否收到；即使B收到了回复"好的"，B也不知道A是否收到了确认。理论证明，在不可靠的通信信道上，永远无法达成100%确信的共识。脚手架作用：通信协议悖论。提醒我们，在任何不完美的环境（网络、职场沟通）中，绝对的确认是不存在的。必须接受"足够好"的共识，或者设计容错机制（如TCP协议的三次握手），而不是追求完美的同步。

## 机制

在不可靠信道上，发送方永远无法确认接收方已收到消息，因为确认本身也需经不可靠信道回传，形成无限递归。形式上可证明：无论多少轮确认，都无法达成双方100%确信的共识——这是一个不可解问题（与拜占庭将军问题相关但不同，后者还引入恶意节点）。

## 练习

1) 识别通信/协调中的不可靠环节；2) 放弃追求"完美确认"，改为"足够好"的概率性共识；3) 引入容错机制（超时、重试、幂等）；4) 用工程协议逼近（如TCP三次握手把不确定性降到可接受）；5) 对关键决策保留补偿/回滚手段。

## 脚手架用法

通信协议悖论。提醒我们，在任何不完美的环境（网络、职场沟通）中，绝对的确认是不存在的。必须接受"足够好"的共识，或者设计容错机制（如TCP协议的三次握手），而不是追求完美的同步。

[阅读网页](https://thinkingmodels.site/entries/detail/m03835)
