我有一个与此处发现的问题非常相似的问题:
Hungarian algorithm - assign systematically
他提出了一个可能会或可能不会起作用的解决方案......但它看起来并不完全合乎逻辑。
是否有一个肯定的动态算法用于确定哪一组0将是一个可行的解决方案? (意思是每行和每列只有一个0)
请参阅:http://www.wikihow.com/Use-the-Hungarian-Algorithm
上的第9步如何实现算法来执行该任务?
谢谢!
答案 0 :(得分:0)
基本上,您可以将n * n矩阵视为表示二分图。行表示图的左侧部分中的顶点,列表示右侧部分中的顶点。行i中的零,col j表示左侧的顶点i和右侧的vetex j之间存在边缘。
您想要找到完整的二分匹配,即一组没有公共顶点的n个边。为此,您可以使用自己喜欢的匹配算法,例如Hopcroft-Karp。
找到匹配后,选择与匹配边缘对应的零。匹配属性保证每行/每列中选定的零不超过一个。