卷 V · 配对CH 18深度 18/24

说谎有没有用

上一章的算法配出了稳定的结果,但那是在大家都说实话的前提下。现实里没有这个前提——人们会揣摩、会保守填报、会「不敢冲第一志愿」。这一章要做的事情很朴素:把每一种谎话都试一遍,看看能不能占到便宜。两套规则,两个结果,而这两个结果之间的差别,值得任何一个设计过表单的人认真看一眼。

策略防伪波士顿机制穷举全部谎话

▷ 轮到你

你在填志愿。有一所你最想去的学校,但你估计自己够呛能进;还有一所你第二想去的,比较稳。

系统的规则是:先看所有人的第一志愿,把名额分完;剩下的人再看第二志愿,在剩下的名额里分

问:你该把最想去的那所填在第一志愿吗?

A 该。老实填,反正冲不上也不亏 B 不该。冲不上的话,第二志愿的名额已经被别人的第一志愿占光了 C 看情况,得估计自己被录取的概率 D 该,但要在第二志愿填一个绝对保底的

这道题几乎所有经历过志愿填报的人都有直觉。这一章要做的,是把这个直觉变成一个可以穷举验证的结论——并且指出它不是必然的:换一套规则,同样的直觉就完全不适用了。

两套只差一点点的规则

延迟录取(上一章那个):学生轮流申请,学校暂时留下最好的,随时可以为了更好的人选把手上的退回去。整个过程结束前,没有任何录取是最终的。

波士顿机制(也叫「即时录取」):先看所有人的第一志愿,学校当场录满;然后剩下的学生看第二志愿,在剩余名额里分;依此类推。每一轮的录取都是最终的

差别只有一个词:暂时,还是当场

而这一个词决定了「老实填志愿」是不是一件划算的事。

穷举

下面这台引擎跑一个三个学生、三所学校、各一个名额的小市场。它会把每个学生的每一种可能填法都试一遍(3 个学生 × 5 种非诚实排列 = 15 种),看有没有哪一种能让自己录到更好的学校。

结果

照实填的结果能占便宜的谎话
延迟录取小甲第 1 志愿,小乙第 2 志愿,小丙第 3 志愿0 种
波士顿机制小甲第 1 志愿,小乙第 3 志愿,小丙第 1 志愿2 种

在延迟录取下,15 种谎话一种都占不到便宜。这不是这个例子的运气——Dubins–Freedman 和 Roth 在 1982 年各自证明了:延迟录取对提议方是策略防伪的,照实填志愿是占优策略。

在波士顿机制下,小乙有两种填法能把自己从第 3 志愿救到第 2 志愿。他要做的就是不要把最想去的那所填在第一位

请仔细看波士顿那一行的结果:小乙老老实实把最想去的填在第一志愿,结果掉到了第 3 志愿;而小丙「保守地」把一所没那么热门的填在第一位,稳稳拿到了第 1 志愿。

这套规则在系统性地奖励会算计的人,惩罚老实人。

为什么会这样

因为在波士顿机制里,「第一志愿」不只是一个偏好声明,它还是一个排队位置

你把一所够不着的学校填在第一位,等于放弃了在第二志愿学校门口排队的位置——等你被第一志愿刷下来,第二志愿那边的号已经发完了。

而延迟录取没有这个问题,因为录取是「暂时」的:你先去第一志愿那里试试,被退回来之后,第二志愿那边还要重新把所有申请者比一遍,包括你。你没有因为「先去了别处」而失去任何东西。

这就是那两个词的全部差别:「暂时录取」让先后顺序不产生成本,「当场录满」让先后顺序成为一种赌注。

✎ 术语正名

策略防伪(strategy-proof)的准确含义是:照实报告自己的偏好,是每个参与者的占优策略——不管别人怎么报。

它比「大家最好都诚实」强得多。后者只说明诚实是一个均衡,你还得担心别人不诚实;前者说明你根本不用管别人。

用这本书的书名来说:策略防伪的机制,让说实话的人永远不会后悔。这是第 14 章那个第二价格拍卖的性质,也是延迟录取的性质——两者虽然一个用钱一个不用钱,本质是同一件事。

一个必须说清楚的限制

延迟录取只对提议方策略防伪。对接受方(上例里的学校)不是——学校可以通过隐瞒名额、或者谎报自己的排序来改善结果。

而且这不是实现得不好,是被证明了的:Roth 在 1982 年同时证明了,不存在任何一种机制,能同时做到稳定、并且对双方都策略防伪。

所以你必须选:要么牺牲稳定性,要么只让一侧诚实。现实中的系统几乎都选了后者,并且把诚实那一侧给了(学生、医学生、申请人)——因为个人比机构更难承受「填错就完蛋」的风险,也更难获得专业的策略咨询。

这是一个价值判断,不是数学结论。但它是在数学划出的边界内做的价值判断——而这正是这本书想教的东西:先把不可能的部分算清楚,剩下的才是真正需要讨论的选择。

▸ 在现实里

波士顿在 2005 年换掉了波士顿机制。这个机制以这座城市命名,因为波士顿公立学校长期在用它。2003 年前后,Abdulkadiroğlu、Pathak、Roth 和 Sönmez 等人向学区指出了上面这个问题:这套规则逼着家长去猜、去保守填报,而猜错的代价极大——尤其对那些没有渠道获得内部信息的家庭不公平。2005 年,波士顿学区改用了延迟录取。纽约市的高中录取系统也在 2003 年做了类似的改造。

「平行志愿」和「顺序志愿」。中国高考录取改革中,从顺序志愿转向平行志愿是同一件事的另一个版本:平行志愿更接近延迟录取的性质,大幅降低了「填错一个就滑档」的风险。改革前后关于「敢不敢冲一冲」的讨论,讲的正是这一章的内容。

不只是志愿填报。任何「先到先得、且一轮定终身」的分配流程,都有这个毛病:抢购、摇号、内部资源申请、会议排期。判据很简单——如果「先申请哪个」会影响你在别处的排队位置,人们就会开始算计而不是说实话。

✗ 这个直觉是错的

「如果大家都说实话,系统就能配出最好的结果。所以要教育大家诚实填报。」

在一个不是策略防伪的机制里,诚实填报是一个会让你吃亏的建议。号召大家诚实,等于号召大家吃亏——而且吃亏最多的往往是最听话、信息最少的那些人。

正确的顺序是反过来的:先把机制改成「诚实是最优的」,然后诚实自然会发生,不需要教育。这也是第 13 章那句话的又一次应用——你管不住别人怎么填,你能改的是那张表。

还有一个副产品值得注意:策略防伪的机制拿到的数据是真的。在波士顿机制下,学区收上来的志愿表反映的是家长的策略,不是他们的偏好——你没法用它来判断哪所学校真的更受欢迎。换成延迟录取之后,同一份表格立刻变成了可信的偏好数据。

◇ 摊牌

在题目描述的那套规则(先分第一志愿、当场录满)下,正确答案是 B不该把最想去的填在第一志愿。

但请注意这个答案有多脆弱:换成延迟录取,正确答案立刻变成 A,而且是占优意义上的正确——不用估概率,不用猜别人。

A 「老实填,冲不上也不亏」——在延迟录取下完全正确,在波士顿机制下正是那 2 种被穷举出来的亏法。同一句建议,在两套规则下一对一错。这就是为什么「该不该冲一冲」这种问题没有脱离规则的答案。 C 「得估计录取概率」——这是波士顿机制下的正确做法,也正是这套机制最大的成本:它逼着每个人去做一件与自己的真实偏好无关的估计,而估计能力的差异会直接转化成结果的差异。 D 「填个保底的」——保底能防止最坏情况,但防不住这一章的问题。小乙的第二志愿并不是够不着,它只是被别人的第一志愿占满了。保底解决的是「够不着」,不是「排队位置被浪费」。
◆ 换你定规则

你在做一个内部的资源申请系统(比如培训名额、项目分配)。现在的规则是「按提交顺序分配,每人只能选一个」。同事们都在互相打听「你报哪个」。改什么?

先到先得、一次定死 ⇒ 报名表反映的是每个人对竞争程度的猜测,不是他们真正想要什么 ⇒ 你收到的数据是废的,结果也不好。 改成「填完整排序,统一用延迟录取分配」⇒ 照实填成为占优策略 ⇒ 分配结果更好,而且你顺便拿到了一份真实的偏好数据

请注意那个副产品又出现了一次(第 14 章的结尾也提到过):好机制的产出不只是分配,还有信息。而这份信息是白拿的——你不需要做任何调研。

这一章的一句话

「要不要说实话」从来不是一个道德问题,是一个机制属性;而在不是策略防伪的机制里,号召诚实等于号召吃亏。

下一章把配对换成投票——同样是把很多人的偏好合成一个结果,同样没有价格。而那里等着的是这本书最刺眼的一组数字:同一份 45 张选票,一张都没改,用七种在现实中都真的有人在用的计票法数一遍,数出 5 个不同的赢家。其中一种方法选出的那个赢家,跟任何一个对手单挑都会输——0 胜 4 负。