ハンガリーの方法の正当化(Kuhn-Munkres)


14

私は、ウェブ上であちこちで見つけた講義ノートに基づいて、最小重みの二部完全マッチング問題に対するKuhn-Munkresアルゴリズムの実装を書きました。数千の頂点でさえ、本当にうまく機能します。そして、私はその背後にある理論が本当に美しいことに同意します。それなのに、どうしてそんな長さまで行かなければならなかったのか、まだ疑問に思っています。これらの講義ノートでは、なぜ主線形計画を単純にシンプレックス法に渡せないのかを説明していないことがわかりました。もちろん、予測可能なパフォーマンスの問題ではないかと疑っていますが、明確に述べられていないので、あまりよくわかりません。ポリトープのプライマルの極値は0-1であることが証明されているため、双対を定式化することなく、シンプレックス実装に直接供給することができるようです。それとも私は単純化していますか?

回答:


16

(コメントから移動しました。)

もちろん、汎用LPソルバーを使用して任意のLPを解くことができますが、通常、特殊なアルゴリズムははるかに優れたパフォーマンスを発揮します。

理論的な漸近的なパフォーマンスの保証だけでなく、実際の実際のパフォーマンスも重要です。ハンガリー方式などのアルゴリズムは非常に合理化でき、比較的簡単に正しく効率的に実装できます。

また、正確な有理数と浮動小数点数の使用などの問題を回避することもできます。すべては整数で簡単に行えます。


14

その答えは一般的な意味では正しいものですが、割り当て問題に主シンプレックスを適用するときに何が問題になるかを具体的に理解しようとすることも役立ちます。正方コスト行列c_ijを使用したNxN割り当て問題を考えます。対応するLPには、解くべきN ^ 2個の変数x_ijがあります。これらのx_ijを正方行列Xとして考えると、実行可能なソリューションでは、Xが順列行列であることが必要です。これは、LPの2N-1制約によって強制されます(列ごとに1つですが、すべて独立しているわけではないため、そのうちの1つを削除します)。したがって、LP制約は(2N-1)x(N ^ 2)行列Aを形成します。

これで、基本的なソリューションは(2N-1)個の基本変数のセットを選択することで形成されます。ただし、この基本的な解決策も実行可能であるためには、これらの変数のNのみが値1を持ち、他の(N-1)は0です。したがって、実行可能な解決策はすべて縮退しています。この縮退の問題は、0である(N-1)基本変数を(N ^ 2-2N + 1)非基本変数、いわゆる「縮退ピボット」と交換できることです。目的関数の値への影響[1つの変数を別の変数と交換しているだけです]。Nが大きい場合、主シンプレックスアルゴリズムは、ソリューションを改善しない縮退ピボットを作成するために多くの時間を浪費します。これが、割り当て問題を解決するために素朴なシンプレックスアルゴリズムが直接使用されない理由の要点です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.