我最近偶然发现this algorithm并且很难向自己解释。该算法解决了O {n 4 中的assignment problem(显然可以改进为O(n 3 ))但我不明白为什么。
直观地我可以看到算法倾向于找到优秀的解决方案,但我看不到证据!到目前为止,我看到的所有证据都包含我不熟悉的符号。我的问题是:任何人都可以严格解释它吗?
我已经理解,问题可以转移到值矩阵中,其中每行和每列中只需要选择一个值。可能的最小值(来自所选元素)以及产生该值的选择是算法计算的值。显然,找到选择也会找到最小值。
我正在努力的部分,符号明智,是here。 设置部分中的第三段开头“让我们调用一个函数”......
答案 0 :(得分:3)
您链接到的Wikipedia page有关于如何在矩阵上手动执行此算法的步骤。 python implementation也使用矩阵。有时,了解算法的唯一方法是手动或在交互式控制台中逐步执行。
答案 1 :(得分:1)
你可以查看Jungnickel的这个book,其中包含从第421页开始的匈牙利算法的全面理论讨论,但也是一个例子。通过这个例子,你应该能够看到为什么算法是O(n3))。
答案 2 :(得分:0)
对于S和T中的每个位置,如果y和i在y处的y一起小于到目前为止为该位置计算的成本(找到最低潜在答案),则表示S和T值中的y是潜在答案。
如果我没记错的话,这是一个动态编程问题。一个完美的匹配将是那个最便宜的比率恰好是他被选中的人。
答案 3 :(得分:0)
该函数将图中的每个顶点映射到有理数字系统,这是U形符号所表示的S和T的并集,该有理数系统是由给定对的不等式Q表示的。顶点。那个符号的哪一部分仍然没有意义?
答案 4 :(得分:0)
势函数y为你的完整二分图中的每个顶点指定一个数字,即从S(所有人的集合)和T的任何顶点(所有人的集合)的任何顶点的潜力之和jobs)小于连接这些顶点的边缘的值(因此小于执行作业的人的成本)。为每个顶点指定0的函数是有效潜在函数的一个很好的例子。
潜在y的值是所有顶点的电位之和(这是定义)。
可以看出,每次完美匹配的成本至少是每种潜力的价值。
这是相当明显的:在完美匹配中,你必须选择没有共同顶点的n条边。每个边缘的成本低于其顶点的潜力之和(来自潜在的定义)。当您对匹配中所有边的成本求和时,它将高于图的潜在值。
现在,算法计算潜力和匹配,使得它们的成本/值相同。由于潜在价值是问题最小成本的下限,因此您可以获得最佳解决方案。
这证明了算法。现在你需要看一下它,理解为什么以及如何找到一个完美的匹配和一个具有相同成本/价值的潜力。