【发布时间】:2011-01-22 07:46:55
【问题描述】:
几个月前有一个关于“1:n 匹配问题”的nice question,似乎没有多时间算法。
我想添加约束以使用多项式算法找到 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 匹配问题?
例如该图是否可以转换为一般图,然后可以通过一般图的加权匹配来解决?或者branchings 甚至matching forests 可以在这里帮忙吗?
PS:不是作业;-)
【问题讨论】: