如何找到图形的非完美二分匹配?

时间:2012-05-11 17:14:12

标签: algorithm data-structures graph bipartite

也就是说,如何找到一个图的二分匹配,其中一些顶点可能没有连接到任何其他顶点?

编辑:还有一个条件,假设边缘也是加权的,我想要匹配,以使总边缘权重最小化(或最大化)。

2 个答案:

答案 0 :(得分:3)

使用Hopcroft-Karp algorithm,它完全符合您的要求。

答案 1 :(得分:2)

首先,我假设你的体重是非负的。

在您编辑的版本中,您谈论的是assignment problem n 代理商,每个代理商都会分配一个独特的操作来执行,其中每个代理商都有一个任意的非负成本行动。虽然这个描述是为了完美的二分匹配,但你可以执行一些技巧。为了平衡两侧,您可以将权重为0的顶点添加到另一侧的所有内容,以表示没有采取任何操作/未执行的操作会产生0成本。缺失链接可以通过超过所有真实成本总和的成本来建模,因此只有在问题无法解决时才会选择它们。对于您编辑的版本,我会使用Hungarian Algorithm。最后,这个问题也被称为“最大加权二分匹配”,另一个算法参考可以在maximum matchings in bipartite graphs下的第二段中找到。

编辑:如果你想最大限度地降低成本而不是最小化成本,你必须降低成本。只需找到最高成本并从最大值中减去每个成本。如果你缺少链接,那么你不会想要任何费用为0的链接。