upstreamL

博客中的文章用于做笔记用,来源于网络,并非本人所写,如有侵权,请您联系我标明出处或删除,3Q~

导航

数学里的爱情观---稳定婚姻问题

原文:http://blog.sina.com.cn/s/blog_8897e5420101bdr4.html

正好看到二分图最大匹配的问题,找到这篇文章,作者写的很有趣,厚脸皮转过来了。

作为一个社会问题,如何使一段婚姻(感情)保持稳定并没有标准答案。我也强烈怀疑标准答案的存在性。在感情世界里,只有个案的合集,没有普世真理,对于任何两个想要保持婚姻关系(感情)健康长久的人,必须自己探索,找到最适合自己的方式,前人的经验只能借鉴,不可照搬。说的有点远,这一章要说的稳定婚姻问题只是一道数学题,虽然它和现实婚姻相差着十万八千里,却奇妙的蕴含着对现实感情问题的种种启示。

 

1.经典稳定婚姻问题

题目是这样的,假设我们要促成n位男士和n位女士之间的n对婚姻(所有人都是异性恋)。为了使这些婚姻稳定,我们要求所有人都把n个异性按照自己的喜欢程度排列出来,然后根据每个人名单里的排列顺序来安排婚姻。所谓一个稳定婚姻方案(Stable Matching)就是在已安排好的n对夫妻当中不存在不是夫妻的一男一女使得他们却对彼此的好感度都大于各自的配偶。

 

理解这个定义的最好方法就是让我们看一个简单的列子。如果我们要撮合许仙,法海,白素贞和小青四位组成两对儿夫妻,并且他们各自的列表如下,

 

1号人选

2号人选

许仙

白素贞

小青

法海

小青

白素贞

 白素贞

许仙

法海

小青

许仙

法海

 

因为只有两男两女,所以只可能有两种方案。

1.(许仙,小青),(法海,白素贞)

2.(许仙,白素贞),(法海,小青)

不管从任何角度出发,把许仙和白素贞分开都是一件残忍的事,法海他老人家因为当年干了这事,还被后人指责为不懂爱,成为各类文学著作,影视作品里为数不多的反派老和尚,数学当然也不会为拆散有情人提供理论依据。根据定义,第一种方案是不稳定的,原因就是许仙和白素贞把彼此视为第一选择,即使我们强加给他们不同的配偶,在他们心里,依然把对方放在第一位,从而大大增加了出轨的可能性,所以第一种方案是不稳定的。

 

第二种方案是稳定的。稳定方案并不意味着每一个人都会和自己最爱的心上人在一起,在这个例子里,白素贞和小青都更加青睐许仙,但是许仙只有一个,这个时候起决定性因素的是她们各自在许仙心目中的地位。两对婚姻关系确定后,就算小青对许仙念念不忘,也只能是单相思,最多也就是在家拿法海出出气,逼他还俗,逼他吃肉,逼他减肥等等,如果小青不想单身就只能接受这段姻缘。这也是婚姻关系在现实社会里的一个写照,并不是每个人都能和自己名单里排在第一位的人在一起,在这种情况下,人们的选择是自己所能追求到的最佳伴侣。

 

稳定婚姻问题是起源于美国医学院的学生毕业时如何分配工作的问题。每个学生都根据自己意愿排列各个医院,各个医院也会根据学生的表现,成绩,适合度等等列出候选人的顺序。怎样才能找到一个相对最公平的办法来安排毕业生工作的医院是最初的实际问题。这个问题实际上和稳定婚姻问题并不完全一样,因为医院很可能会接受不止一个申请者,而学生们也不是列出所有医院,这个问题实际上是高考问题,每个学生可以报几个志愿,但只能被一所大学录取,而每所大学可以接受不止一个学生。稳定婚姻问题的算法在1962年的时候由Gale和Shapley给出,根据他们的算法,任何一个稳定婚姻问题都有解的,也就说总有至少一个方案是稳定的,这个算法也不出意外的被称为Gale-Shapley算法。

Gale-Shapley算法如下:

1.      确定每一位男士和每一位女士都是单身。

2.      让每一位单身男士m向他名单里排位最靠前并且还没有发出过交往请求的女士w发出交往请求,如果这位女士w单身,就接受交往请求,并把他们的状态都改为交往中;如果这位女士已经是在交往中了,那么比较m和正在与w交往的男士m’,如果m比m’在w的名单里更靠前,那么w就会和m开始交往,m’恢复单身;如果m’比m更靠前,那么w就继续和m’交往,而m继续向他名单里的下一位女士发出交往请求。

3.      当所有人都在交往中的时候,就让他们结婚吧!

 

算法读起来有点绕,看看这个例子就一目了然了。这次出场的是唐僧师徒四人加上龙王三太子(白龙马)和中国古代四大美女西施,貂蝉,王昭君,杨玉环再加上才女蔡文姬。他们对各位异性的心仪顺序如下:

 

1

2

3

4

5

唐僧

文姬

玉环

貂蝉

西施

昭君

悟空

貂蝉

文姬

昭君

玉环

西施

八戒

文姬

西施

貂蝉

玉环

昭君

沙僧

文姬

玉环

貂蝉

昭君

西施

三太子

貂蝉

文姬

西施

玉环

昭君

西施

沙僧

三太子

唐僧

悟空

八戒

貂蝉

沙僧

八戒

三太子

悟空

唐僧

昭君

三太子

唐僧

沙僧

悟空

八戒

玉环

悟空

三太子

沙僧

唐僧

八戒

文姬

八戒

三太子

悟空

沙僧

唐僧

(注:我们也可以用>表示心仪程度,如 唐僧:文姬>玉环>貂蝉>西施>昭君)

首先,唐僧向文姬求交往,文姬勉强同意;悟空向貂蝉求交往,貂蝉也接受;这时八戒向师傅的女朋友文姬提出交个朋友,文姬口味比较重,立马同意,甩了唐僧,跟了八戒。这时我们有两对儿交往(八戒,文姬)和(悟空,貂蝉),唐僧恢复单身,于是唐僧又向他心中的二号人选玉环求交往,玉环单身,表示同意;沙和尚向文姬求交往,被幸福着的文姬拒绝,又向玉环求交往,玉环虽然已和唐僧拍拖,比较之下,接受了沙僧的请求,于是师父又回归单身;唐僧向貂蝉求交往,结果因为悟空的存在悲剧了,再向西施求交往,单身的西施表示可以先彼此了解一下;目前的交往情况是

(八戒,文姬),(悟空,貂蝉),(沙僧,玉环),(唐僧,西施)

而三太子和昭君单身。三太子以自己官二代加富二代的身份向貂蝉展开攻势,虽说悟空会七十二般变化,但是变不出高官老爸,无奈被甩,再去追文姬,又比不过八戒的甜言蜜语,又遭拒绝,好在单身的昭君最后接纳了他,一起远走塞外。我们的任务也到此结束了,最后的结果是

方案1

(唐僧,西施),(悟空,昭君),(八戒,文姬),(沙增,玉环),(三太子,貂蝉)。

 

在这个例子中如果我们不从唐僧开始,而是从三太子开始,或是从任意一位男士开始,或是在算法进行中改变顺序,所得到的结果将是一样的,也就是说男士们的行动顺序对最终结果没有丝毫影响。能够影响结果的只有每个人心中的那一份排序,因此对每位男士而言,除了祈祷自己的竞争对手不要太强以外,最重要的就是提升自己在心仪女士心目中的地位。所以与其抢着出手,不如多花点时间提高自身的实力,以博得心仪女士更多的好感。

 

此外,如果有一男一女,都将对方视作第一人选,那么有情人必成眷属,比如例子中的文姬与八戒。在这种情况下,只要不把他们放在一起,就会引起方案的不稳定。所以只要我最爱的人最爱我,足以。

 

Gale-Shapley算法一点也不复杂,而且很容易程序化,但是在放心使用之前我们还需要证明它给出的方案是稳定的。第一,这个算法是有限的,不会出现死循环或是没有结果的状况,原因是每位男士最多向n位女士求交往,所以最多n2次请求后,算法将结束。在1997年的时候,这个上界被美国数学家Knuth降低到n2-n+1。第二,就是要证明稳定性。假设在Gale-Shapley算法产生的方案M中有一位男士m向一位女士w求交往被拒绝,那么w必定正在和一位她更喜欢的男士m’交往,因此不可能出现m与w对彼此好感度都大于自己伴侣的可能性,否则在算法进行中,m应该取代m’的位置。

 

在现实世界中,我们经常会听说,谁谁谁正在追某某某,但是偶尔也会有人说起,某某某竟然在倒追谁谁谁。俗语也有云,“男追女,隔层山,女追男,隔层纸。”如果我们让女士们采取主动,而让男士们静候佳音的话,Gale-Shapley算法会不会更容易一点呢?会不会带给我们不同的结果呢?用上面的例子,这次让女士们选择男士交往,看看会是怎样的结果。因为算法相同,这里我只给出结果,读者可以自行应用G-S算法。结果是

方案2’

(西施,三太子),(貂蝉,沙僧),(昭君,唐僧),(玉环,悟空),(文姬,八戒)。

或者方案2

(唐僧,昭君),(悟空,玉环),(八戒,文姬),(沙僧,貂蝉),(三太子,西施)。

(注:方案k与方案k’的配对完全相同,只是每个括号里男女的顺序及括号的顺序不同)

和最初的方案1进行比较

方案1

(唐僧,西施)

(悟空,昭君)

(八戒,文姬)

(沙僧,玉环)

(三太子,貂蝉)

方案2

(唐僧,昭君)

(悟空,玉环)

(八戒,文姬)

(沙僧,貂蝉)

(三太子,西施)

我们可以看到虽然这两个方案都是稳定的,但是是不同的,除了八戒,其他人在两种方案中的配偶都不相同。那么哪一种方案更好呢?

对唐僧而言,方案1更好,因为西施是4号人选而昭君是最差选择。

对悟空来说,方案1更好,因为昭君是3号人选而玉环是4号人选。

对沙僧来说,方案1更好,因为玉环是2号人选而貂蝉是3号人选。

对三太子来说,方案1要好的多,因为貂蝉是最佳人选,而西施只排在第3位。

总体来说,男士们都倾向于第一方案。再来看看女士们的意见,为了方便,我们比较方案1’和方案2’

1’

(西施,唐僧)

(貂蝉,三太子)

(昭君,悟空)

(玉环,沙僧)

(文姬,八戒)

2’

(西施,三太子)

(貂蝉,沙僧)

(昭君,唐僧)

(玉环,悟空)

(文姬,八戒)

对西施而言,方案2更好,三太子是2号人选,而唐僧是3号人选。

对貂蝉来说,方案2是最佳方案,沙僧是第1人选,而三太子只排在第3位。

对昭君来说,方案2更好,唐僧是2号人选,而悟空是4号人选。

对玉环来说,方案2要好的多,悟空是最佳人选,而沙僧是3号人选。

所以全体女士都强烈倾向于第二方案。这并不是偶然情况,实际上我们可以证明如下结论。

定理1  Gale-Shapley 算法产生的稳定方案对于主动一方是最优方案,而对被动一方是最差方案。

这里主动方的最优稳定方案是指在这个方案中,把任何一位主动方成员的配偶换成对他/她而言的更好配偶(在他/她的名单里排名更靠前)都将导致方案的不稳定。相似的,被动方的最差稳定方案是指在这个方案中,把任何一位被动方成员的配偶换成对他/她而言的更差配偶(在他/她的名单里排名更靠后)也都将导致方案的不稳定。

在产生方案1的过程中,男士们主动追求女士,而方案2是在女士们主动的情况下产生的。根据定理1,方案1对男士而言最优,对女士而言最差,而方案则2正好相反。

定理1也可以理解为,只有主动出击才能最大化幸福,被动等来的则是最差结果。当然也有例外,那就是视彼此为最佳的情侣,如同例子中的文姬与八戒,以不变应万变,变的只是过程,不变的是结果。还是那句话,我最爱的人最爱我,夫复何求。

下面这段是定理1前半部分的证明,没有兴趣的读者可以略过。

证明:假设男士是主动方。记M-gs为GS算法产生的稳定方案,让我们来证明对男士来说它是最优的。假设存在一个方案M优于M-gs,即有一位男士m和两位女士w,w’,使得m在方案M-gs中配偶为w,在方案M中配偶是w’,并在在m的名单上,w’> w。现在我们考虑w’在M-gs中的配偶m’,对w’来说,m’> m,否则在执行GS算法的时候,m总会先于w向w’求交往,而w’拒绝了m或是稍后离开了m,只可能是有这位优于m的m’的存在。现在再来比较m’在M中的配偶w”和在M-gs中的配偶w’,对m’来说,如果w’> w”,那么在M中存在(m ,w’)和(m’,w”),而m’和w’对彼此的好感均大于自己的配偶,那么方案M 不稳定;如果m’认为 w”>w’,那么我们把m’在M中得到了更好的配偶,我们可以把m’当成m,重复上面的过程,或者我们将推出M不稳定,或者一直继续,唯一不能退出M不稳定的情况是,在M中,每一位男士都得到了比在M-gs更好的配偶,但是这也是不可能的,因为根据G-S 算法,至少有一位男士的配偶是该男士的一号人选,不可能变得更好了。

 

 

2. 稳定婚姻问题的变奏曲

(注:英文是Variations on Stable Marriage,我实在是不知Variations 该怎么翻最好,所以取了变奏曲。如果这个术语已经有了标准翻译,还请告之。)

在这一节里,我们将改变经典稳定婚姻问题里的部分条件,从而更加接近于现实的情况,而这些问题有都可以通过转化为经典问题去解答。

2.1 不完全名单

假设在某相亲聚会里的有着渴望另一半的n男和n女,那么他们会不会成为n对夫妻呢?在n不是那么小的情况下,答案往往是否定的。每个人大概都会给异性们打打分,排排位,但是我们不能使用G-S算法,因为很少人会排列所有异性,有的人属于一见钟情型,心里可能就只有一个她/他,其他人就都视而不见了;也有现实型,一定要对得起门票钱,心里面有心仪目标,再加上几个备选;还有宁缺毋滥型的,喜欢的人不出现,出现的人不喜欢,宁愿孤单一辈子,也不能将就;可能还会有父母逼着来的,心不在焉,可能不选或者乱选几个,总之,每个人心里的那个名单长短不一,排列各异,那么在这种情况下,我们可不可以找到一个“稳定方案”呢?首先要想匹配所有人是不可能完成的任务,人家谁也没看上,你还非得给人家配一个,那婚姻肯定是不稳定,要回答这个问题,我们得重新定义什么样的方案是稳定的。

定义1  对于任何一个人来说,不在他/她名单上的人被称作不可接受的,也而在名单上的人被称为可接受的

定义2   如果在一个方案M中,存在一男和一女,使得他们不是伴侣,但都可接受对方,而且他们要么单身,要么对自己伴侣的好感度没有对对方高,那么这个方案M就是不稳定的

知道了什么是不稳定,稳定可以定义为不是不稳定的。现在我们可以回答稳定方案的存在性问题了,答案是肯定的,而且所有的稳定方案中的单身男女是完全相同的,对于他们,只能让孤单成为习惯,习惯到不用再去想怎么办了。这个结果的证明我就不介绍了,篇幅有点长,有兴趣的读者可以去看看我列出来的参考文献。存在性解决了,下一个问题就是怎么才能找到稳定婚姻方案。还是Gale-Shapley算法,不过不能直接用,需要改进一下才能用。有两种办法,第一是改进算法,假设男生主动,让每位男士按照自己名单的顺序依次追求女士,直到某位女士同意交往或是被自己名单上的所有人拒绝。对于每一位女士,即使她们单身,也会直接拒掉不在自己名单上的人,也就是不可接受的男士。另外一种方法就是改进每个人的名单,我们可以补全名单,然后执行G-S算法,补全名单时需要加上两个虚拟人物,

得到方案后,还要去掉那些不应该在一起的组合。让我们来看一个例子,假设我们有如下的名单(n=4

 

1

2

3

4

唐僧

玉环

西施

 

 

悟空

西施

玉环

 

 

八戒

昭君

貂蝉

西施

 

沙僧

西施

貂蝉

玉环

 

西施

唐僧

八戒

沙僧

悟空

貂蝉

悟空

八戒

 

 

昭君

沙僧

唐僧

悟空

 

玉环

八戒

悟空

 

 

 

首先我们介绍一男一女两位客串嘉宾M(男)和W(女)并把他们加入上面的列表。在他们的名单里,互相把对方放在最后一位,其他的顺序随意。在所有男士列表里,W紧随所有可接受的女士,在W后面按任意顺序加上所有不可接受女士,对于各位女士的列表,我们做相同的处理,一个可能的结果如下表

 

1

2

3

4

5

唐僧

玉环

西施

W

貂蝉

昭君

悟空

西施

玉环

W

貂蝉

昭君

八戒

昭君

貂蝉

西施

W

玉环

沙僧

西施

貂蝉

玉环

W

昭君

M

西施

貂蝉

昭君

玉环

W

西施

唐僧

八戒

沙僧

悟空

M

貂蝉

悟空

八戒

M

唐僧

沙僧

昭君

沙僧

唐僧

悟空

M

八戒

玉环

八戒

悟空

M

唐僧

沙僧

W

唐僧

悟空

八戒

沙僧

M

 

列表中的楷体名字为任意排列顺序,宋体为原名单列表,黑体为虚拟人物。有了这个表,我们就可以执行G-S算法了,结果是

(唐僧,西施),(悟空,玉环),(八戒,昭君),(沙僧,W),(M,貂蝉)

很显然后两对是不可能的,八戒不在昭君的接受名单上,所以第三对也是不可能的,因此最后的结果是(唐僧,西施),(悟空,玉环),其他人单身。

 

不完全名单并不意味着一定不能完全配对,一个极端的例子是n男n女,分别记为男1,男2,……,男n;女1,女2,……,女n,然后男1的名单里只有女1,并且女1的名单里只有男1; 男2的名单里只有女2,并且女2的名单里只有男2;以此类推,最后的结果就是n对组合。在一般情况下,我们很难一眼看出是否一个不完全名单稳定婚姻问题有没有完全配对方案,但是如果我们用上面例子中给出的方法,在最后方案中有(M,W)这对虚拟夫妻,那么其他所有配对都是可行的,也就是不用再去检查是否有配对里的一方是另一方不接受的人了。

 

2.2 弱序名单

 

比较两个人有时候非常的难,可能各有千秋,不相上下,而你的心也随之摇摆不定,这时候还偏偏有人让你给他们排个顺序,你的答案很有可能是不知道,差不多,无所谓。两个天差地别的人在你心里的位置可能是一样的。所以一个人的名单可能是:阳光男>型男=颓废男>猥琐男。我们管这种含有等号的排序叫做弱序。

 

解决方法很简单,就是将位置相等的两人任意排序,再使用G-S算法产生一个稳定方案。但是要注意的是,对于原本顺序相同的人的不同的排序将会导致结果的大大不同,受影响的不单是给出名单或者交换顺序的几个人,产生的连锁反应很可能影响许多人。在现实生活中,选择不同伴侣很多时候意味着选择不同的生活方式,没有好坏之分,只有适合不适合,喜欢不喜欢。

 

弱序名单的出现使得我们又要改变关于稳定婚姻方案的定义。在一个方案中,如果有两对夫妻(男1,女1)和(男2,女2),并且

情况1

男1

女2 > 女1

女2

男1 > 男2

显然这个方案是不稳定的,我们将延续这个定义,但是如果是下面两种情况呢?

情况2

男1

女2 = 女1

女2

男1 > 男2

情况3

男1

女2 = 女1

女2

男1 = 男2

根据不同的答案我们实际上可以定义三种不同的稳定方案。如果我们沿用在经典问题里的定义,即只有在一男一女不是配偶但又对彼此的好感度都严格大于自己配偶时才视为不稳定,即情况2和情况3都是稳定的,这种方案称为弱稳定方案;如果我们将定义改为存在不是配偶的一男一女对彼此的好感等于或大于自己的配偶即视为不稳定,即情况2和情况3都是不稳定的,这种方案成为超级稳定方案;我们还可以定义如果存在不是配偶的一男一女,其中一人对对方的好感等于或大于自己的配偶,而另一人对对方的好感严格大于自己的配偶,即为不稳定,也就是情况2稳定,而情况3不稳定,这种方案称为强稳定方案。除了弱稳定方案一定存在,另外两种的存在性是不确定的。一个极端的例子是n男和n女,每一个人都把所有异性列为并列第一,那么任何方案都是弱稳定,任何方案也都不是强稳定或者超级稳定。

 

2.3 人数不均等匹配

性别比例失调已经成为一个日益严重的问题,据说到2020年,每五个男性就将有一个因为无法找到适龄的女性而无法婚配。这种大环境对婚姻稳定是不利的,但是我们依然可以问,在一个男多女少,僧多粥少,狼多肉少的环境下,有没有一个稳定合理的婚配方案。

 

假设有n为男士,m位女士,每个人都给所有异性严格排序了,一个稳定方案是指在这个方案中没有不是伴侣的一男一女要么单身要么对对方的好感大于自己的配偶。稳定方案是存在的,而且我们依然可以使用G-S算法,当然面不够,得用蒜来凑,在执行算法之前,我们首先要给人数少的一方加上|n-m|个虚拟人物,实际上这个问题完全可以被看做是人数相等,但是一方只给另一方中一个子集排序的不完全名单问题。

 

 稳定室友问题

假设有2n个(同性别的)学生,根据他们对其他所有2n-1个同学的好感度给他们分配宿舍,每个宿舍两名学生,要求不存在两名不在同一宿舍的学生,对各自的好感度都大于他们的室友。

 

这个问题和经典稳定婚姻问题是不一样的,首先每个人都要给其他所有人排序;其次,在这2n个学生当中,任意两个人都有成为室友的可能性,而在稳定婚姻问题中,只有一男一女才有可能成为夫妻。所以我们不能把稳定室友问题转化成稳定夫妻问题,而且稳定方案的存在性是不能保证的,即使只有4名学生,稳定室友问题都有可能无解,请看下例。

 

假设在西天取经的路上,唐僧师徒四人找了一个Motel投宿,要了两个标准间,他们对于其他人的好感度如下

 

1

2

3

唐僧

悟空

沙僧

八戒

悟空

沙僧

唐僧

八戒

沙僧

唐僧

悟空

八戒

八戒

沙僧

悟空

唐僧

这时,无论怎么安排我们都不能找到一个稳定的方案。原因是谁都不愿意和八戒同屋,所以不管安排谁和八戒同住,他对另外两人的好感度都会高于八戒,只需要另外两人中的一个对此人的好感度也高于他的室友就能引起方案的不稳定性,而另外三人之间的排序是对称的,不管怎么安排,不与八戒同屋的两人总有一个人对八戒室友的好感度大于自己的室友。从这个故事中我们可以学到,一定不要成为所有人都不喜欢的人,否则室友都很难找,而且会影响所有人的房间分配。做到这一点其实不算太难,最重要的一点就是在任何情况下都绝对不能有给室友投毒的心。

 

4 结束语

英国数学物理学家彭罗斯认为人类周围有三个世界,一个意识感知世界,一个现实物理世界,一个柏拉图的数学世界。我也认为有三个世界,不过与彭罗斯的不一样,一个是理想世界,一个是现实世界,一个是柏拉图的数学世界。比如你是一个未婚男士去参加一个相亲会,出场的女士是西施,貂蝉,昭君,玉环和文姬,这就是理想世界;而你有着悟空的脸,八戒的身材,沙僧的地位,白龙马的工作,还有一张师傅的嘴,这就是现实世界;不过不管是理想世界还是现实世界,它们都遵守着同样的数学规律,因为按照柏拉图的理论,它们只不过是相同数学理念被折射出的不同影子而已。

 

理论上来说,我们可以用数学模型去模拟任何在稳定婚姻问题里可能出现的情况,但是无论多么复杂的版本都无法与实际的婚姻问题相提并论。选择伴侣只是这个问题的开始,怎么继续才是关键。数学本身的理性和爱情的感性是一对矛盾,但是在稳定婚姻问题里我们看到了数学感性的一面,同时对待感情我们也要有理性的思考。最后祝所有单身的和已婚的读者都能做好稳定婚姻这道题。

 

posted on 2017-01-04 20:40  upstreamL  阅读(1655)  评论(0编辑  收藏  举报