Borůvka-Algorithmus: Unterschied zwischen den Versionen
Aus KGS-Wiki
Sn (Diskussion | Beiträge) (→Beispiel: Layout) |
Sn (Diskussion | Beiträge) (Beispiel: Zusammenhangskomponenten besser visualisiert) |
||
Zeile 89: | Zeile 89: | ||
{{Thumbnailbox| | {{Thumbnailbox| | ||
INHALT={{#mermaid:graph LR | INHALT={{#mermaid:graph LR | ||
subgraph acd["{A, C, D}"] | |||
a((A)) | a((A)) | ||
c((C)) | c((C)) | ||
d((D)) | d((D)) | ||
end | |||
subgraph be["{B, E}"] | |||
b((B)) | |||
e((E)) | e((E)) | ||
end | |||
a -- 3 --- b | a -- 3 --- b | ||
a -- 1 --- c | a -- 1 --- c | ||
Zeile 107: | Zeile 111: | ||
style d stroke:red; | style d stroke:red; | ||
style e stroke:green; | style e stroke:green; | ||
style acd stroke:red, stroke-width: 3px; | |||
style be stroke:green, stroke-width: 3px; | |||
linkStyle default stroke:lightgray, fill:none; | linkStyle default stroke:lightgray, fill:none; | ||
linkStyle 1 stroke:red, stroke-width: 3px; | linkStyle 1 stroke:red, stroke-width: 3px; | ||
Zeile 118: | Zeile 124: | ||
{{Thumbnailbox| | {{Thumbnailbox| | ||
INHALT={{#mermaid:graph LR | INHALT={{#mermaid:graph LR | ||
subgraph acd["{A, C, D}"] | |||
a((A)) | a((A)) | ||
c((C)) | c((C)) | ||
d((D)) | d((D)) | ||
end | |||
subgraph be["{B, E}"] | |||
b((B)) | |||
e((E)) | e((E)) | ||
end | |||
a -- 3 --- b | a -- 3 --- b | ||
a -- 1 --- c | a -- 1 --- c | ||
Zeile 136: | Zeile 146: | ||
style d stroke:red; | style d stroke:red; | ||
style e stroke:green; | style e stroke:green; | ||
style acd stroke:red, stroke-width: 3px; | |||
style be stroke:green, stroke-width: 3px; | |||
linkStyle default stroke:lightgray, fill:none; | linkStyle default stroke:lightgray, fill:none; | ||
linkStyle 1 stroke:red, stroke-width: 3px; | linkStyle 1 stroke:red, stroke-width: 3px; | ||
Zeile 148: | Zeile 160: | ||
{{Thumbnailbox| | {{Thumbnailbox| | ||
INHALT={{#mermaid:graph LR | INHALT={{#mermaid:graph LR | ||
subgraph abcde["{A, B, C, D, E}"] | |||
a((A)) | a((A)) | ||
b((B)) | b((B)) | ||
Zeile 160: | Zeile 173: | ||
c -- 2 --- d | c -- 2 --- d | ||
d -- 7 --- e | d -- 7 --- e | ||
end | |||
classDef default stroke:red, stroke-width: 3px;linkStyle default stroke:lightgray, fill:none; | classDef default stroke:red, stroke-width: 3px;linkStyle default stroke:lightgray, fill:none; | ||
style abcde stroke:red, stroke-width: 3px; | |||
linkStyle 1 stroke:red, stroke-width: 3px; | linkStyle 1 stroke:red, stroke-width: 3px; | ||
linkStyle 4 stroke:red, stroke-width: 3px; | linkStyle 4 stroke:red, stroke-width: 3px; |
Version vom 31. März 2023, 08:48 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.