断开连接图中的最大二分匹配

时间:2011-04-19 12:32:50

标签: algorithm graph matching max bipartite

当图表包含多个组件时,如何找到最大的二分匹配?每个组件都可以通过两种方式着色。为了运行最大匹配程序,你如何决定两组X和Y?

3 个答案:

答案 0 :(得分:1)

如果你的图表有几个不同的连通组件,你可以通过找到每个组件中的最大匹配并返回它们的联合来找到图中的最大匹配。

至于如何确定集合X和Y,存在许多用于检测特定图是否是二分的算法,如果是,则为节点分配标签以恢复这两个组。您可以非常轻松地使用修改后的DFS或BFS执行此操作。因此,您的问题的算法可能是

  1. 在整个图表上运行DFS,将其分解为连接的组件。
  2. 对于每个组件:
    1. 在这些组件上运行DFS以恢复哪些节点位于组X和Y中。
    2. 使用最大二分匹配算法查找该组件中的最大匹配。
  3. 将所有结果合并在一起以获得总体答案。
  4. 希望这有帮助!

答案 1 :(得分:1)

不要从边缘的角度看匹配,看作为一组边。这种观点使得更清楚的是,无论你如何加入子结果,它都可以在后面继续。

  1. 将图表分隔为连接的组件

  2. 使用您选择的算法为每个图形组件找到最大匹配。

  3. 找到的匹配项的并集是整个图表的最大匹配。

答案 2 :(得分:0)

我不知道断线图,但是如果你有一个像我这样的完整图表,那么你可能会感兴趣:http://wilanw.blogspot.com/2009/09/maximumminimum-weighted-bipartite.html。它使用改进的Floyd-Warshall算法来找到最大匹配。我不知道这和匈牙利算法之间的区别。