医学生分配/内容分发网络 (CDN)
-
date_range 21/10/2021 21:33
点击量:次infosort稳定婚姻问题label
稳定婚姻问题
稳定婚姻问题 这确实是算法领域最“反直觉”但又最“符合人性”的案例之一。你之所以觉得困惑,是因为你试图同时从“所有人”的角度去思考。
要看懂这个算法,我们必须把男人和女人看作两种完全不同的生物机制:
男人的策略:死缠烂打,一路向下。
即使被拒绝,也不气馁,找下一个备胎。
女人的策略:骑驴找马,一路向上。
先占着一个,如果来了更好的就换,没有更好的就凑合。
让我们用一个“求职”的例子来替代“相亲”,可能会让你瞬间豁然开朗。
一、 为什么一定会配对成功?(不会有人落单) 把场景换成:公司(女人) 招聘 实习生(男人)。 假设有 10 个公司,10 个实习生,每家公司招 1 人。
第一天:所有实习生都往自己最想去的公司投简历。
公司的反应:
Google 收到 5 份简历,它挑了最牛的那个先给个“口头Offer”(暂时的),拒绝了剩下 4 个。
这 4 个被拒的倒霉蛋,第二天只能往排名第二的公司投简历。
关键逻辑:
只要一家公司手里有一份简历,它就永远不会再变回空缺状态。它只可能把手里的实习生换成更牛的(升级),绝不会把人辞了空着位置(降级)。
如果最后有一个实习生没人要,这意味着什么?这意味着所有 10 家公司都拒绝了他。
可是,公司只有在招满了的情况下才会拒绝人。
如果 10 家公司都拒绝了他,说明 10 家公司都招满了。
但是一共只有 10 个实习生啊!如果不算他,怎么可能 10 家都满?这在数学上是不可能的。
结论: 只要大家不放弃,最后所有人都会有工作。
二、 为什么是“稳定”的?(为什么不会私奔?) 这是你最纠结的地方:凭什么 Bob 和 Eve 没在一起,却不会私奔?
我们来看这个“私奔悖论”:
现状:Bob 娶了 Alice,但 Bob 心里其实更爱 Eve(Eve 在 Bob 的名单上排第一,Alice 排第二)。
私奔的条件:必须郎有情,妾有意。Bob 想找 Eve,而且 Eve 也觉得 Bob 比她现在的老公(比如 Tom)更好。
破解过程(也就是反证法):
Bob 的视角(我是怎么沦落到 Alice 手里的?):
算法规定:Bob 是从名单第一名开始求婚的。
既然 Bob 现在和第二名的 Alice 在一起,说明他肯定先向 Eve 求过婚。
结果呢?Eve 拒绝了他(或者暂时收留了他,后来又把他甩了)。
Eve 的视角(我当时为什么拒绝 Bob?):
Eve 也是理性的。她拒绝 Bob,只有一个原因:她手里当时已经有了一个比 Bob 更好的男人(或者有个比 Bob 更好的人来求婚了)。
记住那个“不变量”:女人的处境只会越来越好。
当初 Eve 嫌弃 Bob,找了 Tom。现在过了这么久,Eve 的老公只可能是 Tom 或者比 Tom 更牛的人。
结局:
Bob 跑去敲 Eve 的门:“Eve,虽然我娶了 Alice,但我还是忘不了你,我们要不要私奔?”
Eve 打开门,看了一眼 Bob,心里想:“老娘当初就是嫌你菜才甩了你,我现在的老公比你强多了,你哪来的自信觉得我会跟你走?”
私奔失败。
一句话总结稳定性: 你得不到的女神,是因为她早就拒绝过你(或比你差的人)。既然她拒绝过你,说明她现在过得比跟你在一起更好。所以她不会跟你走。
三、 谁是赢家?(这个算法的隐藏秘密) 虽然看起来这个算法很公平,但实际上它极度偏袒一方。
主动求婚的一方(男人/实习生):
在这个算法里,男人最终娶到的是“所有愿意接受他的女人中,最好的那一个”。
这是最优解。虽然他可能被梦中情人拒绝,但他尽力了,拿到了能力范围内的天花板。
被动等待的一方(女人/公司):
女人嫁给的是“所有向她求婚的男人中,最好的那一个”。
如果她喜欢的男神太怂,没把她排在名单前面,甚至根本没来找她(因为男神被别的女人收留了),那她就永远错过了。
所以,在这个算法里,女人拿到的是最劣解。
现实启示: 这就是为什么在恋爱(或求职)中,主动出击的人往往占据优势。
你主动,你就有机会遍历你的“愿望清单”,虽然可能被拒,但你最终会停留在你所能匹配的最高点。
你被动等待,你只能在“来找你的人”里面挑,你的上限完全取决于谁来找你。
四、 医学院分配的应用 (NRMP) 在这个场景里:
男人 = 医学院毕业生
女人 = 医院
算法保证了:
没有暗箱操作:每个学生都去了他能去的最好的医院。
没有违约风险:不会出现一个学生去了 A 医院,结果 B 医院打电话说“我们要你”,然后学生毁约跑去 B 的情况。因为如果 B 医院想要这个学生,在算法运行过程中早就把他抢过去了。
这就是数学给人类社会带来的“绝对理性”的秩序。
通常我们认为诺贝尔奖应该颁给那些像爱因斯坦一样写出看不懂的公式的人,而不是给一个“看起来小学生都能照着做”的算法。
要明白为什么它能拿诺贝尔经济学奖,你必须跳出“数学难度”的视角,进入“市场设计”的视角。
这个奖其实是颁给它解决了一个人类几千年来都没解决好的大问题:如何在不花钱的情况下,公平地分配稀缺资源?
我用大白话把那两个让你困惑的概念(构造性证明、博弈论)翻译一下:
1. 什么是“构造性证明”?(给了藏宝图,而不是只告诉你宝藏存在)
数学家里有两种人:
- 第一种(存在性证明): 他经过严密的推导,告诉你:“我算出这座山上一定有宝藏!肯定有!但我不知道具体在哪,你自己去找吧。”
-
在现实中: 这种理论对政府或公司没用。你告诉我“一定有一种完美的医学生分配方案”,但这解决不了当下的混乱。
- 第二种(构造性证明 - Gale & Shapley): 他直接给你一张地图,说:“别废话,第一步走这里,第二步走那里……照着这 4 步走,你就能挖到宝藏。”
- 厉害之处: 这是一个可执行的程序。
- 这意味着,无论你是分配 10 个人,还是分配全美国 20,000 名医学生,只要把数据喂给计算机,按这个步骤跑一遍,问题立刻解决。它把一个抽象的数学概念,变成了可以用代码写出来的工具。
它的诺贝尔价值在于:它是“可操作的”。 它让经济学从“解释世界”变成了“改造世界”的工程学。
2. 什么是“博弈论与核心 (Core)”?(消灭了“黑市”和“毁约”)
在经济学里,最怕的不是“分配不均”,而是“市场崩溃”。
如果依然用 医学生 vs 医院 的例子:
- 没有这个算法前(乱世): 医院为了抢人,在大三就给学生发 Offer(以此锁定人才)。学生为了保底,先答应 A 医院,结果临毕业 B 医院(更好的)给了 Offer,学生立刻毁约踢掉 A。A 医院被鸽了,临时再去抢别的学生……
-
结果: 一片混乱,这就是非合作博弈中的糟糕结局。谁守规矩谁吃亏。
- 有了这个算法后(稳定态/核心): 博弈论中的“核心 (Core)”或者“稳定解”,翻译成人话就是:“在这个结果出来后,没有任何两个人能通过‘私下交易’变得更好。”
- 假设算法把学生张三分给了医院 A。
- 张三想去医院 B?可以,但医院 B 肯定已经被比张三更牛的学生填满了(根据算法规则)。
- 结果: 张三找不到任何一家愿意接纳他、且比 A 更好的医院。他想毁约都没地方去。
- 这就是“消灭了黑市”。大家发现,与其私下乱搞,不如老老实实参加这个算法分配,结果最稳。
它的诺贝尔价值在于:设计了一种机制,让自私的人为了自己的利益,不得不接受系统的安排,且系统非常稳定。
3. 终极杀招:它救了命(肾脏交换)
如果只是分实习生,可能还不足以拿诺贝尔。阿尔文·罗斯(Alvin Roth,获奖者之一)把这个理论用到了一个惊天动地的领域:肾脏移植。
- 场景:你老公肾衰竭,你想捐肾给他,但血型不匹配。
- 传统做法:只能等死,或者去黑市买。法律禁止买卖器官(不能用钱解决),这就是“无货币市场”。
- 罗斯的做法(Gale-Shapley 的变种):
- 建立一个巨大的数据库。
- 你 (A型血) 想捐给 你老公 (B型血) -> 不匹配。
- 陌生人X (B型血) 想捐给 他老婆 (A型血) -> 不匹配。
- 算法介入:能不能让你捐给他老婆,让陌生人X 捐给你老公?
- 匹配成功! 这就是“双向交换”。
罗斯利用这种图论和匹配算法,设计了全美肾脏捐赠交换系统。他把 2 人交换扩展到了 3 人、4 人甚至更长的链条。
总结: 它拿诺贝尔奖,不是因为它数学难(确实不难,大一新生都能看懂),而是因为它有用。 它证明了:不需要价格(钱),仅靠逻辑和规则,也能在这个充满私欲的世界里,实现资源的最优配置。
这就是为什么说它是“逻辑的胜利”。
评论:
技术文章推送
手机、电脑实用软件分享
微信公众号:AndrewYG的算法世界