Begründung für die ungarische Methode (Kuhn-Munkres)


14

Ich habe eine Implementierung des Kuhn-Munkres-Algorithmus für das zweigliedrige Problem der perfekten Anpassung mit minimalem Gewicht geschrieben, basierend auf Vorlesungsnotizen, die ich hier und da im Internet gefunden habe. Es funktioniert wirklich gut, auch auf Tausenden von Eckpunkten. Und ich stimme zu, dass die Theorie dahinter wirklich schön ist. Und trotzdem frage ich mich, warum ich mich so sehr anstrengen musste. Ich finde, dass diese Vorlesungsunterlagen nicht erklären, warum wir das ursprüngliche lineare Programm nicht einfach nehmen und es an die Simplex-Methode übergeben können. Ich vermute natürlich, dass es sich um eine vorhersehbare Leistung handelt, aber da ich sie nicht explizit gesehen habe, bin ich mir nicht sicher. Die äußersten Punkte des Polytops in der Primzahl liegen nachweislich bei 0-1, sodass wir es anscheinend direkt einer Simplex-Implementierung zuführen können, ohne auch nur das Dual zu formulieren. Oder bin ich simpel?

Antworten:


16

(Verschoben aus einem Kommentar.)

Natürlich können Sie jede LP mit einem Allzweck-LP-Löser lösen, aber spezialisierte Algorithmen weisen in der Regel eine viel bessere Leistung auf.

Es geht nicht nur um theoretische asymptotische Leistungsgarantien, sondern auch um praktische, reale Leistungen. Algorithmen wie die ungarische Methode können extrem rationalisiert werden und sind relativ einfach korrekt und effizient zu implementieren.

Sie können auch häufig Probleme vermeiden, z. B. die Verwendung genauer rationaler Zahlen im Vergleich zu Gleitkommazahlen. alles kann leicht mit ganzen Zahlen gemacht werden.


14

Obwohl diese Antwort im Allgemeinen richtig ist, ist es auch hilfreich zu verstehen, was beim Anwenden von Primal Simplex auf das Zuweisungsproblem genau schief geht. Betrachten Sie ein NxN-Zuordnungsproblem mit der quadratischen Kostenmatrix c_ij. Die entsprechende LP hat N ^ 2 Variablen x_ij, nach denen zu lösen ist. Betrachtet man diese x_ij als quadratische Matrix X, so erfordert eine realisierbare Lösung, dass X eine Permutationsmatrix ist, die durch 2N-1-Einschränkungen in unserer LP erzwungen wird (auf den ersten Blick scheint es 2N-Einschränkungen zu geben, eine für jede Zeile und eine eine für jede Spalte, aber sie sind nicht alle unabhängig und wir lassen eine von ihnen fallen). Die LP-Beschränkungen bilden somit eine (2N-1) x (N ^ 2) -Matrix A.

Aus der Auswahl eines Satzes von (2N-1) Grundvariablen wird nun eine Grundlösung gebildet. Damit diese Grundlösung auch realisierbar ist, können jedoch nur N dieser Variablen den Wert 1 haben, und die andere (N - 1) ist 0. Somit ist jede realisierbare Lösung entartet. Das Problem bei dieser Entartung besteht darin, dass jede der (N-1) Basisvariablen, die 0 sind, mit jeder der (N ^ 2-2N + 1) nicht-basischen Variablen, einem sogenannten "entarteten Pivot", mit der Nummer 0, ausgetauscht werden kann Auswirkung auf den Wert der Zielfunktion [Sie tauschen nur eine 0-Variable gegen eine andere aus]. Wenn N groß ist, verschwendet der Primal-Simplex-Algorithmus viel Zeit, um degenerierte Pivots zu erstellen, die die Lösung nicht verbessern. Dies ist der springende Punkt, warum der naive Primary Simplex-Algorithmus nicht direkt zur Lösung des Zuweisungsproblems verwendet wird.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.