Graphentheorie (Teschl/Teschl 15-17)

Werbung
Graphentheorie (Teschl/Teschl 15-17)
Ein
Graph
besteht aus
Knoten,
die durch
Kanten
miteinander
verbunden sind.
graphen.pdf, Seite 1
Anwendungen
I Netzwerke (Verkehr, Daten,...)
I Datenstrukturen
I Suchbäume
I Bildverarbeitung
I Rechnerarchitektur
I
MarkowKetten
(Übergangswahrscheinlichkeiten)
graphen.pdf, Seite 2
Denition
Graph G = (V , E ) besteht aus einer Menge V
(oder Ecken, englisch vertices) und einer Menge E
Ein
von
Knoten
von Kanten
(englisch edges).
Dabei ist eine Kante ein Paar
Bei einem
ungerichteten
e
von Knoten
a, b ∈ V .
Graphen spielt die Reihenfolge keine
Rolle, man schreibt
e = {a , b }
oder kurz
e = ab (= ba).
Bei einem
gerichteten
Graphen ist
e
eine Kante von
a
nach
b
und man schreibt
e = (a, b)
oder kurz
e = ab (=
6 ba).
Die Knoten- und die Kantenmenge können endlich oder
abzählbar sein, wir werden uns auf den endlichen Fall
beschränken.
graphen.pdf, Seite 3
Geometrische Darstellung
Die Kanten werden als Verbindungslinien zwischen den Knoten
dargestellt.
Beispiel:
Geometrische Darstellung
und Mengenschreibweise des ungerichteten Graphen
G = (V , E )
mit
V = {1, 2, 3, 4, 5} und
n
o
E = {1, 2}, {1, 4}, {2, 3}, {2, 4}, {2, 5}, {3, 5}, {4, 5}, {5, 5}
= {12, 14, 23, 24, 25, 35, 45, 55}
graphen.pdf, Seite 4
Gerichtete Graphen
Hier werden die Kanten als Pfeile dargestellt.
Beispiel:
Geometrische Darstellung
und Mengenschreibweise des gerichteten Graphen
G = (V , E )
V = {1, 2, 3, 4} und
n
o
E = (1, 2), (2, 3), (2, 4), (3, 3), (3, 4), (4, 1), (4, 3)
mit
= {12, 23, 24, 33, 34, 41, 43}
graphen.pdf, Seite 5
Bezeichnungen
für ungerichtete Graphen:
I Zwei Knoten heiÿen
adjazent
oder
benachbart,
wenn sie
durch eine Kante verbunden sind.
I Zwei Kanten heiÿen
inzident,
wenn sie einen
gemeinsamen Knoten haben.
I Ein Knoten und eine Kante heiÿen
inzident,
wenn sie sich
berühren.
I Der
Grad
oder die
Ordnung
eines Knoten ist die Zahl der
mit ihm inzidenten Kanten.
Bei gerichteten Graphen können die Begrie geeignet
modiziert werden. Dabei wird oft zwischen eingehenden und
ausgehenden Kanten bei einem Knoten unterschieden.
graphen.pdf, Seite 6
Beispiel: Knotengrade (Ordnungen) in ungerichtetem
Graphen
graphen.pdf, Seite 7
Teilgraphen
Teilgraph von G = (V , E )
V ⊂ V und E 0 ⊂ E .
Ein
0
Teilgraph
G 0 = (V 0 , E 0 )
von
ist ein Graph
G = (V , E )
G 0 = (V 0 , E 0 )
mit
rot markiert
graphen.pdf, Seite 8
Isomorphe Graphen
Ĝ = (V̂ , Ê ) sind isomorph, wenn
f : V → V̂ gibt, sodass den Kanten
e = vw ∈ E die Kanten ê = f (v )f (w ) ∈ Ê entsprechen.
Die Abblidung f wird als Isomorphismus bezeichnet.
Die Graphen
G = (V , E )
und
es eine bijektive Abbildung
Interpretation
Ein Isomorphismus
f
beschreibt lediglich eine Umbenennung
der Knoten, ohne dass die Struktur des Graphen verändert
wird.
Beispiel
Die ungerichteten Graphen
G = (V , E )
und
V = {1, 2, 3, 4}
und
E = {12, 13, 23, 24}
V̂ = {a, b, c , d }
und
Ê = {ab, ac , ad , cd }
(Betrachte
f (1) = c , f (2) = a, f (3) = d
Ĝ = (V̂ , Ê )
mit
sowie
sind isomorph.
und
f (4) = b)
graphen.pdf, Seite 9
Isomorphe Graphen
Nicht isomorphe Graphen
graphen.pdf, Seite 10
Isomorphie und Knotenordnung
Isomorphe Graphen haben die gleiche Anzahl von Knoten und
Kanten, die Ordnung von
der Ordnung von
v
f (v )
muss für jeden Knoten gleich
sein.
Damit gilt:
Haben zwei Graphen eine unterschiedliche Anzahl von Knoten
oder eine unterschiedliche Anzahl von Kanten oder sind die
Knotengrade verschieden, so können sie nicht isomorph sein.
Im Beispiel
auf der letzten Seite unten haben beide Graphen jeweils
4 Knoten und 4 Kanten. Jedoch der linke Graph
G = (V , E )
Knoten mit Ordung 1 und 3, während im rechten Graphen
Ĝ = (V̂ , Ê )
alle Knoten die Ordnung 2 haben. Daher sind die
beiden Graphen nicht isomorph.
graphen.pdf, Seite 11
Nachweis der Isomorphie
Um zu begründen, dass zwei Graphen nicht isomorph sind,
können die Überlegungen auf der letzten Seite benutzt werden.
Der Nachweis, dass zwei Graphen isomorph sind, kann dadurch
erfolgen, dass ein Isomorphismus
f
explizit angegeben wird.
Im vielen Fällen ist es jedoch nicht ohne weiteres feststellbar,
ob zwei gegebene Graphen isomorph sind. Zwei Graphen mit
gleichen Knoten- und Kantenzahl und den gleichen
Knotengraden sind noch nicht automatisch isomorph.
graphen.pdf, Seite 12
Speichern von Graphen im Computer
ist auf unterschiedliche Weise möglich. Gebräuchliche
Darstellunsformen sind:
I
Adjazenzmatrix:
Matrix (Tabelle), deren Zeilen und
Spalten den Knoten entsprechen mit Einträgen 0 oder 1,
je nachdem ob eine Kante zwischen den betreenden
Knoten existiert.
Eine ungerichtete Kante
ab
führt zu zwei Einträgen in der
Adjazenzmatrix: jeweils eine 1 in Zeile a/Spalte b und in
Zeile b/Spalte a. Eine Kante in einem gerichteten
Graphen entspricht einer Eins in der Adjazenzmatrix.
I
Adjazenzliste:
a werden die Knoten b
Kante ab gibt. Auch hier
Zu jedem Knoten
aufgelistet, für die es eine
kommen ungerichtete Kanten zweimal und gerichtete
Kanten einmal vor.
I
Inzidenzmatrix:
Stellt eine tabellarische Zuordnung
zwischen inzidenten Paaren von Knoten und Kanten her.
graphen.pdf, Seite 13
Beispiel 1
Der gerichtete Graph
V = {1, 2, 3, 4}
und
G = (V , E )
mit
E = {12, 23, 24, 34, 41, 43}
ist darstellbar durch die
0
 0

 0
1

Matrix:
A=
1
0
0
0
0
1
0
1

0
1 

1 
0
:
2 :
L=
3 :
4 :
1
und die Liste:
2
3, 4
4
1, 3
Jeder Kante entspricht eine 1 in der Matrix sowie ein
Listeneintrag.
graphen.pdf, Seite 14
Beispiel 2
Der ungerichtete Graph
V = {1, 2, 3, 4}
und
G = (V , E )
mit
E = {12, 14, 23, 24, 34}
ist darstellbar durch die
0
 1

 0
1

Matrix:
A=
1
0
1
1
0
1
0
1

1
1 

1 
0
:
2 :
L=
3 :
4 :
1
und die Liste:
2, 4
1, 3, 4
2, 4
1, 2, 3
Hier führt jede Kante zu zwei Einsen in der Matrix und zwei
Listeneinträgen.
graphen.pdf, Seite 15
Bezeichnungen
Ein Graph heiÿt
I
I
einfach, wenn es zu je zwei Knoten a und b maximal eine
Kante e = ab gibt,
multipel oder Multigraph, wenn er nicht einfach ist, d. h.
es zwei Knoten gibt, die durch mehr als eine Kante
miteinander verbunden sind,
I
schlicht,
wenn einfach ist und keine
Schlingen e = aa
hat.
I Ein schlichter (gerichteter oder ungerichteter) Graph
vollständig, wenn es zu je zwei Knoten a, b ∈ V eine
Kante ab ∈ E gibt.
Eine Clique ist ein vollständiger Teilgraph, d. h. innerhalb
heiÿt
I
einer Clique sind alle Knoten miteinander verbunden.
graphen.pdf, Seite 16
vollständige Graphen
graphen.pdf, Seite 17
Planare Graphen
Ein Graph heiÿt
planar (eben, plättbar),
wenn er eine
geometrische Darstellung in der Ebene besitzt, bei der sich
keine Kanten kreuzen.
Anwendungen: Aufbau von Computerchips,
Verkehrsnetzen...
graphen.pdf, Seite 18
Eulerscher Polyedersatz
Für die geometrische Darstellung eines zusammenhängenden
planaren Graphen gilt
Knotenzahl
+ Flächenzahl = Kantenzahl + 2
Als Flächen werden alle von Kanten umschlossenen Flächen
sowie die äuÿere Fläche gezählt.
5 (Knoten) + 4 (Flächen) = 7 (Kanten) + 2
graphen.pdf, Seite 19
Beweisidee des Eulerschen Polyedersatzes
Für einen Graphen, der aus einem Knoten und keiner Kante
besteht, ist die Knotenzahl k = 1 und die Kantenzahl e = 0. Die
Ebene wird nicht in Teilächen unterteilt, so dass die Flächenzahl
f = 1 ist. Somit gilt k + f = 1 + 1 = e + 2 = 0 + 2.
Davon ausgehend kann jeder Graph durch wiederholtes Anwenden
der beiden folgenden Teilschritte konstruiert werden:
I
I
Hinzufügen eines neuen Knotens und einer Kante, die den
neuen Knoten mit einem schon vorhandenen Knoten
verbindet. Dadurch erhöht sich k und e jeweils um 1. f bleibt
unverändert, da durch diesen Schritt keine Fläche unterteilt
wird.
Hinzufügen einer neuen Kante zwischen zwei schon
vorhandenen Knoten. Dadurch erhöht sich e um 1, k bleibt
gleich. Durch diesen Schritt wird eine Fläche unterteilt, so
dass sich f um 1 erhöht.
In beiden Fällen erhöht sich k + f und e + 2 jeweils um 1, so dass
die Gleichheit erhalten bleibt.
graphen.pdf, Seite 20
Satz von Kuratowski
Ein Graph ist genau dann planar, wenn er keinen
G̃
Teilgraphen
der folgenden Form enthält:
Die Struktur des linken Graphen
G̃
entspricht einem
vollständigen Graphen mit 5 Knonten, die des rechten einem
bipartiten
Graphen mit 2 mal 3 Knoten.
graphen.pdf, Seite 21
Wege
Ein
Weg (oder Kantenzug)
von
a
nach
b
ist eine Folge
aneinandergereihter Kanten
a1 b1 , a2 b2 , ..., a b
n
mit
n
a1 = a, b = b
n
und
a +1 = b
i
i
für
i = 1, ..., n − 1,
d. h. der Endpunkt jeder Kante ist Anfangspunkt der nächsten.
Kurzschreibweise:
Bei einem
a1 , a2 , a3 , ..., a , b
Pfad
n
oder
geschlossenen Weg (Zyklus)
b = a1 .
dem Anfangspunkt, d. h.
Ein
n
a1 a2 a3 ...a b
n
n
ist der Endpunkt gleich
n
ist ein Weg, bei dem kein Knoten mehrfach
durchlaufen wird.
Ein
Kreis
ist ein geschlossener Pfad.
graphen.pdf, Seite 22
abcdefg
= a, b , c , d , e , f , g
= ab, bc , cd , de , ef , fg
mit Anfangspunkt a
und Endpunkt g :
Pfad von a nach g Pfad
Bemerkungen
I Die Begrie Weg, Pfad und Kreis sind in der Literatur
nicht ganz einheitlich deniert.
a und b kann ein Pfad von a nach
Tiefensuche (Depth-First Search) oder
I Zu gegebenen Knoten
b
z. B. mittels der
der
Breitensuche
(Breadth First Search) gefunden werden.
graphen.pdf, Seite 23
Zusammenhang
Ein zusammenhängender Graph ist ein Graph, der sich nicht in
kleinere Teile zerlegen lässt:
zusammenhängend, wenn es
zu je zwei Knoten a und b einen Weg von a nach b gibt.
Ein gerichteter Graph heiÿt stark zusammenhängend,
wenn es zu je zwei Knoten a und b einen Weg von a nach
b gibt.
Ein gerichteter Graph G = (V , E ) heiÿt
zusammenhängend, wenn der ungerichtete Graph
I Ein ungerichteter Graph heiÿt
I
I
zusammenhängend ist, welcher entsteht, wenn die Kanten
e∈E
als ungerichtete Kanten interpretiert werden.
nfach zusammenhängend für n ≥ 1,
mindestens n Kanten entfernen muss, damit
I Ein Graph heiÿt
wenn man
der verbleibende Restgraph nicht mehr
zusammenhängend ist.
graphen.pdf, Seite 24
Verschiedene Formen des Zusammenhangs
graphen.pdf, Seite 25
Test auf Zusammenhang mit der Breitensuche
I Knoten werden in drei Gruppen eingeteilt (markiert):
neu, alt und unmarkiert.
I Start mit einem neuen Knoten, Rest unmarkiert,
I In jedem Schritt:
Markiere alle bislang unmarkierten Knoten, die einem
neuen Knoten benachbart sind, als neu,
Markiere alle vorher neuen Knoten als alt
I Graph zusammenhängend
⇔
Am Ende sind alle Knoten markiert.
graphen.pdf, Seite 26
Beispiel Breitensuche
neu: Startknoten
graphen.pdf, Seite 27
Beispiel Breitensuche
neu: Nachbarn des Startknoten
graphen.pdf, Seite 28
Beispiel Breitensuche
neu: Nachbarn der Nachbarn
graphen.pdf, Seite 29
Beispiel Breitensuche
neu: Entfernung 3
graphen.pdf, Seite 30
Beispiel Breitensuche
neu: Entfernung 4
graphen.pdf, Seite 31
Beispiel Breitensuche
neu: Entfernung 5
graphen.pdf, Seite 32
Beispiel Breitensuche
neu: Entfernung 6
graphen.pdf, Seite 33
Beispiel Breitensuche
neu: Entfernung 7
graphen.pdf, Seite 34
Beispiel Breitensuche
alle Knoten alt
⇒
Graph zusammenhängend
graphen.pdf, Seite 35
Zusammenhangskomponenten
G ist eine Vereinigung von zusammenhängenden
den Zusammenhangskomponeten von G .
Jeder Graph
Graphen,
Beispiel: Zusammenhangskomponenten eines nicht
zusammenhängenden Graphen
Die Bestimmung der Zusammenhangskomponenten ist möglich
mittels einer
Union-Find-Datenstruktur
(Markierung) der Knoten.
oder durch
Labeling
graphen.pdf, Seite 36
EulerZüge
Ein EulerZug ist ein Weg in einem zusammenhängenden
Graphen, der jede Kante genau einmal durchläuft.
Ist dabei der Startknoten gleich dem Endknoten, so spricht
man von einem
einem
oenen
geschlossenen EulerZug,
andernfalls von
EulerZug.
Satz
I In einem ungerichteten zusammenhängenden Graphen
existiert genau dann ein geschlossener EulerZug, wenn
der Grad aller Knoten gerade ist.
I Es gibt genau dann einen nicht geschlossenen EulerZug,
wenn zwei Knoten einen ungeraden Grad haben und der
Grad der übrigen Knoten gerade ist.
graphen.pdf, Seite 37
Königsberger Brückenproblem
Gibt es einen Weg, bei dem jede der 7 Brücken genau einmal
überquert wird?
graphen.pdf, Seite 38
Graph des Königsberger Brückenproblems
Alle 4 Knoten haben ungeraden Gard
⇒
Es gibt keinen EulerZug.
graphen.pdf, Seite 39
Konstruktion von EulerZügen mit Algorithmus von
Fleury
(1) Start in Knoten mit ungeradem Grad (falls vorhanden)
sonst Start in beliebigem Knoten
(2)
(a) Gehe entlang einer vom aktuellen Knoten a ausgehenden
Kante ab (∗) und wähle b als neuen aktuellen Knoten,
(b) Entferne diese Kante aus dem Graphen,
(c) Entferne auch den Knoten a, falls dieser nun isoliert ist,
(∗) Die Kante ist so zu wählen, dass der Graph nach Schritt
(2) zusammenhängend bleibt. Ist dies nicht möglich, so
existiert kein EulerZug.
(3) Wiederhole Schritt (2) so oft wie möglich.
graphen.pdf, Seite 40
Beispiel Algorithmus von Fleury
Bemerkung:
Im 5. Schritt (untere Reihe links) wäre es nicht
zulässig gewesen, zum Knoten unten rechts zu gehen, da dann
der Restgraph nicht mehr zusammenhängend wäre.
graphen.pdf, Seite 41
Ein HamiltonKreis
ist ein geschlossener Weg, den jeden Knoten genau einmal
durchläuft.
Es gibt weder allgemeine Kriterien für die Existenz noch
allgemein gut funktionierende Algorithmen zur Konstruktion
von HamiltonKreisen.
Faustregel: Je mehr Kanten ein Graph hat, desto gröÿer ist die
Chance, einen HamiltonKreis zu nden.
graphen.pdf, Seite 42
Bäume
Ein
Baum
ist ein zusammenhängender Graph, in dem es keinen
Kreis gibt.
Eigenschaften
I Ein Baum mit
n
n − 1 Kanten,
mit n Knoten und n − 1
Knoten hat genau
I Jeder zusammenhängende Graph
Kanten ist ein Baum,
I Zwischen je zwei Knoten gibt es genau einen Pfad,
I Entfernt man eine Kante, ist der Restgraph nicht mehr
zusammenhängend,
I Fügt man eine Kante hinzu, entsteht ein Kreis,
I Ein Baum ist planar und unterteilt die Ebene nicht in
Teilächen.
graphen.pdf, Seite 43
Beispiele
Anwendungen
I Struktur von Datenbanken (-> Suchbäume)
I Minimale aufspannende Bäume,
Steinerbäume
graphen.pdf, Seite 44
Bemerkung
Wählt man in einem (ungerichteten) Baum einen (beliebigen)
Knoten als
Wurzel,
so kann man jeder Kante auf eindeutige
Weise ein Richtung zuordnen, die von der Wurzel weg führt.
Dann gibt es zu jedem Knoten
der Wurzel nach
v.
(v1 , v2 ) ∈ R ⇔ Es
v
Die Relation
einen gerichteten Weg von
R
auf der Knotenmenge
gibt einen gerichteten Weg von
deniert eine partielle Ordnung auf
v1
V
nach
v2
V.
graphen.pdf, Seite 45
Gewichtete Graphen
sind Graphen, bei denen jeder Kante eine (reelle) Zahl
(Gewicht) zugeordnet ist.
Formal:
Ein gewichteter Graph
Knotenmenge
g : E → R.
V,
G = (V , E , g ) besteht aus der
E und einer Abbildung
der Kantenmenge
Mögliche Interpretation der Gewichte
I Entfernung,
I Kapazität (z. B. bei Datenleitung),
I Übergangswahrscheinlichkeit.
Darstellung im Computer
In der Adjazenzmatrix kann für jede Kante statt 1 das Gewicht
der Kante abgespeichert werden.
graphen.pdf, Seite 46
Graphische Darstellung eines gewichteten Graphen
Bei einer graphischen Darstellung werden die Gewichte in der
Regel neben die Kanten geschrieben.
graphen.pdf, Seite 47
Denition: Gerüst
Sei
G = (V , E )
ein zusammenhängender ungerichteter Graph.
aufspannender Baum (oder ein Gerüst)
G̃ = (V , Ẽ ) mit Ẽ ⊂ E , der ein Baum ist.
Ein
ist ein Teilgraph
Beispiel
Verschiedene Gerüste eines Graphen
graphen.pdf, Seite 48
Minimale Gerüste
Ist
G
ein gewichteter Graph, so ist
G̃ ein minimales Gerüst,
Ẽ den kleinstmöglichen
wenn die Summe aller Gewichte aus
Wert unter allen aufspannenden Bäumen annimmt.
Beispiel
Minimales Gerüst
graphen.pdf, Seite 49
Der Algorithmus von Kruskal
zur Bestimmung eines minimalen Gerüstes durchläuft alle
Kanten in aufsteigender Reihenfolge nach ihrem Gewicht und
fügt dabei diejenigen Kanten dem minimalen Gerüst hinzu,
durch die kein Kreis entsteht. Vorgehen:
Gegeben sei ein ungerichteter gewichteter Graph
mit Gewichten
g : E → R.
G = (V , E )
I Orde die Kanten in aufsteigender Reihenfolge nach ihrem
Gewicht, d. h.
für alle
i.
E = {e1 , ..., e },
n
I Starte mit dem Graph
I Setze
sonst
Dann ist
G0 = (V , E0 )
E = E −1 ∪ {e },
E = E −1 .
i
i
i
i
i
G̃ = (V , E )
n
so dass
g (e ) ≤ g (e +1 )
mit
i
i
E0 = ∅,
falls dadurch kein Kreis entsteht,
minimales Gerüst.
graphen.pdf, Seite 50
Beispiel Algorithmus von Kruskal
G0 = (V , ∅),
erste betrachtete Kante
e1 ,
wird hinzugefügt
graphen.pdf, Seite 51
Beispiel Algorithmus von Kruskal
G1 = (V , E1 ),
nächste Kante
e2 ,
wird hinzugefügt
graphen.pdf, Seite 52
Beispiel Algorithmus von Kruskal
G2 = (V , E2 ),
nächste Kante
e3 ,
wird hinzugefügt
graphen.pdf, Seite 53
Beispiel Algorithmus von Kruskal
G3 = (V , E3 ),
nächste Kante
e4 ,
wird hinzugefügt
graphen.pdf, Seite 54
Beispiel Algorithmus von Kruskal
G4 = (V , E4 ),
nächste Kante
e5 ,
wird hinzugefügt
graphen.pdf, Seite 55
Beispiel Algorithmus von Kruskal
G5 = (V , E5 ),
nächste Kante
e6 ,
wird hinzugefügt
graphen.pdf, Seite 56
Beispiel Algorithmus von Kruskal
G6 = (V , E6 ),
nächste Kante
e7 ,
wird nicht hinzugefügt, da sonst ein Kreis entsteht
graphen.pdf, Seite 57
Beispiel Algorithmus von Kruskal
G7 = (V , E7 ),
nächste Kante
e8 ,
wird hinzugefügt
graphen.pdf, Seite 58
Beispiel Algorithmus von Kruskal
G8 = (V , E8 ),
nächste Kante
e9 ,
wird hinzugefügt
graphen.pdf, Seite 59
Beispiel Algorithmus von Kruskal
G9 = (V , E9 ),
nächste Kante
e10 ,
wird hinzugefügt
graphen.pdf, Seite 60
Beispiel Algorithmus von Kruskal
G10 = (V , E10 ),
nächste Kante
e11 ,
wird nicht hinzugefügt, da sonst ein Kreis entsteht
graphen.pdf, Seite 61
Beispiel Algorithmus von Kruskal
G11 = (V , E11 ),
nächste Kante
e12 ,
wird hinzugefügt
graphen.pdf, Seite 62
Beispiel Algorithmus von Kruskal
G12 = (V , E12 ),
nächste Kante
e13 ,
wird nicht hinzugefügt, da sonst ein Kreis entsteht
graphen.pdf, Seite 63
Beispiel Algorithmus von Kruskal
G13 = (V , E13 ),
nächste Kante
e14 ,
wird nicht hinzugefügt, da sonst ein Kreis entsteht
graphen.pdf, Seite 64
Beispiel Algorithmus von Kruskal
G14 = (V , E14 ),
nächste Kante
e15 ,
wird nicht hinzugefügt, da sonst ein Kreis entsteht
graphen.pdf, Seite 65
Beispiel Algorithmus von Kruskal
G15 = (V , E15 ),
nächste Kante
e16 ,
wird hinzugefügt
graphen.pdf, Seite 66
Beispiel Algorithmus von Kruskal
G16 = (V , E16 ),
nächste Kante
e17 ,
wird nicht hinzugefügt, da sonst ein Kreis entsteht
graphen.pdf, Seite 67
Beispiel Algorithmus von Kruskal: Ende
G19 = (V , E19 )
Alle Kanten sind abgearbeitet und alle Knoten verbunden
graphen.pdf, Seite 68
Kanten mit gleichem Gewicht
Haben mehrere Kanten das gleiche Gewicht, so ist die
Sortierung der Kanten nicht eindeutig. Kanten mit gleichem
Gewicht können in beliebiger Reihenfolge abgearbeitet werden.
Das Ergebnis des Algorithmus hängt dann im Allgemeinen von
dieser Reihenfolge ab und ist somit nicht eindeutig. In jedem
Fall liefert der Algorithmus von Kruskal aber ein minimales
Gerüst.
Ende des Algorithmus
Der Algorithmus kann beendet werden, sobald
ausgewählt sind, wobei
n
n−1
Kanten
die Zahl der Knoten ist.
Im Beispiel ist dies bei der Kantenmenge
E16
der Fall. Dann
sind alle Knoten durch Wege verbunden. Bei der Abarbeitung
der verbleibenden Kanten (im Beispiel alle Kanten mit Gewicht
> 26)
würden dem Spannbaum keine neuen Kanten mehr
hinzugefügt werden.
graphen.pdf, Seite 69
Bemerkungen
I Um feststellen zu können, wann durch hinzufügen einer
neuen Kante ein geschlossener Weg entstehen würde,
werden die Knoten in der Praxis markiert. Dabei
bekommen alle Knoten, die zur selben
Zusammenhangskomponente des schon bestimmten
Teilgraphen gehören, die selbe Markierung. Dies kann
z. B. mit einer UnionFindDatenstruktur geschehen.
I Der Algorithmus von Kruskal benötigt
Operationen, wobei
m = #E
O (m · log m)
die Anzahl der Kanten ist.
Dabei ist der gröÿte Aufwand durch das Sortieren der
Kanten gegeben.
I Der Algorithmus von Kruskal ist ein sogenannter
Greedy-Algorithmus.
I Einen alternativen Ansatz zur Bestimmung eines
minimalen Spannbaums liefert der
Algorithmus von Prim.
graphen.pdf, Seite 70
Herunterladen