最大加权二分匹配,约束:保留每个图的排序

时间:2012-02-28 12:55:16

标签: algorithm graph-algorithm

假设我有两组:(n_1,n_2,...)和(m_1,m_2,...)和匹配函数匹配(n,m),它返回0到1之间的值。我想要找到两个集合之间的映射,以满足以下约束:

  • 每个元素在相反的集合中必须至多有1个匹配的元素。
  • 不匹配的元素将与成本1
  • 的虚拟元素配对
  • 应用于所有元素时匹配函数的总和最大
  • 我无法正式表达这一点,但是如果你按照原始顺序排列每个彼此平行的组并在匹配的元素之间画一条线,那么任何一条线都不会交叉。 E.x. [n_1< - > m_2,n_2< - > m_3]是有效的映射,但[n_1< - > m_2,n_2< - > m_1]不是。

(我相信前三个是标准加权的二分匹配约束,但是如果我误解了加权二分匹配,我会指定它们)

在指数时间(相对于集合的大小)进行穷举搜索这是相对简单的,但我希望多项式时间(理想情况下为O((| n | * | m |)^ 3)或更好)解决方案存在。

我已经在“分配问题”/“加权二分匹配”上搜索了相当多的数量,并且看到了不同约束的变体,但没有找到匹配的或者我能够通过这个添加的顺序减少到一个约束。你有什么想法我可以解决这个问题吗?或者也许是在多项式时间内无法解决的粗略证明(对于我的目的,减少到NP-complete也会有效)?

1 个答案:

答案 0 :(得分:7)

已经在“最大重量非交叉匹配”的名称下研究了该问题。有一个简单的二次时动态程序。设M(a,b)为n 1 ,...,n a 和m 1 ,...,m的最佳匹配值<子> b'/子>。我们有复发

  

M(0,b)= - b
  M(a,0)= - a
  M(a,b)= max {M(a-1,b-1)+ match(a,b),M(a-1,b)-1,M(a,b-1)-1}。

通过追溯argmax,您可以从其值中恢复最佳解决方案。

如果匹配明显少于大于-1的二次条目数,则有一个算法在有用条目数(Khoo and Cong, A Fast Multilayer General Area Router for MCM Designs)中按时间线性运行。