Verallgemeinerung des ungarischen Algorithmus auf allgemeine ungerichtete Graphen?

14

Der ungarische Algorithmus ist ein kombinatorischer Optimierungsalgorithmus, der das Problem der bipartiten Anpassung mit maximalem Gewicht in der Polynomzeit löst und die spätere Entwicklung der wichtigen Primal-Dual-Methode vorwegnimmt . Der Algorithmus wurde 1955 von Harold Kuhn entwickelt und veröffentlicht, der den Namen "Ungarischer Algorithmus" erhielt, da der Algorithmus auf den früheren Arbeiten zweier ungarischer Mathematiker basierte: Dénes Kőnig und Jenő Egerváry. Munkres überprüfte den Algorithmus 1957 und stellte fest, dass es tatsächlich Polyzeit ist. Seitdem ist der Algorithmus auch als Kuhn-Munkres-Algorithmus bekannt.

Obwohl der Ungar die Grundidee der Primal-Dual-Methode enthält, löst er das Problem der bipartiten Anpassung mit maximalem Gewicht direkt, ohne einen linearen Programmierapparat (LP) zu verwenden. Auf die folgende Frage antwortete Jukka Suomela

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. [...] 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.

Mit anderen Worten, Sie müssen sich keine Gedanken darüber machen, wie Sie eine Rational / Floating-Point-Lösung aus dem LP-Solver runden können, um eine perfekte Übereinstimmung der maximalen Gewichtung eines gegebenen zweigeteilten Graphen zu erhalten.

Meine Frage ist folgende:

Gibt es eine Verallgemeinerung des ungarischen Algorithmus, die für allgemeine ungerichtete Graphen ohne die Verwendung von LP-Maschinen ähnlich dem Geist des ursprünglichen ungarischen Algorithmus funktioniert ?

Ich würde lieber eine moderne und leicht lesbare Darstellung als ein kompliziertes Originalpapier vorziehen. Aber jeder Zeiger wird sehr geschätzt!

Vielen Dank im Voraus und Frohe Weihnachten !!!


Update: Die Frage wird von Arman unten schön beantwortet. Ich möchte nur darauf hinweisen, dass eine weitere gute Quelle zum Studium des Edmonds-Blossom-Algorithmus (für den gewichteten Fall) Kapitel 11 der kombinatorischen Optimierung von Korte und Vygen ist . Google Buch zeigt eigentlich fast alle Teile, die ich brauche, um den Algorithmus zu verstehen.

Dai Le
quelle
2
Wie wäre es mit dem Matching-Algorithmus von Edmonds? en.wikipedia.org/wiki/Edmonds%27s_matching_algorithm
Arman
1
@Arman - Das habe ich mir auch gedacht. Vielen Dank für den Link, Wikipedia hat eine überraschend detaillierte Darstellung von Edmonds Blütenalgorithmus.
Abraham Flaxman
2
Der Matching-Algorithmus von Edmonds basiert übrigens auch auf der Primal-Dual-Methode.
Arman
1
Vielen Dank, Arman. Der Wikipedia-Link verweist auch auf das Buch "Lovász, László; Plummer, Michael (1986). Matching Theory" für die gewichtete Version von Edmonds 'Algorithmus. Ich sollte mir dieses Buch wirklich ansehen. Vielen Dank für Ihre Kommentare! Wenn einer von Ihnen auf hohem Niveau erklären kann, wie der Algorithmus den ungarischen Algorithmus verallgemeinert, können Sie ihm definitiv eine Antwort geben.
Dai Le
1
Ich denke, es ist eine ziemlich gute Antwort, wie es ist :). Arman, Sie sollten es als solches hinzufügen
Suresh Venkat

Antworten:

16

Der Matching-Algorithmus von Edmonds (auch als Blossom-Algorithmus bezeichnet) löst die maximale Übereinstimmung in allgemeinen Diagrammen. Tatsächlich handelt es sich um eine Verallgemeinerung der Wechselpfadmethode. (Ich bin mir nicht sicher, wie die Methode heißt, aber es sollte sich um die König-Hall-Methode handeln.) Es werden im Wesentlichen Erweiterungspfade gefunden (siehe Wikipedia-Seite: http://en.wikipedia.org/wiki/Edmonds%27s_matching_algorithm ), um den Algorithmus zu erweitern Der aktuelle Abgleich wird beendet, wenn keine zusätzlichen Pfade mehr vorhanden sind. In allgemeinen Grafiken tritt das einzige Problem in ungeraden Zyklen auf. Im Matching-Algorithmus der Edmonds werden ungerade Zyklen kontrahiert (Blüten) und aufgewendet, um eine Lösung zu erhalten.

Es gibt auch eine Entsprechung zwischen dem Blossom-Algorithmus und der Primal Dual-Methode. Ungerade Zyklen verursachen gebrochene Extrempunkte. Deshalb addieren wir für jeden ungeraden Zyklus sogenannte Blütenungleichungen.

Mit diesem Ansatz könnten auch minimale gewichtete perfekte Anpassungs- und maximale Gewichtsanpassungsprobleme behandelt werden.

Einzelheiten zum Algorithmus finden Sie unter http://en.wikipedia.org/wiki/Edmonds%27s_matching_algorithm http://www.cs.berkeley.edu/~karp/greatalgo/lecture05.pdf

Die mathematische Formulierung und die entsprechende Primal-Dual-Methode finden Sie unter http://webdocs.cs.ualberta.ca/~mreza/courses/CombOpt09/lecture4.pdf

Arman
quelle
9

Vor zwei Jahren, als ich den (ungewichteten) Blütenalgorithmus erforschte, fand ich zwei großartige Notensätze, einen von Tarjan und einen von Zwick. Sie ließen den ungewichteten Fall ziemlich einfach erscheinen, und ich konnte ihn in Mathematica mithilfe von Rekursion implementieren. Es funktioniert ganz gut

Die Notizen, die ich nützlich fand, sind

http://www.cs.tau.ac.il/~zwick/grad-algo-06/match.pdf und http://www.cs.dartmouth.edu/~ac/Teach/CS105-Winter05/Handouts/ tarjan-blossom.pdf

Sie fassen alles auf sehr einfache Begriffe zusammen, die es einem erlauben, rekursiv zu denken und dann, wie erwähnt, rekursiv zu programmieren.

Ich denke, es sollte alles in dem gewichteten Fall funktionieren, den ich jetzt implementieren möchte.

Stan Wagon
quelle
Und ich habe Demos, die mit der kostenlosen Software von jedem angeschaut werden können: Die erste zeigt Blüte schön .... < demonstrations.wolfram.com/… > < demonstrations.wolfram.com/TheHungarianMaximumMatchingAlgorithm > < demonstrations.wolfram.com/ Platzieren von DominoesOnACheckerboard >
Stan Wagon
Und ich habe gerade ungewichtete Blüten wie in Korte / Vygen programmiert. Ich sehe, dass ein paar Beschleunigungen für seinen Code möglich sind (z. B. mit einer maximalen Übereinstimmung im Gegensatz zu nichts beginnen), aber das Schöne ist, dass sein prozeduraler Code in einer Form angegeben ist, die man leicht in Arbeitscode übersetzen kann. Weiter: Gewichtete Blüte, die viel härter ist.
Stan Wagon