匈牙利算法选择0

时间:2013-03-01 07:11:55

标签: algorithm graph-algorithm

我有一个与此处发现的问题非常相似的问题:

Hungarian algorithm - assign systematically

他提出了一个可能会或可能不会起作用的解决方案......但它看起来并不完全合乎逻辑。

是否有一个肯定的动态算法用于确定哪一组0将是一个可行的解决方案? (意思是每行和每列只有一个0)

请参阅:http://www.wikihow.com/Use-the-Hungarian-Algorithm

上的第9步

如何实现算法来执行该任务?

谢谢!

1 个答案:

答案 0 :(得分:0)

基本上,您可以将n * n矩阵视为表示二分图。行表示图的左侧部分中的顶点,列表示右侧部分中的顶点。行i中的零,col j表示左侧的顶点i和右侧的vetex j之间存在边缘。

您想要找到完整的二分匹配,即一组没有公共顶点的n个边。为此,您可以使用自己喜欢的匹配算法,例如Hopcroft-Karp。

找到匹配后,选择与匹配边缘对应的零。匹配属性保证每行/每列中选定的零不超过一个。