Borůvka-Algorithmus: Unterschied zwischen den Versionen
Aus KGS-Wiki
Sn (Diskussion | Beiträge) K (Link gefixt) |
Sn (Diskussion | Beiträge) K (Beispielgraphen durch Vorlageneinbindung ersetzt (sooooo guuuuuut...)) |
||
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{Thumbnailbox| | {{Thumbnailbox| | ||
INHALT={{ | INHALT={{Beispielgraph}} | ||
}} | |||
|CAPTION=Ein Beispielgraph}} | |CAPTION=Ein Beispielgraph}} | ||
Zeile 23: | Zeile 10: | ||
# Erzeuge einen neuen Graphen <code>T</code>, der später der gesuchte Spannbaum wird. | # Erzeuge einen neuen Graphen <code>T</code>, der später der gesuchte Spannbaum wird. | ||
# Füge alle Knoten, aber keine Kanten des Graphen <code>G</code> zu <code>T</code> hinzu. | # Füge alle Knoten, aber keine Kanten des Graphen <code>G</code> zu <code>T</code> hinzu. | ||
# Wiederhole die folgenden Schritte, bis <code>T</code> [[ | # Wiederhole die folgenden Schritte, bis <code>T</code> [[Graph#(Un-)zusammenhängende_Graphen|zusammenhängend]] ist: | ||
## Füge zu jeder | ## Füge zu jeder Zusammenhangskomponente von <code>T</code> deren kleinste ausgehende Kante in <code>G</code> hinzu. | ||
== Beispiel == | == Beispiel == | ||
Zeile 33: | Zeile 20: | ||
|INHALT= | |INHALT= | ||
{{Thumbnailbox| | {{Thumbnailbox| | ||
INHALT={{ | INHALT={{Beispielgraph|A=red|B=green|C=blue|D=purple|E=orange|link=lightgray}} | ||
}} | |||
|CAPTION=Vorbereitung: Jeder Knoten bildet eine eigene Zusammenhangskomponente. | |CAPTION=Vorbereitung: Jeder Knoten bildet eine eigene Zusammenhangskomponente. | ||
|ALIGN=left | |ALIGN=left | ||
Zeile 59: | Zeile 26: | ||
{{Thumbnailbox| | {{Thumbnailbox| | ||
INHALT={{ | INHALT={{Beispielgraph|A=red|B=green|C=blue|D=purple|E=orange|link=lightgray|AC=red|BE=green|CD=purple}} | ||
}} | |||
|CAPTION=Schritt 1: Die kleinsten ausgehenden Kanten von <math>C</math> und <math>E</math><br>sind zugleich die kleinsten ausgehenden Kanten von <math>A</math> und <math>B</math>. | |CAPTION=Schritt 1: Die kleinsten ausgehenden Kanten von <math>C</math> und <math>E</math><br>sind zugleich die kleinsten ausgehenden Kanten von <math>A</math> und <math>B</math>. | ||
|ALIGN=left | |ALIGN=left | ||
Zeile 88: | Zeile 32: | ||
{{Thumbnailbox| | {{Thumbnailbox| | ||
INHALT={{ | INHALT={{Beispielgraph|A=red|B=green|C=red|D=red|E=green|link=lightgray|AC=red|BE=green|CD=red|ADDITA=subgraph acd["{A, C, D}"]; a; c; d; end; subgraph be["{B, E}"]; b; e; end; style acd stroke:red, stroke-width: 3px; style be stroke:green, stroke-width: 3px;}} | ||
subgraph acd["{A, C, D}"] | |||
a | |||
c | |||
d | |||
end | |||
subgraph be["{B, E}"] | |||
style acd stroke:red, stroke-width: 3px; | |||
style be stroke:green, stroke-width: 3px; | |||
}} | |||
|CAPTION=Schritt 2: Fasse <math>\{A,C,D\}</math> und <math>\{B,E\}</math> zu Zusammenhangskomponenten zusammen. | |CAPTION=Schritt 2: Fasse <math>\{A,C,D\}</math> und <math>\{B,E\}</math> zu Zusammenhangskomponenten zusammen. | ||
|ALIGN=left | |ALIGN=left | ||
Zeile 123: | Zeile 38: | ||
{{Thumbnailbox| | {{Thumbnailbox| | ||
INHALT={{ | INHALT={{Beispielgraph|A=red|B=green|C=red|D=red|E=green|link=lightgray|AC=red|BE=green|CD=red|AB=red|ADDITA=subgraph acd["{A, C, D}"]; a; c; d; end; subgraph be["{B, E}"]; b; e; end; style acd stroke:red, stroke-width: 3px; style be stroke:green, stroke-width: 3px;}} | ||
subgraph acd["{A, C, D}"] | |||
a | |||
c | |||
d | |||
end | |||
subgraph be["{B, E}"] | |||
style acd stroke:red, stroke-width: 3px; | |||
style be stroke:green, stroke-width: 3px; | |||
}} | |||
|CAPTION=Schritt 3: Die kleinste ausgehende Kante von <math>\{A,C,D\}</math><br>ist zugleich die kleinste ausgehende Kante von <math>\{B,E\}</math>. | |CAPTION=Schritt 3: Die kleinste ausgehende Kante von <math>\{A,C,D\}</math><br>ist zugleich die kleinste ausgehende Kante von <math>\{B,E\}</math>. | ||
|ALIGN=left | |ALIGN=left | ||
Zeile 159: | Zeile 44: | ||
{{Thumbnailbox| | {{Thumbnailbox| | ||
INHALT={{ | INHALT={{Beispielgraph|A=red|B=red|C=red|D=red|E=red|link=lightgray|AC=red|BE=red|CD=red|AB=red|ADDITA=subgraph abcde["{A, B, C, D, E}"]; a; b; c; d; e; end; style abcde stroke:red, stroke-width: 3px;}} | ||
subgraph abcde["{A, B, C, D, E}"] | |||
a | |||
b | |||
c | |||
d | |||
e | |||
end | |||
style abcde stroke:red, stroke-width: 3px; | |||
}} | |||
|CAPTION=Schritt 3: <math>\{A,B,C,D,E\}</math> bilden nun eine Zusammenhangskomponente. | |CAPTION=Schritt 3: <math>\{A,B,C,D,E\}</math> bilden nun eine Zusammenhangskomponente. | ||
|ALIGN=left | |ALIGN=left |
Aktuelle Version vom 4. Dezember 2023, 15:14 Uhr
Der Borůvka-Algorithmus ist ein Algorithmus, der zu einem gegebenen gewichteten Graphen einen minimalen Spannbaum erzeugt.
Der Algorithmus wurde 1926 von Otakar Borůvka entworfen und arbeitet wie folgt:
- Gegeben sei ein Graph
G
. - Erzeuge einen neuen Graphen
T
, der später der gesuchte Spannbaum wird. - Füge alle Knoten, aber keine Kanten des Graphen
G
zuT
hinzu. - Wiederhole die folgenden Schritte, bis
T
zusammenhängend ist:- Füge zu jeder Zusammenhangskomponente von
T
deren kleinste ausgehende Kante inG
hinzu.
- Füge zu jeder Zusammenhangskomponente von
Beispiel
So erzeugt der Borůvka-Algorithmus aus dem Beispielgraphen einen MST:
Da nun zusammenhängend ist, terminiert der Algorithmus.