REGRET · 六卷 · 24 章 · 24 个真 demo

你解过很多题,那些题有一个共同点:答案只由你决定。
可是一旦桌上坐着第二个会算账的人,「最优解」这三个字就失去了意义——
剩下的只有最优应对。而所有人的最优应对撞在一起的那一格,
往往不是任何人想要的地方,只是没人能靠自己走开

零基础不用未解释的术语精确有理数引擎 与本机 sympy / numpy 逐题核对亮色

这本书只教一件手艺:划线
每一列里,给我收益最大的那格画一道横杠;每一行里,给你收益最大的那格画一道竖杠。
两道杠落在同一格——那里就是事情会停下来的地方。
然后,用一半的篇幅去做另一件事:不去劝人,去挪那两道杠。

这本书里那些不像真的、但都是当场算出来的数

  • 市政修了一条完全免费、一秒不耽误的新路,所有人的通勤从 65 分钟涨到 80 分钟;拆掉它,所有人立刻快 15 分钟。(第 4 章)
  • 把违规罚款从 10 提到 30,违规率纹丝不动地停在 25%——掉下去的是查处率,从 33.33%14.29%。(第 5 章)
  • 十六个策略的循环赛,冠军单挑一场都没赢过,还输了 6 场;而单挑赢了 13 场、一场没输的那个,总分垫底。(第 10 章)
  • 同一批买家、同一件东西,四种规则完全不同的拍卖,卖家收入撞在同一个数上:0.666667。(第 15 章)
  • 同一批人、同一份偏好,只换「谁先开口」:主动方平均拿到第 1.40 志愿,另一方第 4.00;换过来变成 2.602.00。(第 17 章)
  • 45 张选票一个字不改,七种真的有人在用的计票法,数出 5 个不同的赢家;其中一种选出的赢家,跟任何对手单挑都会输(0 胜 4 负)。(第 19 章)
  • 一台不懂博弈论、只会问「刚才要是出别的会多拿多少」的机器,跑一千轮,算出 −0.05555722;库恩 1950 年手算的真值是 −1/18 = −0.05555556。(第 21 章)
卷 I

在场

IN PLAY

只要桌上还有第二个人,「最优」这个词就失效了。剩下的只有「最优应对」。

  1. 01没有最优解,只有最优应对一张表、两道杠,和一张「你以为它是 X,其实它是 Y」的跨领域对照表★ 划线台
  2. 02没人后悔的那一格把「均衡」变成一句能验算的话;以及一张杠对不上的表怎么办★ 全解 2×2
  3. 03各自最优,一起变差四张只差几个数字的表,四种结局,四种完全不同的解药★ 四张表
  4. 04多修一条路,所有人都变慢四千个司机,一条免费的新路,65 分钟变成 80 分钟★★ 65 → 80
卷 II

读心

READ

全书最反直觉的一段:你的出手频率,是由对方的收益决定的。

  1. 05提高罚款,减少的不是违规罚款翻三倍,违规率停在 25% 不动;动的是查处率★★ 招牌
  2. 06猜你猜我猜你均衡答案是 0,而写 0 几乎从来不会赢★ 2/3 平均数
  3. 07我知道你知道我知道一句人人都已经知道的话,为什么能掀翻整座岛★ 蓝眼睛岛
  4. 08先走的人不一定占便宜逆向归纳;烧掉退路反而更强;以及它在真人身上怎么失灵★ 逆向归纳器
卷 III

反复

AGAIN

同一张表,玩一次和玩一百次是两个不同的博弈。时间是最便宜的机制。

  1. 09同一个局玩一百次合作撑不撑得住有一个精确的门槛:关系平均还剩几次★ δ 门槛
  2. 10一场没赢,拿了冠军十六个策略循环赛;单挑全胜的那个排最后一名★★ 循环赛
  3. 11声誉是一种算得出来的资产把「以后」从一段关系里剥出来,装进一个可携带的容器★ 门槛表
  4. 12不用聪明,只要活下来没有人在算账,族群照样精确落在均衡上★ 复制者动态
卷 IV

定价

PRICE

这本书的转折点:不再问「我该怎么出手」,改问「这张表该怎么写」。

  1. 13反过来做题机制设计:给定你想要的结果,反推那张表;以及好机制的标志★ 改表器
  2. 14第二价格的魔法让「说实话」成为占优策略,做法荒谬得像玩笑★ 穷举证明
  3. 15同一批人,四种拍卖,收入一样换规则赚不到钱;那卖家真正该动的是什么★★ 招牌
  4. 16广告位不是这么卖的全世界最大的拍卖用的是一个不激励相容的机制,而且他们知道★ GSP vs VCG
卷 V

配对

MATCH

没有价格的市场:谁上谁的学、谁进哪家医院、谁跟谁在一起。

  1. 17谁先开口,谁占便宜看起来最像技术细节的那条规则,可能正是分配权力的那条★★ 5 个稳定匹配
  2. 18说谎有没有用穷举每一种谎话:一套规则里 0 种,另一套里 2 种★ 操纵实验
  3. 19同一份选票,五种算法,五个赢家「多数人的意愿」在候选人超过两个时可能根本没有定义★★ 招牌
  4. 20没人愿意先付钱好处分散、成本集中时,不出力是每个人的最优应对★ 公共品
卷 VI

算账

SETTLE

机器是怎么学会博弈的,以及最后一件事:你手里那张表。

  1. 21后悔最小化:机器学博弈的方式只会问「刚才要是出别的会多拿多少」的机器,撞出了 −1/18★★ CFR
  2. 22一个信号灯胜过所有谈判一个不能强制、不能惩罚的装置,带所有人去了纳什够不到的地方★ 相关均衡
  3. 23当规则被写进代码拥堵定价、没人设计过的那场拍卖、以及每天都在跑的古德哈特★ 三台真机制
  4. 24你能改的那一条规则七个问题的自查表,24 条错误直觉,和继续往下走的路★ 自查台

写给谁

  • 写给会写代码、也关心「世界是怎么运转的」的人。不需要任何博弈论基础,每个术语第一次出现时都会当场解释。
  • 写给那些反复遇到「大家都知道该怎么做,但没人这么做」的人。这本书的核心动作就是把这类场面拆成一张表,然后指出该动哪个数。
  • 写给在设计规则的人:产品的激励、团队的考核、社区的守则、系统的调度策略。你写下的每一条规则,都在给别人的最优应对定价。
  • 数学不多。全书只需要「比较两个数的大小」和「算一个加权平均」。所有公式都是「先说要满足哪几条,再推出唯一解」,不空降。

不打算做的事

  • 不教你怎么赢过别人。这门学问最常见的结论是「所有人都很聪明,结果所有人都更惨」。它的力气花在解释困境怎么形成、以及怎么设计规则把大家一起捞出来。
  • 不用暗色模式。全站亮色。
  • 不写「大概是 0.667 左右」。凡是能用分数说清楚的,一律写成分数:均衡是 1/3 就写 1/3。引擎内部用 BigInt 有理数,全程零浮点误差。
  • 不回避对自己不利的结论。逆向归纳在真人身上系统性失灵、理论上更优的机制在现实里没被采用、sympy 在几道退化的线性规划上给出了违反自身约束的解——这些都照写。

怎么读这本书

  • 顺着读。前四章建立全部工具(一张表、两道杠、一个判据),后面每一章都在用它们。跳着读会缺零件。
  • 每章开头那个「▷ 轮到你」,请真的先落一个答案。章末的「◇ 摊牌」会逐个解释每个错误选项的直觉是从哪来的——那部分往往比正确答案更有用。
  • 每章末尾还有一个「◆ 换你定规则」。它是这本书的主线动作:不劝人,改表。二十四章下来,它会从一个概念变成一个习惯。
  • 每一个 demo 都是真算的。页面上没有一个数字是写死的——拖动滑杆,引擎当场重解均衡、重跑拍卖、重开锦标赛。
  • 第 5、10、15、17、19、21 章是招牌。时间有限的话,先看这六章。

这些数字凭什么可信

  • 引擎先写,正文后写。正文里每一个数字都是从引擎的输出里抄下来的,不是反过来。
  • 能用分数就不用小数。核心求解器(支撑枚举、两阶段单纯形、高斯消元)全部跑在 BigInt 精确有理数上。均衡是 21/4 就是 21/4,不是 5.25 的浮点近似。
  • 与本机现成实现逐题核对。scripts/probe-game/probe.py 用本机的 sympy 和 numpy 独立生成并求解了一批题目:540 个双矩阵博弈的全部纳什均衡、260 个零和博弈的值(sympy 走支撑枚举,JS 走单纯形——两条完全不同的路)、198 个线性规划、147 个相关均衡、300 个线性方程组。验证器逐题比对分数字符串。
  • 与公开的标准答案核对。库恩扑克的博弈值 −1/18 是 Kuhn 在 1950 年手算出来的,CFR 跑一千轮撞上它,误差 1.66 × 10⁻⁶。
  • 验证器会告诉你它查了多少项,包括正文里的数字与引擎输出的逐条交叉核对。npm run verify:regret