匈牙利方法的正当性(Kuhn-Munkres)


14

我根据在网上随处可见的讲义编写了Kuhn-Munkres算法的实现,以解决最小二分法完美匹配问题。即使在数千个顶点上,它也能很好地工作。我同意其背后的理论确实很美。但是我仍然想知道为什么我必须花这么长时间。我发现这些讲义并不能解释为什么我们不能简单地采用原始线性程序并将其传递给单纯形方法。当然,我怀疑这是可预测性能的问题,但是由于我没有看到它的明确说明,因此我不太确定。事实证明,多原点的原始极值位于0-1,因此似乎我们可以直接将其馈送到单纯形实现中,而无需制定对偶。还是我很简单?

Answers:


16

(从评论中删除。)

当然,你可以通过使用一个通用的LP求解器解决任何LP,但专门的算法通常有很多更好的性能。

这不仅涉及理论上的渐近性能保证,而且还涉及实际的实际性能。匈牙利方法之类的算法可以大大简化,并且相对容易正确有效地实施。

您还可以经常避免使用精确的有理数与浮点数之类的问题。使用整数可以轻松完成所有操作。


14

尽管该回答在一般意义上是正确的,但尝试特别理解将原始单纯形应用于分配问题时出了什么问题也很有帮助。考虑具有平方成本矩阵c_ij的NxN分配问题。相应的LP具有要解决的N ^ 2个变量x_ij。将这些x_ij视为一个平方矩阵X,一个可行的解决方案要求X是一个置换矩阵,该矩阵由我们LP中的2N-1个约束强制执行(乍看之下,存在2N个约束,每行一个约束,每列一个,但它们并非全都独立,因此我们删除其中之一)。LP约束因此形成(2N-1)x(N ^ 2)矩阵A.

现在,通过选择一组(2N-1)基本变量形成基本解决方案。但是,对于该基本解决方案也是可行的,这些变量中只有N个可以具有值1,而其他变量(N-1)则为0。因此,每个可行的解决方案都是简并的。这种简并性的问题在于,可以将任何(N-1)个基本变量为0的情况与任何(N ^ 2-2N + 1)个非基本变量进行交换,即所谓的“简并枢轴”,而没有对目标函数值的影响[您只是将一个0变量交换为另一个]。当N大时,原始单纯形算法会浪费大量时间,使退化的数据透视表无法改善解决方案。这就是为什么不将朴素的原始单纯形算法直接用于解决分配问题的症结所在。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.