问题导入
一共有N位男士和N位女士,每个人都要选择结婚对象。如果有两对夫妻M1F2,M2F1。M1心目中更喜欢F1,但是他和F2结婚了,M2心目中更喜欢F2,但是命运却让他和F1结婚了,显然这样的婚姻是不稳定的,随时都可能发生M1和F1私奔或者M2和F2私奔的情况。为保证不会出现出轨的情况,根据个人对异性的排名情况匹配对象,使得每对情侣在结婚后婚姻状况稳定。
基本要求: boys 和 girls 各自给出自己心仪的嘉宾的顺序,请编写程序求出一种
稳定的匹配,使匹配结果不会发生私奔现象。
盖尔和沙普利争对这种问题研究了一个算法
盖尔-沙普利算法(Gale-Shaley algorithm)简称 “GS算法”,也称为 “延迟接受算法”(deferred-acceptance algorithm),是盖尔和沙普利为了寻找一个稳定匹配而设计出的市场机制。市场一方的对象 Ai,i=1,2,...,m 向另一方的对象 Bj,j=1,2,...,n 发出邀约,每个 Bj 会对接到的邀约进行比较,保留自己认为最好的,拒绝其它的。邀约被拒绝的 Ai 继续向其它的 Bj 发出新的邀约,直到没有 Ai 希望再发