Der Algorithmus von Kruskal

Der Algorithmus von Kruskal ist ein Algorithmus in der Graph-Theorie, die einen minimalen Überspannen-Baum für einen verbundenen belasteten Graphen findet. Das bedeutet, dass es eine Teilmenge der Ränder findet, die einen Baum bildet, der jeden Scheitelpunkt einschließt, wo das Gesamtgewicht aller Ränder im Baum minimiert wird. Wenn der Graph nicht verbunden wird, dann findet es einen minimalen Überspannen-Wald (ein minimaler Überspannen-Baum für jeden verbundenen Bestandteil). Der Algorithmus von Kruskal ist ein Beispiel eines gierigen Algorithmus.

Dieser Algorithmus ist zuerst in Verhandlungen der amerikanischen Mathematischen Gesellschaft, Seiten 48-50 1956 erschienen, und wurde von Joseph Kruskal geschrieben.

Andere Algorithmen für dieses Problem schließen den Algorithmus von Prim ein, Rückseite - Löschen Algorithmus und Borůvka's Algorithmus.

Beschreibung

  • schaffen Sie den Wald F (eine Reihe von Bäumen), wo jeder Scheitelpunkt im Graphen ein getrennter Baum ist
  • schaffen Sie einen Satz S, alle Ränder im Graphen enthaltend
  • während S nichtleer ist und F noch nicht abmisst
  • entfernen Sie einen Rand mit dem minimalen Gewicht von S
  • wenn dieser Rand zwei verschiedene Bäume verbindet, dann fügen Sie es zum Wald hinzu, zwei Bäume in einen einzelnen Baum verbindend
  • verwerfen Sie sonst diesen Rand.

An der Beendigung des Algorithmus hat der Wald nur einen Bestandteil und bildet einen minimalen Überspannen-Baum des Graphen

Leistung

Wo E die Zahl von Rändern im Graphen ist und V die Zahl von Scheitelpunkten ist, wie man zeigen kann, läuft der Algorithmus von Kruskal in O (E loggen E) Zeit, oder gleichwertig, O (E loggen V) Zeit, alle mit einfachen Datenstrukturen. Diese Laufzeiten sind weil gleichwertig:

  • E ist höchstens V und ist O (loggen Sie V).
  • Wenn wir isolierte Scheitelpunkte ignorieren, die jeder ihr eigener Bestandteil des minimalen Überspannen-Waldes, V  E+1 sein werden, so loggen Sie V ist O (loggen Sie E).

Wir können erreichen das hat wie folgt gebunden: Die erste Sorte die Ränder durch das Gewicht mit einer Vergleich-Sorte in O (E loggen E), Zeit; das erlaubt den Schritt "entfernen einen Rand mit dem minimalen Gewicht von S", um in der unveränderlichen Zeit zu funktionieren. Dann verwenden wir eine Datenstruktur des zusammenhanglosen Satzes (Union&Find), um nachzugehen, von denen Scheitelpunkte in der Bestandteile sind. Wir müssen O (E) Operationen durchführen, zwei 'finden' Operationen und vielleicht eine Vereinigung für jeden Rand. Sogar eine einfache Datenstruktur des zusammenhanglosen Satzes wie Wälder des zusammenhanglosen Satzes mit der Vereinigung durch die Reihe kann O (E) durchführen Operationen in O (E loggen V) Zeit. So ist die Gesamtzeit O (E loggen E) = O (E loggen V).

Vorausgesetzt, dass die Ränder entweder bereits sortiert werden oder in der geradlinigen Zeit sortiert werden können (zum Beispiel mit dem Zählen der Sorte oder Basis-Sorte), kann der Algorithmus hoch entwickeltere Datenstruktur des zusammenhanglosen Satzes verwenden, um in O (E α (V)) Zeit zu führen, wo α das äußerst langsam wachsende Gegenteil der einzeln geschätzten Funktion von Ackermann ist.

Beispiel

Beweis der Genauigkeit

Der Beweis besteht aus zwei Teilen. Erstens wird es bewiesen, dass der Algorithmus einen Überspannen-Baum erzeugt. Zweitens wird es bewiesen, dass der gebaute Überspannen-Baum des minimalen Gewichts ist.

Das Überspannen des Baums

Lassen Sie, ein verbundener, belasteter Graph zu sein und zu lassen, der Subgraph von erzeugten durch den Algorithmus zu sein. kann keinen Zyklus haben, seitdem der letzte zu diesem Zyklus hinzugefügte Rand innerhalb eines Subbaums und nicht zwischen zwei verschiedenen Bäumen gewesen wäre. kann nicht getrennt werden, seitdem der erste gestoßene Rand, der sich zwei Bestandteilen dessen anschließt, durch den Algorithmus hinzugefügt worden sein würde. So, ist ein Überspannen-Baum dessen.

Minimality

Wir zeigen, dass der folgende Vorschlag P durch die Induktion wahr ist: Wenn F der Satz von in einer Bühne des Algorithmus gewählten Rändern ist, dann gibt es einen minimalen Überspannen-Baum, der F enthält.

  • Klar ist P am Anfang wahr, wenn F leer ist: Jeder minimale Überspannen-Baum wird tun, und dort besteht derjenige, weil ein belasteter verbundener Graph immer einen minimalen Überspannen-Baum hat.
  • Nehmen Sie jetzt an, dass P für einen Nichtendrand wahr ist, setzt F und lassen T ein minimaler Überspannen-Baum sein, der F enthält. Wenn der folgende gewählte Rand e auch in T ist, dann ist P für F + e wahr. Sonst T + hat e einen Zyklus C, und es gibt einen anderen Rand f, der in C, aber nicht F. ist (Wenn es keinen solchen Rand f gab, dann könnte e nicht zu F hinzugefügt worden sein, seit dem Tun hätte so den Zyklus C. geschaffen) Dann T − f + ist e ein Baum, und er hat dasselbe Gewicht wie T, da T minimales Gewicht hat und das Gewicht von f weniger nicht sein kann als das Gewicht von e, sonst hätte der Algorithmus f statt e gewählt. So T − f + ist e ein minimaler Überspannen-Baum, der F + e enthält, und wieder hält P.
  • Deshalb, durch den Grundsatz der Induktion, hält P, als F ein Überspannen-Baum geworden ist, der nur möglich ist, wenn F ein minimaler Überspannen-Baum selbst ist.

Siehe auch

  • Rückseite - Löscht Algorithmus
  • Der Algorithmus von Dijkstra
  • Der Algorithmus von Prim
  • Einzelne Verbindung, die sich sammelt
  • Joseph. B. Kruskal: Auf dem Kürzesten Überspannen-Subbaum eines Graphen und des Handelsreisender-Problems. In: Verhandlungen der amerikanischen Mathematischen Gesellschaft, Vol 7, Nr. 1 (Febr 1956), Seiten 48-50
  • Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest und Clifford Stein. Einführung in Algorithmen, die Zweite Ausgabe. MIT Presse und McGraw-Hügel, 2001. Internationale Standardbuchnummer 0-262-03293-7. Abschnitt 23.2: Die Algorithmen von Kruskal und Prim, Seiten 567-574.
  • Michael T. Goodrich und Roberto Tamassia. Datenstrukturen und Algorithmen in Java, der Vierten Ausgabe. John Wiley & Sons, Inc., 2006. Internationale Standardbuchnummer 0-471-73884-0. Abschnitt 13.7.1: Der Algorithmus von Kruskal, Seiten 632.

Links


Vereinigte Staaten Schiff Vincennes / Algorithmus von Ford-Fulkerson
Impressum & Datenschutz