#背景提出:
市场一方中的对象(医疗机构)向另一方中的对象(医学院学生)提出要约,每个学生会对自己接到的要约进行考虑,然后抓住自己青睐的(认为它是可接受的),拒绝其它的。该算法一个关键之处在于,合意的要约不会立即被接受,而只是被“抓住”(hold on to),也就是“延迟接受”。要约被拒绝后,医疗机构才可以向另一名医学院学生发出新的要约。整个程序一直持续到没有机构再希望发出新的要约为止,到那个时候,学生们才最终接受各自“抓住”的要约。
注意:
- 一方A邀约,一方B只能接受或拒绝; 类似问题弄明白哪个是哪一方;
- 循环终止条件:所有邀约方A的preference list中的所有B都被邀约,即A中都完成了邀约。
并弄懂4个名词:
matching:还剩单个的,没被匹配
perfect matching: 所有的都匹配了
stable matching:
instable matching: 互相都不喜欢
#典型例子:
关于婚姻稳定匹配问题:这儿有一份别人写的详细解释(带图)http://www.matrix67.com/blog/archives/2976,向原作者致敬!
婚姻问题:
stable perfect matching, 一个只能对一个;
男人有表白权,女人只能选择:暂时接受或拒绝;
women: beter and beter, men: worse and worse;
##有以下3个性质:
1.Woman w remains engaged from the point at which she receives her first proposal; and the sequence of partners to which she is engaged gets better andbetter in terms of her preference list.
2.The sequence of women to whom man m propose gets worse and worse in termsof his preference list.
3.If man m is free at some point in the execution of the algorithm, then there is a woman to whom he has not yet proposed.
#其它类似问题
-
公司与求职者问题:(学校与学生 志愿录取问题)
是一对多,公司可匹配多个求职者,一个求职者只能匹配一家公司。 -
the junction box switching problem
对题目的理解:
可以把输入输出线看做输水管道,每一对输入和输出管道之间都有唯一的交点(看做闸门),如下图:
每一个输入管道都有不同颜色的水流,让我们设计一个算法,给每一个输入管道选择一个输出管道.
要求:任意两个不同颜色的水流不能经过同一个闸门。
对于下图这种选择就是错误的,因为在框起来的位置,水流有交叉:
其正确的解,如下图,所有的水流都有各自的输出管道,并且任意两个水流都没有出现交叉点(没有经过相同的闸门)
分析这个问题,如何选择才能避免水流经过相同的闸门。
对于输入管道而言,每个输入管道都希望尽快的将水流导入输出管道,因为这样,在管道下游将空余出更多的闸门供其它水流经过;
对于输出管道而言,每个输出管道都希望更晚的接收水流,因为这样,在输出管道的上游将空余出更多的闸门供其它水流经过;
总而言之,就是输入和输出管道都选择尽量空余出更多的闸门.
因此,我们可以设计一个稳定匹配来解决这个问题。
每个输入管道按照与输出管道的交点的顺序(从上游到下游),对输出管道进行排序;同理,每个输出管道也按相同的方式对输入管道排序;
然后。。。运行稳定匹配算法,其选择条件为上一段讲到的内容
上面使用到的图,是看起来比较“规整”的,实际上,输入管道与输出管道交点的位置(顺序)对于解题没有影响,例如,下面这种
需要证明稳定匹配是一个有效的解。
(以上问题的描述来自算法课上的助教解释)