【问题标题】:Maximum weighted bipartite matching, constraint: ordering of each graph is preserved最大加权二分匹配,约束:保留每个图的顺序
【发布时间】:2012-02-28 12:55:15
【问题描述】:

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

  • 每个元素在相反的集合中最多只能有 1 个匹配的元素。
  • 不匹配的元素将与成本为 1 的虚拟元素配对
  • 匹配函数应用于所有元素时的总和最大
  • 我在正式表达这一点时遇到了麻烦,但是如果您按照原始顺序将每个集合相互平行地排列并在匹配的元素之间画一条线,那么这些线都不会交叉。前任。 [n_1m_2, n_2m_3] 是有效的映射,但 [n_1m_2, n_2m_1] 不是。

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

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

我已经在“分配问题”/“加权二分匹配”方面进行了大量搜索,并看到了具有不同约束的变体,但没有找到匹配的或者我能够通过添加的排序减少到一个约束。您对我如何解决这个问题有任何想法吗?或者也许是一个粗略的证明,证明它不能在多项式时间内解决(为了我的目的,减少到 NP 完全也可以)?

【问题讨论】:

  • 抱歉订购不是简化。你有序列作为输入或集合?因为没有有序集
  • 对术语感到抱歉,我认为将输入视为序列而不是集合是合适的。

标签: algorithm graph-algorithm


【解决方案1】:

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

M(0, b) = -b
M(a, 0) = -a
M(a, b) = 最大值 {M(a - 1, b - 1) + 匹配(a, b), M(a - 1, b) - 1, M(a, b - 1) - 1}。

通过追溯 argmaxes,您可以从其值中恢复最优解。

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

【讨论】:

    猜你喜欢
    • 2011-04-26
    • 2019-12-18
    • 2020-10-14
    • 2013-01-27
    • 1970-01-01
    • 2018-11-27
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多