匹配博弈双边选择算法:又被称为 Gale−ShapleyGale-ShapleyGale−Shapley 算法,也就是常见的双边匹配模型与延迟接受算法的融合。双边匹配最常见的莫过于男女婚配,一组女生在一组男生中选择心仪的对象。而延迟接受算法,即在不确定的情况下(信息不够充分),尽可能延迟选择,使自己所获得的信息足够多,以作出较好的决定。这里先介绍一个简单的双边匹配。
当这两个融合在一起时,对于婚配问题就可以这样解决:设一个双边匹配模型中存在两个集合 AAA 和 BBB;其中 A={a1,a2,⋯,an}A=\{a_1,a_2,\cdots,a_n\}A={a1,a2,⋯,an} B={b1,b2,⋯,bn}B=\{b_1,b_2,\cdots,b_n\}B={b1,b2,⋯,bn}。这里假设 AAA 为女方集合,BBB 为男方集合,且集合元素个数相等,即都能配对;设定为女方先选择男方,男方再根据情况接受或拒绝。
现在要将 AAA 中的元素与 BBB 中的元素配对,这就是一个双边匹配问题,匹配机制:存在一个函数 P(x)P(x)P(x),使得 P(ai)={bj1,bj2,⋯,bjn}P(a_i)=\{b_{j1},b_{j2},\cdots,b_{jn}\}P(ai)={bj1,bj2,⋯,bjn},即集合 AAA 中的元素 aia_iai,对集合 BBB 中的全部元素有个偏好程度,偏好程度以 P(ai)P(a_i)P(ai) 中元素顺序依次降低;也就是说,每一个女生见过对面所有的男生后,会在心中形成一个排行榜,排名越靠前,说明越心仪。同理 P(bj)={ai1,ai2,⋯,ain}P(b_j)=\{a_{i1},a_{i2},\cdots,a_{in}\}P(bj)={ai1,ai2,⋯,ain} 表示每一个男生见过对面所有的女生后,也会在心中形成一个排行榜,排名越靠前,说明越心仪。
算法开始:
第一轮:女方选择自己排行榜第一的男生,男方根据女方的选择情况,按照自己的排行榜接受当前可选择集合中排名第一的女生,(不一定是排行榜的第一名,因为第一名可能选其他帅哥去了,这里是当下最优解),然后拒接剩下的女生。
第二轮:将已经配对好的情侣排除,剩下的女生重新选择剩下的男生,也就是剩下男生中在自己排行榜上第一的,剩下的男生还是按照自己的排行榜接受当前可选择集合中排名第一的女生,然后拒绝剩下的女生。
接着第三轮还是继续重复第二轮,以此类推,直到所有男女都匹配完全,则算法结束。
1、这里选择的例子是双边都能完全配对成功的,也就是完美匹配;
2、有时会遇到某一方人数较少,则当人数较少方匹配完则结束算法;
3、也有可能遇到有某些偏好的人,排行榜上只会有一部分人,当排行榜上的人都不选择他时,其他人选择他都会拒绝,也就是全部拒绝。