Algorithm 验证稳定匹配的算法?

Algorithm 验证稳定匹配的算法?,algorithm,Algorithm,我知道使用Gale-Shapley可以保证找到一个稳定的匹配,但是如果给定一个匹配,我们如何验证该匹配是一个稳定的匹配呢。换句话说,我应该考虑什么条件是有效的,并且是一个稳定的匹配。 首先,如果您通过GS算法获得匹配,则: 男人向女人求婚的Gale-Shapley算法总是让步 在所有马厩中,最适合所有男人的马厩 配对 因此,无需验证稳定性 如果您有一个随机匹配,并且想要检查它是否稳定,您可以参考稳定匹配的定义: 给定n名男性和n名女性,其中每个人都对 异性按优先顺序,男女结婚 这样就不会有两个异

我知道使用Gale-Shapley可以保证找到一个稳定的匹配,但是如果给定一个匹配,我们如何验证该匹配是一个稳定的匹配呢。换句话说,我应该考虑什么条件是有效的,并且是一个稳定的匹配。 首先,如果您通过GS算法获得匹配,则:

男人向女人求婚的Gale-Shapley算法总是让步 在所有马厩中,最适合所有男人的马厩 配对

因此,无需验证稳定性

如果您有一个随机匹配,并且想要检查它是否稳定,您可以参考稳定匹配的定义:

给定n名男性和n名女性,其中每个人都对 异性按优先顺序,男女结婚 这样就不会有两个异性 他们都宁愿拥有对方,而不是现在的伴侣什么时候到 如果没有这样的一对人,这一组婚姻被认为是稳定的

因此,我们需要验证这样的一对是否存在。我们只需要将每个人的当前伴侣与排名较高的人进行对比。如果其中一个级别较高的选择也喜欢此人,则匹配不稳定

伪代码:

for w in women:
    for m in [men w would prefer over current_partner(w)]:
        if m prefers w to current_partner(m) return false

return true

目前,我可以想出三种方法(在双边匹配市场中):

  • 像@jrook上一个答案所提供的那样进行残酷的强制搜索
  • 你运行Gale Shapely算法两次,一个是男人求婚,另一个是女人求婚,你可能知道
  • 提出推迟接受的人是最理想的人,因为它使每个人都符合自己的意愿 最有利的可能稳定的女性伴侣,也是 女人最糟糕的是,它匹配每个女人最糟糕的马厩 男伴侣。对于提出延迟接受算法的女性,反之亦然

    有了这个,你可以在每个男人和女人的名单上找到一系列可能的稳定伴侣,然后检查你当前的匹配伴侣是否在这个范围内

  • 如果你知道稳定的室友问题或者读过这篇文章,你可以应用该算法第一阶段的类比来获得一系列可能的稳定伴侣,然后检查你当前的匹配伴侣是否在该范围内
  • 总之,这些都是我非常粗略的想法,因为我没有仔细考虑如何在代码中实现它并评估它们的运行时复杂性。据我所知,上述所有方法都可以在O(n^2)时间内运行,因此考虑到实现它的简单性,方法1还不错。我想应该有一个更有效的方法(也许利用顶部交易周期的概念)。如果我犯了任何错误,请随时指出

    注:术语“可能的稳定伴侣”指的是以下示例中描述的情况:如果男性m和女性w在稳定匹配中匹配,我们称w为m的可能的稳定伴侣