29.12.2013 Aufrufe

Datenstrukturen und Algorithmen -

Datenstrukturen und Algorithmen -

Datenstrukturen und Algorithmen -

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!