【发布时间】:2016-06-14 14:48:06
【问题描述】:
假设我有一组 5 个人 P = {1, 2, 3, 4, 5} 并且我知道将它们匹配在一起有以下几种可能性:
{1,2}, {1,3}, {1,5}, {2,1}, {2,4}, {2,5}, {3,1}, {3,4}, {4,2}, {4,3}, {4,5}, {5,1}, {5,2}, {5,4}
例如,它们可以象征谁喜欢谁(每个人都是双性恋, 性别无关紧要)。
现在我想真正知道与谁匹配,以便每个人都与某人匹配。理想情况下,没有人会被排除在外。
所以基于这个例子:谁应该和谁结婚?理想情况下,任何人都不应单身。
稍加改动:最多也可以匹配 3 人。
所以根据例子:多角婚姻是允许的。
所以我可以手动完成并获得有效的结果。所以我知道因为{1,2}、{1,5} 和{2,5} 我可以将{1,2,5} 匹配在一起。
现在这意味着人 1,2 和 5 出局了,只剩下以下组合:
{3,4}, {4,3}
这导致{3,4}。
所以最终结果可能是:{1,2,5} 和 {3,4}
所以基于示例:人 1、2 和 5 结婚,人 3 和 5 结婚。
现在,这是一个玩具示例。如果人数和可能匹配的人数增加,情况会变得更加复杂。
我正在寻找有关如何用计算机解决此类问题的正确方向的推动力。
【问题讨论】:
-
这是最大的 3-hypergraph 匹配:en.wikipedia.org/wiki/3-dimensional_matching (NP-hard)。可能最大二分匹配可以用作启发式的合理起点。
-
(或者只是图形着色,也是 NP-hard)
-
谢谢@NiklasB。!这已经很有帮助了。
-
我为我的问题添加了视觉解释。 @NiklasB.:如果我理解正确,则不可能进行双向匹配,因为我没有尝试匹配的两方,而是一方,每个人都可以与另一方匹配?
-
@DavidEisenstat:谢谢,我去看看。