Algorithm 最大加权二部匹配,约束:保留每个图的顺序

Algorithm 最大加权二部匹配,约束:保留每个图的顺序,algorithm,graph-algorithm,Algorithm,Graph Algorithm,假设我有两个集合:(n_1,n_2,…)和(m_1,m_2,…)以及一个匹配函数match(n,m),它返回一个从0到1的值。我希望找到两个集合之间的映射,以满足以下约束: 每个元素在相反的集合中最多必须有一个匹配的元素 不匹配的元素将与虚拟元素配对,成本为1 当应用于所有元素时,匹配函数的和是最大的 我在正式表达这一点上有困难,但是如果你将每个集合按照它们的原始顺序平行排列,并在匹配的元素之间画一条线,那么所有的线都不会交叉。E.x.[n_1m_2,n_2m_3]是有效映射,但[n_1m_2

假设我有两个集合:(n_1,n_2,…)和(m_1,m_2,…)以及一个匹配函数match(n,m),它返回一个从0到1的值。我希望找到两个集合之间的映射,以满足以下约束:

  • 每个元素在相反的集合中最多必须有一个匹配的元素
  • 不匹配的元素将与虚拟元素配对,成本为1
  • 当应用于所有元素时,匹配函数的和是最大的
  • 我在正式表达这一点上有困难,但是如果你将每个集合按照它们的原始顺序平行排列,并在匹配的元素之间画一条线,那么所有的线都不会交叉。E.x.[n_1m_2,n_2m_3]是有效映射,但[n_1m_2,n_2m_1]不是
(我相信前三个是标准的加权二部匹配约束,但我指定了它们,以防我误解加权二部匹配)

这对于指数时间(相对于集合的大小)的穷举搜索来说是相对直接的,但我希望多项式时间(理想情况下是O((| n |*| m |))或更好)的解决方案存在


我已经在“分配问题”/“加权二部匹配”上搜索了相当多的内容,并看到了不同约束的变化,但没有找到匹配的或我能够使用此添加的排序约束简化为一个的。你对我如何解决这个问题有什么想法吗?或者是一个粗略的证明,证明它在多项式时间内是不可解的(就我而言,简化为NP完全也是可行的)

这个问题已经在“最大权重非交叉匹配”的名义下进行了研究。有一个简单的二次时间动态程序。设M(a,b)是n1,…,na和m1,…,mb上的最佳匹配的值。我们有复发

M(0,b)=-b
M(a,0)=-a
M(a,b)=max{M(a-1,b-1)+匹配(a,b),M(a-1,b)-1,M(a,b-1)-1}

通过跟踪argmaxes,可以从其值恢复最佳解决方案


如果match的条目数明显少于大于-1的二次方,则有一种算法在有用条目数()中以时间线性方式运行。

抱歉,排序不是简化。你有序列作为输入还是集合?因为术语中没有有序的集合,所以我认为将输入视为序列而不是集合是合适的。