Datenstrukturen und Algorithmen -
Datenstrukturen und Algorithmen -
Datenstrukturen und Algorithmen -
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Minimale Spannbäume<br />
Minimale Spannbäume<br />
Minimale Spannbäume<br />
Minimale Spannbäume<br />
Prim’s Algorithmus – Gr<strong>und</strong>gerüst<br />
Prim’s Algorithmus – Beispiel<br />
1 // ungerichteter Graph G mit n Knoten<br />
2 void primMST(Graph G, int n) {<br />
3 initialisiere alle Knoten als ungesehen (WHITE);<br />
4 wähle irgendeinen Knoten s <strong>und</strong> markiere ihn mit Baum (BLACK);<br />
5 reklassifiziere alle zu s adjazenten Knoten als Rand (GRAY);<br />
6 while (es gibt Randknoten) {<br />
7 wähle von allen Kante zwischen einem Baumknoten t <strong>und</strong><br />
8 einem Randknoten v die billigste;<br />
9 reklassifiziere v als Baum (BLACK);<br />
10 füge Kante tv zum Baum hinzu;<br />
11 reklassifiziere alle zu v adjazenten ungesehenen Knoten<br />
12 als Rand (GRAY);<br />
13 }<br />
14 }<br />
14<br />
14<br />
6<br />
10<br />
3<br />
4<br />
5<br />
8<br />
8<br />
4<br />
2<br />
9<br />
15<br />
9<br />
15<br />
Joost-Pieter Katoen <strong>Datenstrukturen</strong> <strong>und</strong> <strong>Algorithmen</strong> 13/21<br />
Joost-Pieter Katoen <strong>Datenstrukturen</strong> <strong>und</strong> <strong>Algorithmen</strong> 14/21<br />
Minimale Spannbäume<br />
Minimale Spannbäume<br />
Minimale Spannbäume<br />
Minimale Spannbäume<br />
Die MST-Eigenschaft<br />
MST-Eigenschaft auf G<br />
Ein Spannbaum T hat die minimale-Spannbaum-Eigenschaft auf G, wenn<br />
A<br />
B<br />
1. jede Kante (u, v) ∈ G − T einen Zyklus in T erzeugen würde, <strong>und</strong><br />
2. in diesem Zyklus die Kante mit maximalem Gewicht ist.<br />
14<br />
6<br />
10<br />
3<br />
C<br />
5<br />
D<br />
8<br />
4<br />
2<br />
F<br />
E<br />
9<br />
15<br />
Spannbaum, der die MST-Eigenschaft hat<br />
G<br />
H<br />
A<br />
B<br />
14<br />
6<br />
10<br />
3<br />
C<br />
5<br />
D<br />
8<br />
4<br />
2<br />
F<br />
E<br />
9<br />
15<br />
Spannbaum, der die MST-Eigenschaft verletzt<br />
Joost-Pieter Katoen <strong>Datenstrukturen</strong> <strong>und</strong> <strong>Algorithmen</strong> 15/21<br />
G<br />
H<br />
Spannbäume mit gleichem Gewicht<br />
Lemma<br />
Wenn zwei Spannbäume T 1 <strong>und</strong> T 2 die MST-Eigenschaft auf G haben,<br />
dann ist W (T 1 ) = W (T 2 ).<br />
Beweis.<br />
Induktion über die Anzahl k an Kanten in T 1 − T 2 .<br />
Induktionsanfang:<br />
k = 0, T 1 <strong>und</strong> T 2 sind gleich, daher ist W (T 1 ) = W (T 2 ).<br />
Induktionsschritt:<br />
k > 0, Angenommen das Lemma gilt für Spannbäume, die sich nur in<br />
j < k Kanten unterscheiden.<br />
◮ T 1 <strong>und</strong> T 2 unterscheiden sich nun um k Kanten.<br />
◮ Betrachte die günstigste Kante (u, v) aus T 2 − T 1 .<br />
◮ Der Pfad von u nach v in T 1 (mit Länge 2) muss eine Kante<br />
(w, x) ∉ T 2 enthalten. Es gilt W (w, x) = W (u, v), denn:<br />
→<br />
Joost-Pieter Katoen <strong>Datenstrukturen</strong> <strong>und</strong> <strong>Algorithmen</strong> 16/21