几个月前有一个关于“ 1:n 匹配问题”的好问题,似乎没有多时间算法。
我想添加约束以使用多项式算法找到 1:n 匹配问题的最大匹配。我想说:“对于顶点 A1,如果顶点尚未取自另一个 A 顶点,请选择 {B1,B2,B5} 或 {B2,B3}”,即我不会允许所有可能的组合。
如果我们为每个选择引入辅助顶点 H 并用树替换边 => 我们会遇到类似于普通二分匹配的问题,则可以表达这一点。A 或 B 的每个顶点在匹配中只能有一条边。H 中的顶点到或来自顶点的边要么全部在匹配中,要么在匹配中都不存在。想象一下下面的三部图:
现在定义 h_ij="tree rooted that contains H_ij" 来轻松表达匹配:
- 然后在示例中 M={h12,h22} 将是一个“最大”匹配,尽管并非涉及 B 的所有顶点
- 集合 {h12,h23} 不匹配,因为 B3 将被选择两次。
那么这个问题可以在多项式时间内解决吗?如果是,是否有加权 (w(h_ij)) 变体的多时间解决方案?如果不是,您能否为像我这样的“简单人”争论甚至证明它,或者建议其他约束来解决 1:n 匹配问题?
例如,该图是否可以转换为通用图,然后可以通过通用图的加权匹配来解决?或者分支甚至匹配的森林在这里有帮助吗?
PS:不是作业;-)