稳定婚姻问题(Stable Marriage Problem, SMP)是运筹学和计算机科学中的一个经典问题,可以用图论的方法来解决。这个问题可以形式化为:给定两个大小相同的集合,男性和女性,以及每个人对另一个集合中成员的偏好列表,如何找到一组配对,使得没有一对男女都是彼此更偏好的其他人,即不存在不稳定的配对。
解决SMP的一个著名算法是Gale-Shapley算法,也称为“延迟接受算法”。这个算法可以用图来表示,其中每个男性和女性都是一个节点,边的定义基于他们的偏好关系。具体步骤如下:
初始化:所有男性和女性都处于“自由状态”,即没有与任何人配对。
求婚阶段:在每一轮中,每个自由的男性向他目前最偏好的、还没有向他求过婚的女性求婚。
接受或拒绝:每个女性在收到求婚时,会根据她的偏好决定是接受还是拒绝求婚。如果她目前没有配对,或者她认为新求婚的男性比她目前配对的男性更偏好她,她会接受求婚,否则拒绝。
重复:这个过程持续进行,直到所有男性都处于配对状态。
Gale-Shapley算法保证了在有限步骤内找到一个稳定匹配。如果从每个男性的视角来看,这个算法会找到最优的匹配,即每个男性都尽可能与最偏好的女性配对;如果从每个女性的视角来看,这个算法会找到最不差的匹配,因为女性只有在没有更好选择的情况下才会接受求婚。
除了Gale-Shapley算法,SMP还可以通过构建特殊的二分图来解决。在这个二分图中,一边是男性节点,另一边是女性节点,边表示男性对女性的偏好。通过不断迭代,每次选择最偏好的自由节点进行配对,直到所有节点都被配对,可以得到一个稳定匹配。
总之,稳定婚姻问题确实可以用图来解决,Gale-Shapley算法和二分图是两种常用的方法。