【问题标题】:Maximum weight bipartite matching最大权重二分匹配
【发布时间】:2011-04-26 07:11:46
【问题描述】:

我有一个矩形网格形式的图形,即 N 个节点和 2N 条边,所有相邻节点都是连接的。 这意味着它是双色的,因此可以对其进行二分匹配。

每条(无向)边都有一个权重 -2、-1、0、1 或 2。不允许使用其他值

如何在此图上找到匹配项,以使匹配项中的权重总和最大化?伪代码会很好,不要打扰特定的语言。

理想情况下,我正在寻找一种在二次时间内运行的算法 - 最坏的情况可能是 O(n^2 log n)。


在您提出解决方案之前,我尝试使用权重 2 的边进行最大匹配,然后使用权重 1(不超过权重 2 的边)。我在这个实现中获得了 98% 的分数(问题来自信息学奥林匹克),我想知道 100% 的解决方案是什么。

【问题讨论】:

  • 你不是说2N条边吗?而且您希望匹配包括所有节点,对吗?
  • 是的,2N 条边(经过编辑以反映这一点)。我希望匹配包含任意数量的节点,只要匹配中边的总和最大化。
  • 我认为您正在寻找图形切割 - en.wikipedia.org/wiki/Cut_(graph_theory)。最小割算法虽然运行 O(n^3),但我怀疑这里的任何人都会击败它。
  • @dark_charlie:你为什么说它会是 O(n^3)?目前,我正在考虑 Ford-Fulkerson,即 O(VE),或者在我的情况下为 O(n^2)。唯一的问题是实施起来很麻烦。
  • @Evgeny: Ford-Fulkerson 是 O(V * E^2) 其中 E^2 = 4 * V^2 在你的情况下,产生 O(V^3)。

标签: algorithm graph matching bipartite


【解决方案1】:

不知道你为什么要考虑最小切割。在这种情况下,剪裁不能保证给您匹配。你需要做的是解决分配问题。Assignment Problem。连续最短的数学算法在 O(EV log V) 中解决它,在你的情况下是 O(n^2 log n)。

【讨论】:

    猜你喜欢
    • 2018-11-27
    • 1970-01-01
    • 2011-05-24
    • 2013-01-27
    • 1970-01-01
    • 2014-05-09
    • 2011-07-09
    • 2019-12-18
    • 1970-01-01
    相关资源
    最近更新 更多