1980年,一场电脑程序比赛让专家们拿出策略,反复决定“合作”还是“背叛”。获胜的程序出奇地简单:第一步合作,此后照着对手上一步来。它甚至不需要在单场对局里压过对手,就能把总分做得很高。
只互动一次时,眼前多拿一点可能很有诱惑。可如果还要和同一个对象继续打交道,今天的选择就会改变明天得到的回应。
重复囚徒困境用一个很小的游戏,把这种关系写得清楚。著名的“以牙还牙”策略——TIT FOR TAT——则只需要记住对方上一轮做了什么。

一轮游戏,怎样产生合作难题
双方同时选择合作或背叛,看不到对方本轮尚未作出的选择。采用下面这组分数,括号内依次是 A、B 的收益:
| A 的选择 | B 合作 | B 背叛 |
|---|---|---|
| 合作 | (3,3) | (0,5) |
| 背叛 | (5,0) | (1,1) |
对方合作时,背叛能从 3 分提高到 5 分;对方背叛时,背叛又能从 0 分提高到 1 分。只看这一轮,背叛对自己都更有利。结果却可能是双方各拿 1 分,低于一起合作时的各 3 分。[1]
核心规则,只有两条
TIT FOR TAT 第一轮合作,此后每轮复制对方上一轮的选择。
def tit_for_tat(opponent_history):
return opponent_history[-1] if opponent_history else "C"
这里 C 表示合作,D 表示背叛;列表里只记录已经发生的行动。
这条规则不会先发动背叛,也不会无条件一直合作。收到背叛后,下一轮就背叛;对方重新合作后,下一轮又恢复合作。回应有记忆,但只看最近一轮。
赢得比赛,不需要每一局都压过对手
Axelrod 在 1980 年报告的首届程序比赛中,TIT FOR TAT 由 Anatol Rapoport 提交,在14份参赛程序中取得最高的整体平均得分。每组对局200轮,还包括与自己的副本及随机策略对局;整个循环赛重复了五遍。第二届有62份参赛策略,大家已经看过第一届结果,TIT FOR TAT仍然夺冠。[2]
比赛累计的是对不同程序的收益,单局里自己是否比对手多拿分,是另一项指标。例如,两边持续合作 200 轮,各得到 600 分;一直背叛的两个程序,同样打平,却各只有 200 分。
在没有执行或观察误差、使用上述对称收益的标准对局里,先合作、随后复制对手的规则不会比对手多背叛一次。因此它单场只能与对手打平或吃亏;与许多愿意回应合作的程序相遇时,却可以积累较高收益。
四个特质,让规则容易被理解
这条短规则能支持合作,靠的并非永远忍让。它把四种性质放在了一起:
| 性质 | 在规则里的具体表现 |
|---|---|
| 不先背叛 | 第一轮先合作,在对方背叛之前维持合作 |
| 能够回应 | 对方上轮背叛,这轮就背叛 |
| 愿意恢复 | 对方重新合作,下一轮就跟着恢复 |
| 容易看懂 | 只复制上一轮,没有隐蔽的随机惩罚或无限记仇 |
例如,对手连续作出 C、C、D、C、C,自己的五轮选择就是 C、C、C、D、C。第三轮还不知道对方本轮会背叛,第四轮才回应;第五轮恢复合作。这一轮延迟,是同时出手、只能看历史的规则造成的。
重复互动,为什么改变诱惑
一次背叛能得到额外的眼前收益,也可能换来后续回击。只要未来继续互动的可能性和未来收益足够重要,放弃一些即时诱惑,就可能换得更高的长期收益。相关演化模型研究的,正是合作在什么条件下能够维持。[3]
已知只玩一次,与未来仍可能再见面,给出的激励不同。如果轮数固定且人人知道、双方都只最大化分数,并共同确信对方也如此,末轮的背叛诱惑还会向前倒推。程序比赛中的既定策略和多种对手,并不等于所有参与者都在执行同一个倒推解。
误会,也会被复制
假设双方本来都执行 TIT FOR TAT,却有一方在某轮误把合作执行成背叛。下一轮对方回击,自己又根据对方上一轮行动作出回应。机械地复制最近一步,可能把一次误差延长成来回报复。
这正是应用模型时需要保留的条件。现实中的互动还包含解释、修复、退出、第三方约束,以及并不对等的损害,不能全部压成一个只有 C 和 D 的按钮。
这套小程序揭示的核心关系,是回应怎样改变后续激励。合作能否延续,取决于环境能否让彼此的行动被看见,让未来的收益足够重要,并为中断后的恢复留下可能。
这场比赛有趣的地方,是“比对方多一分”和“让自己长期拿到更多分”终于分了家。先释放合作信号,对伤害作出明确回应,再给修复留出路,才能让许多次相遇积累出合作的价值。至于能否做到,还要看现实有没有这样的重复机会与边界。