各自最优,一起变差
「囚徒困境」这个词已经被用滥了,滥到几乎所有让人不痛快的集体行为都会被扣上这顶帽子。这一章要做的事情是把帽子摘下来,把四张长得很像的表并排放好,让你看清楚:它们的结局差得很远,而解药也完全不同。认错了病,药就白吃。
下面四种场面,哪一种不是囚徒困境?
如果你觉得四个都是,那正是这一章要处理的事。选一个再往下读。
一张表的性质,藏在四个数的大小顺序里
先把囚徒困境的骨架抽出来。两个人各有「合作」和「背叛」两手,四种结局各有一个名字:
T 背叛得手(我背叛,对方合作) R 一起合作 P 一起背叛 S 被背叛(我合作,对方背叛) # 囚徒困境的定义,就是这四个数的大小顺序: T > R > P > S # 上一章那张表:T=5 R=3 P=1 S=0
只要满足这个顺序,划线法必然给出同一个结果:不管对方怎么做,背叛都更好(T > R 且 P > S),于是两道横杠全在「背叛」那一行,两道竖杠全在「背叛」那一列,均衡锁死在右下角,两人各得 P。
而左上角那个「一起合作」,两人各得 R,比 P 高。它就在那儿。这里我要给它起个名字,因为整本书都会用到。
如果存在另一格,它让每个人都不更差、并且至少一个人更好,那么当前这一格就是有亏的。那笔差额一直摆在桌上,没有人捡。
上一章那张表:均衡处两人共得 1 + 1 = 2,而「都闭嘴」共得 3 + 3 = 6。桌上留下 4 分。
这本书用松绿色标记这笔钱。看见绿色,就是看见了「本来可以更好但没人能过去」的地方。
四张表,同一套划线法
现在把另外三张表放进来。它们和囚徒困境的差别只有几个数字。
第一张:囚徒困境(T > R > P > S)
背叛是占优策略——不用管对方,背叛就对了。均衡唯一,在最差的那格。桌上留下 4 分。
第二张:猎鹿(R > T ≥ P > S)
两个猎人一起才能猎到鹿,各得 5;谁单独去抓兔子,稳稳得 3;被同伴放鸽子的人,空手而归得 0。
这张表的关键是 R > T:一起合作比背叛得手还要好。所以背叛不再是占优策略。划线的结果是两个均衡:「都猎鹿」(各 5 分)和「都抓兔」(各 3 分)。
两个都稳。都猎鹿明显更好,可是都抓兔更安全——抓兔的收益跟对方做什么完全无关,而猎鹿则要赌对方也来。
请注意:这不是囚徒困境。在猎鹿里,如果你能让对方相信你会去猎鹿,他就真的会去猎鹿。信任在这里是有用的——而上一章我们证明过,信任对囚徒困境毫无用处。两种病,两种药。
第三张:斗鸡(T > R > S > P)
两辆车对着开。谁先打方向盘谁丢面子,两个都不打就撞车。这张表的关键是 S > P:被对方压一头,好过一起完蛋。
结果又是两个纯策略均衡,但这次它们不对称:一个是「我让你不让」,一个是「你让我不让」。让的人得 2,不让的人得 7。两个均衡都稳,可谁也不愿意当那个让的人。
还有第三个均衡,混合的:两人都以 2/3 的概率让。这个均衡的期望收益是每人 14/3 ≈ 4.667——比「让」的 2 高,比「不让」的 7 低。而它的代价写在那个 1/3 里:两人同时不让,也就是撞车,概率是 1/3 × 1/3 = 1/9,约 11.11%。
斗鸡是这本书里最重要的一张表之一,因为它的解药最有意思。第 22 章会给它装一个红绿灯,把每人的收益抬到 21/4 = 5.25,撞车概率降到 0——而且不需要任何承诺、任何信任。
第四张:和谐(R > T,S > P)
利益完全一致的时候。合作是双方的占优策略,唯一的均衡就是「都合作」,两人共得 8,而这也正是全表最高的总收益。桌上剩 0。
放这张表进来只有一个目的:提醒你不是所有集体行动都有困境。有时候大家不合作,真的只是因为没沟通、或者不知道彼此在做什么——那不是博弈问题,那是通信问题。
为什么必须分清这四张表
因为对策完全不同。
| 这张表 | 症状 | 有用的做法 | 没用的做法 |
|---|---|---|---|
| 囚徒困境 | 唯一均衡,且是最差的 | 改收益表:罚款、押金、绑定、重复交易 | 沟通、承诺、互信、动员 |
| 猎鹿 | 两个均衡,好的那个不安全 | 公开信号、共同知识、让人看见别人也在做 | 惩罚(没人想背叛,只是不敢先动) |
| 斗鸡 | 两个均衡都不公平,混合会撞车 | 协调装置:红绿灯、优先权规则、抛硬币 | 比谁更硬(那正是撞车的原因) |
| 和谐 | 没有困境 | 把信息传到位 | 设计任何机制 |
这张表值得记住。这本书剩下的二十一章,很大一部分是在把最右边两列填得更细。
回到开头那四个选项。
补贴大战是标准的囚徒困境:谁先停谁掉份额(T > R),两家一起烧钱谁也没多赚(P 低)。它的解药从来不是「行业自律倡议书」,而是改表——监管、成本约束,或者干脆熬到一方出局。
没人写测试也是:写测试的成本我一个人出,好处全组分。
统一代码风格不是。用哪一套真的无所谓,只要一致——这是协调问题,最接近猎鹿。所以它的解药便宜到荒谬:找个人拍板,把 formatter 配置提交进仓库,让 CI 强制执行。不需要任何惩罚设计,只需要一个所有人都看得见的焦点。这也是为什么关于代码风格的争论那么容易被一个配置文件终结——它本来就不是困境。
「囚徒困境说明人是自私的。如果大家都善良一点,困境就没了。」
收益表里的数字不必是自私的。你完全可以把「对方少判两年」的价值折算进自己的收益里——这就是利他。但只要折算完之后四个数仍然满足 T > R > P > S,困境原封不动。
换句话说,善良能不能解决困境,取决于善良够不够多,而这是一个可以计算的量。上一章的 demo 里,把「背叛得手」从 5 调到 2 就够了——这相当于要求每个人给对方的福利赋予至少某个权重。低于这个权重,再真诚的善意也翻不了盘。
这正是这本书的立场:与其寄希望于人变好,不如去看那张表还剩几分要靠人变好来补。
正确答案是 C:统一代码风格不是囚徒困境,它是协调问题(猎鹿那一族)。
判据很简单:如果对方已经在合作了,我还想不想背叛?在囚徒困境里,想(T > R);在协调问题里,不想(R > T)。A、B、D 都过不了这一关,C 能过。
A 补贴大战/D 扩军——对方停了我不停,我就多赚,T > R,是困境。 B 写测试——别人都写了我不写,我省下时间还享受质量,T > R,也是困境。 如果你四个都选了,这个错误非常常见,而且代价不小:把协调问题当成困境来治,会白白引入一整套惩罚机制,制造对立,还解决不了本来一个公告就能解决的事。猎鹿的问题不是有人想背叛,是没人敢先动。如果只准你加一句话(不加钱、不加罚),你加什么?
两个均衡都稳,抓兔更安全 ⇒ 大家倾向于停在各得 3 的那一格,桌上留下 4 分。 加一句:「明天早上八点,鹿谷。」——一个所有人都知道、并且知道别人也知道的约定点。均衡本身没变,但焦点变了,大家一起挪到各得 5 的那一格。这一招叫谢林点,第 7 章会把「知道别人也知道」这件事拆开来看,你会发现它比想象中难造得多。
这一章的一句话
看见「大家都知道该合作却没人合作」时,先别急着谈人性——先把四个数的大小顺序排出来,那决定了你手里的是哪一种病。
下一章把困境从两个人放大到四千个人,放到一张真实的路网上。会发生一件很荒诞的事:市政修了一条完全免费、一秒钟都不耽误的新路,结果所有人的通勤时间从 65 分钟涨到了 80 分钟。没有人做错任何事,每个人都在走当下最快的那条路。而把这条新路拆掉,所有人立刻快 15 分钟。