Ich glaube, das ist wahr, aber ich habe auch keinen formellen Beweis dafür bekommen. Aber ist es wahr, dass ein minimaler Spannbaum durch Anwendung des Kruskal-Algorithmus erreichbar ist? In ähnlicher Weise gilt dies für Prims Algorithmus?
EDIT: Um genauer zu sein, ich möchte wissen, ob bei einem MST für einen verbundenen, ungerichteten, gewichteten Graphen garantiert ist, dass es eine Abfolge von Schritten mit Kruskal oder Prim gibt, die diesen MST erzeugen. ZB gibt es verschiedene Möglichkeiten für Kruskal, wenn es mehrere Kanten mit demselben Gewicht gibt. Ähnliches gilt für Prim.
algorithms
graphs
minimum-spanning-tree
Domoremath
quelle
quelle
Antworten:
Wie aus Raphaels Kommentar und j_random_hackers Kommentar hervorgeht , ist die Antwort positiv. Tatsächlich ist jeder MST mit einigen geringfügigen Ausnahmen mit jedem MST-Algorithmus erreichbar .
Für einen Graphen werden zwei Gewichtsfunktionen an allen Kanten (zu reellen Zahlen) als (schwach) vergleichbar (zueinander) definiert, wenn wir die durch beide Gewichtsfunktionen hervorgerufene strenge schwache Ordnung an den Kanten auf dieselbe strenge ausdehnen können Gesamtbestellung. Das heißt, wir können mit jeder Gewichtsfunktion konsistente Regeln für das Brechen von Verbindungen aufstellen, so dass das Ergebnis des Vergleichs von zwei Kanten durch eine Gewichtsfunktion und deren Brechen von dem Ergebnis durch die andere Gewichtsfunktion und deren Binden abweicht. Regeln brechen.G
Der Beweis von Lemma 1 bleibt als einfache Übung.
(Hinweis auf) Beweis: Ein Ansatz besteht darin, die Bedingung 5 von Lemma 1 zu verifizieren. Ein anderer Ansatz besteht darin, die Bedingung 2 von Lemma 1 zu verifizieren, indem gezeigt wird, dass in jedem Satz von Kanten eine leichteste Kante von auch eine leichteste Kante von ist w 1 ,w2 w1
Ein vergleichsbasierter Algorithmus auf einem Graphen wird als vergleichskompatibel definiert, wenn für zwei (schwach) vergleichskompatible Gewichtsfunktionen an allen Kanten der Algorithmus mit einer Gewichtsfunktion so ausgeführt werden kann, dass er unverändert wiederholt werden kann mit der anderen Gewichtsfunktion. Insbesondere haben diese beiden Läufe des Algorithmus die gleiche Ausgabe.G
Bitte beachten Sie, dass die meisten, wenn nicht alle MST-Algorithmen in zwei Varianten angegeben werden können. Bei der ersten Variante wird davon ausgegangen, dass bestimmte Kanten von unterschiedliche Gewichte haben. Dies wird verwendet, wenn das Hauptanliegen darin besteht, eine MST zu finden (die tatsächlich auch die eindeutige MST ist). Die zweite Geschmacksrichtung ermöglicht, dass unterschiedliche Kanten von G die gleichen Gewichte haben. In dieser Antwort, in der es hauptsächlich darum geht, alle MSTs zu finden, werden wir uns natürlich nur um MST-Algorithmen in der zweiten Variante kümmern.G G
Ein vergleichbarer MST-Algorithmus kann alle MSTs finden.
Um den obigen Satz zu beweisen, müssen wir nur den Abschnitt "Kruskal kann jeden MST finden" in der Berechnung der Anzahl der MST leicht anpassen . Wählen Sie für jedes MST von G mit Gewichtsfunktion w 1 ein positives Gewicht, das leichter ist als die absolute Differenz zwischen zwei ungleichen Kantengewichten. Wenn wir dieses Gewicht vom Gewicht jeder Kante in m abziehen, ohne das Gewicht anderer Kanten zu ändern, erhalten wir eine neue Gewichtsfunktion, beispielsweise w 2 . Wenn die Kante um heller als , muss um heller alsm G w1 m w2 e1 e2 w1 e1 e2 w2 auch. Nach Lemma 2 sind und vergleichskompatibel. Beachten Sie, dass die eindeutige MST mit . (Eine Möglichkeit, diese Eindeutigkeit zu demonstrieren, besteht darin, zu beweisen, dass jedes MST mit der neuen Gewichtungsfunktion, wenn die Gewichtung einer MST-Kante verringert wird, diese Kante enthalten muss.) Daher wird jeder Durchlauf des Algorithmus auf findenw1 w2 m w2 w2 . Da der Algorithmus vergleichbar ist, können wir den Algorithmus auf die gleiche Weise mit w 1 oder mit w 2 ausführen. Da dieser Lauf die eindeutige MST m mit w 2 findet, findet er m auch mit wm w1 w2 m w2 m .w1
Jeder MST-Algorithmus ist vergleichbar
Der obige Satz klingt über die Straße. Nun, mit jedem MST-Algorithmus meine ich jeden allgemeinen vergleichsbasierten MST-Algorithmus, den ich gesehen habe, mit Ausnahme der scheinbar pathologischen, wie etwa falschen oder unnötigen Schritten. Da ein vergleichbarer MST-Algorithmus alle MSTs finden kann, kann jeder MST-Algorithmus alle MSTs finden. Insbesondere kann jeder der vier klassischen MST-Algorithmen , nämlich der Borůvka- Algorithmus , der Prim- Algorithmus , der Kruskal-Algorithmus und der Reverse-Delete-Algorithmus, alle MSTs finden.
Hier sind drei weitere vergleichbare MST-Algorithmen.
Der folgende MST-Algorithmus ist nicht vergleichbar.
Bitte beachten Sie, dass alle acht oben genannten MST-Algorithmen vergleichsbasiert sind.
Wie zeige ich, dass ein Algorithmus vergleichbar ist?
Ich werde den Algorithmus von Kruskal als Beispiel verwenden. Hier ist die Beschreibung des Kruskal-Algorithmus (im zweiten Aroma) auf einem gewichteten ungerichtet verbundenen Graphen .G
Ein Algorithmus ist vergleichbar, wenn er in drei Schritten beschrieben werden kann.
Diese ausreichende Bedingung deckt den Algorithmus von Borůvka, Prim, Kruskal, Reverse-Delete, Delete-Heavy-Edge und Add-Non-Heavy-Edge ab. Beachten Sie, dass wir möglicherweise bestimmte Beschreibungen eines Algorithmus ändern müssen, um diese ausreichende Bedingung zu erfüllen, ohne die Menge der erreichbaren MSTs zu beeinflussen. Da der gradabhängige Kruskal-Algorithmus nicht vergleichbar ist, möchte ich betonen, dass diese hinreichende Bedingung in loser Form beschrieben wird
quelle