Sind alle MST-Mindestspannweiten von Kruskal und Prim erreichbar?


13

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.


2
Relevante Antwort und Diskussion auf ein anderes Ergebnis, das Sie möglicherweise als Lemme verwenden möchten.
Raphael

3
Der erste Abschnitt meiner Antwort belegt dies für Kruskals Algorithmus, und ich denke, ein ähnliches Argument würde für Prims funktionieren
j_random_hacker

Antworten:


9

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

Lemma 1 : Sei und zwei Gewichtsfunktionen. Die folgenden fünf Aussagen sind einander äquivalent.w1w2

  1. w1 und sind vergleichbar.w2
  2. In jeder Menge von Kanten gibt es eine gemeinsame hellste Kante von und von .w1w2
  3. In jeder Menge von Kanten gibt es eine gemeinsame schwerste Kante von und von .w1w2
  4. Es gibt eine Gewichtsfunktion , die unterschiedlichen Kanten unterschiedliche Gewichte , sodass mit und .w3w3w1w2
  5. für jede Kante und e 2, so dass e 1 durch eine Gewichtsfunktion leichter als e 2 ist , ist e 1 so leicht wie oder leichter als e 2 durch die andere Gewichtsfunktion.e1e2e1e2e1e2

Der Beweis von Lemma 1 bleibt als einfache Übung.

Lemma 2 : Es seien zwei Gewichtsfunktionen und w 2 so, dass wenn e 1 < w 1 e 2 ist , dann e 1 < w 2 e 2 . Dann sind sie vergleichbar.w1w2e1<w1e2e1<w2e2

(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 ,w2w1

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.GG

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 alsmGw1mw2e1e2w1e1e2w2auch. 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 findenw1w2mw2w2. 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 wmw1w2mw2m .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 Algorithmus zum Löschen schwerer Kanten. Beginnen Sie mit allen Kanten. Suchen Sie wiederholt einen Zyklus und entfernen Sie eine der schwersten Kanten, bis kein Zyklus mehr vorhanden ist.
  • der Add-Non-Heavy-Edge-Algorithmus. Beginnen Sie mit dem leeren Satz. Durch alle Kanten iterieren. Jede Kante wird hinzugefügt und, falls ein Zyklus gebildet wird, eine der schwersten Kanten entfernt.
  • der Algorithmus zum Ersetzen durch leichtere Kanten. Beginnen Sie mit einem der Spanning - Tree - . Finden Sie den Zyklus in T sowie eine Kante e nicht in T . Wenn eine Kante t in diesem Zyklus ist schwerer als e , entfernen t von T und fügen e zu T . Wiederholen, bis wir das Gewicht von T nicht mehr reduzieren können.TTeTtetTeTT

Der folgende MST-Algorithmus ist nicht vergleichbar.

  • der gradabhängige Kruskal-Algorithmus, der Kruskal-Algorithmus mit der folgenden Modifikation. Angenommen, wenn wir eine Kante mit dem minimalen Gewicht von entfernen wollen, wie in der Beschreibung des Kruskal-Algorithmus in Wikipedia , haben wir mehrere Kanten mit dem minimalen Gewicht zur Auswahl. Die Kante, die wir entfernen möchten, ist eine Kante, deren Gradsumme der beiden Scheitelpunkte die größte unter allen Auswahlmöglichkeiten ist. Dieser Algorithmus kann nicht mit dem Vergleich kompatibel sein, da der MST { a b , b c , c d } des Graphen mit den Eckpunkten a , b , c und der Kante a b nicht gefunden wirdS{einb,bc,cd}ein,b,ceinbvon Gewicht und Kanten b c , c d , d b von Gewicht 2 . Dieser Algorithmus wird aufgrund dieser unnötigen Modifikation als pathologisch angesehen.1bc,cd,db2

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

  • Erstellen Sie einen Graphen mit den gleichen Eckpunkten wie G, jedoch ohne Kanten. Also ist F ein Wald von getrennten Bäumen eines einzelnen Scheitelpunkts.FGF
  • Erstellen Sie eine Menge die alle Kanten im Diagramm enthält.S
  • während nicht leer ist und F noch nicht überspannt SF
    • eine Kante mit minimalem Gewicht von wählen .S
    • diese Kante aus entfernen .S
    • Wenn diese Kante zwei verschiedene Bäume verbindet, fügen Sie sie dem Wald und kombinieren Sie zwei Bäume zu einem einzigen BaumF
  • Ausgang .F

w1w2GSw1w2

Ein Algorithmus ist vergleichbar, wenn er in drei Schritten beschrieben werden kann.

  1. Mach etwas, bei dem es nicht um Gewicht geht.
  2. Wählen Sie eine Kante mit dem geringsten Gewicht in einem bestimmten Satz von Kanten
  3. Wählen Sie eine Kante mit dem maximalen Gewicht in einem bestimmten Satz von Kanten

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

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.