3. minimale spannb aume -  · 3. minimale spannb aume sei g= (v;e) ein einfacher ungerichteter...

31
3. Minimale Spannb¨ aume Sei G =(V,E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh¨ angend ist. Sei weiter w : E R eine Gewichtsfunktion auf den Kanten von G. Wir setzen E 0 E: w(E 0 )= eE 0 w(e), T =(V 0 ,E 0 ) ein Teilgraph von G: w(T )= w(E 0 ). Definition 99 T heißt minimaler Spannbaum (MSB, MST) von G, falls T Spannbaum von G ist und gilt: w(T ) w(T 0 ) ur alle Spannb¨ aume T 0 von G. EADS 3.0 BFS-Algorithmus 433/600 ©Ernst W. Mayr

Upload: others

Post on 13-Oct-2019

15 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

3. Minimale Spannbaume

Sei G = (V,E) ein einfacher ungerichteter Graph, der o.B.d.A.zusammenhangend ist. Sei weiter w : E → R eineGewichtsfunktion auf den Kanten von G.Wir setzen

E′ ⊆ E: w(E′) =∑

e∈E′ w(e),

T = (V ′, E′) ein Teilgraph von G: w(T ) = w(E′).

Definition 99T heißt minimaler Spannbaum (MSB, MST) von G, falls TSpannbaum von G ist und gilt:

w(T ) ≤ w(T ′) fur alle Spannbaume T ′ von G.

EADS 3.0 BFS-Algorithmus 433/600©Ernst W. Mayr

Page 2: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Beispiel 100

8 3

5

67

1

2

4minimaler

Spannbaum

Anwendungen:

Telekom: Verbindungen der Telefonvermittlungen

Leiterplatinen

EADS 3.0 BFS-Algorithmus 434/600©Ernst W. Mayr

Page 3: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

3.1 Konstruktion von minimalen Spannbaumen

Es gibt zwei Prinzipien fur die Konstruktion von minimalenSpannbaumen (Tarjan):

”blaue“ Regel

”rote“ Regel

EADS 3.1 Konstruktion von minimalen Spannbaumen 435/600©Ernst W. Mayr

Page 4: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Satz 101Sei G = (V,E) ein zusammenhangender ungerichteter Graph,w : E → R eine Gewichtsfunktion, C = (V1, V2) ein Schnitt (d.h.V = V1 ∪ V2, V1 ∩ V2 = ∅, V1 6= ∅ 6= V2). Sei weiterEC = E ∩ (V1 × V2) die Menge der Kanten

”uber den Schnitt

hinweg“. Dann gilt: (”

blaue“ Regel)

1 Ist e ∈ EC die einzige Kante minimalen Gewichts (uber alleKanten in EC), dann ist e in jedem minimalen Spannbaum fur(G,w) enthalten.

2 Hat e ∈ EC minimales Gewicht (uber alle Kanten in EC),dann gibt es einen minimalen Spannbaum von (G,w), der eenthalt.

EADS 3.1 Konstruktion von minimalen Spannbaumen 436/600©Ernst W. Mayr

Page 5: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Beweis:[durch Widerspruch]

1 Sei T ein minimaler Spannbaum von (G,w), sei e ∈ EC dieminimale Kante. Annahme: e /∈ T . Da T Spannbaum⇒ T ∩ EC 6= ∅.Sei T ∩ EC = e1, e2, . . . , ek, k ≥ 1. Dann enthalt T ∪ eeinen eindeutig bestimmten Kreis (den sogenannten durch ebzgl. T bestimmten Fundamentalkreis). Dieser Kreis mussmindestens eine Kante ∈ EC ∩ T enthalten, da die beidenEndpunkte von e auf verschiedenen Seiten des Schnitts Cliegen.

EADS 3.1 Konstruktion von minimalen Spannbaumen 437/600©Ernst W. Mayr

Page 6: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Beweis (Forts.):

e

e′

V1 V2

e

T

e′

Sei e′ ∈ EC ∩ T . Dann gilt nach Voraussetzung w(e′) > w(e). Alsoist T ′ := T − e′ ∪ e ein Spannbaum von G, der echt kleineresGewicht als T hat, Widerspruch zu

”T ist minimaler

Spannbaum“.

EADS 3.1 Konstruktion von minimalen Spannbaumen 438/600©Ernst W. Mayr

Page 7: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Beweis (Forts.):

2 Sei e ∈ EC minimal. Annahme: e kommt in keinem minimalenSpannbaum vor. Sei T ein beliebiger minimaler Spannbaumvon (G,w).

e

V1 V2

e /∈ T ∩ Ec 6= ∅

e /∈ T ∩EC 6= ∅. Sei e′ ∈ EC ∩ T eine Kante auf dem durch ebezuglich T erzeugten Fundamentalkreis. Dann istT ′ = T − e′ ∪ e wieder ein Spannbaum von G, und es istw(T ′) ≤ w(T ). Also ist T ′ minimaler Spannbaum und e ∈ T ′.

EADS 3.1 Konstruktion von minimalen Spannbaumen 439/600©Ernst W. Mayr

Page 8: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Satz 102Sei G = (V,E) ein ungerichteter, gewichteter,zusammenhangender Graph mit Gewichtsfunktion w : E → R.Dann gilt: (

”rote“ Regel)

1 Gibt es zu e ∈ E einen Kreis C in G, der e enthalt undw(e) > w(e′) fur alle e′ ∈ C \ e erfullt, dann kommt e inkeinem minimalen Spannbaum vor.

2 Ist C1 = e1, . . . , ek ein Kreis in G undw(ei) = maxw(ej); 1 ≤ j ≤ k, dann gibt es einenminimalen Spannbaum, der ei nicht enthalt.

EADS 3.1 Konstruktion von minimalen Spannbaumen 440/600©Ernst W. Mayr

Page 9: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Beweis:

1 Nehmen wir an, dass es einen minimalen Spannbaum T gibt,der e = v1, v2 enthalt. Wenn wir e aus T entfernen, sozerfallt T in zwei nicht zusammenhangende Teilbaume T1 undT2 mit vi ∈ Ti, i = 1, 2. Da aber e auf einem Kreis in G liegt,muss es einen Weg von v1 nach v2 geben, der e nicht benutzt.Mithin gibt es eine Kante e 6= e auf diesem Weg, die einenKnoten in T1 mit T2 verbindet. Verbinden wir T1 und T2

entlang e, so erhalten wir einen von T verschiedenenSpannbaum T . Wegen w(e) < w(e) folgt w(T ) < w(T ), imWiderspruch zur Minimalitat von T .

EADS 3.1 Konstruktion von minimalen Spannbaumen 441/600©Ernst W. Mayr

Page 10: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Beweis (Forts.):

2 Wir nehmen an, ei liege in jedem minimalen Spannbaum(MSB) von G, und zeigen die Behauptung durch Widerspruch.

Sei T ein beliebiger MSB von G. Entfernen wir ei aus T , sozerfallt T in zwei nicht zusammenhangende Teilbaume T1 undT2. Da ei auf einem Kreis C1 = e1, . . . , ek in G liegt, konnenwir wie zuvor ei durch eine Kante ej des Kreises C1 ersetzen,die T1 und T2 verbindet. Dadurch erhalten wir einen von Tverschiedenen Spannbaum T , der ei nicht enthalt. Da nachVoraussetzung w(ej) ≤ w(ei) gilt, folgt w(T ) ≤ w(T ) (undsogar w(T ) = w(T ), da T nach Annahme ein MSB ist). Alsoist T ein MSB von G, der ei nicht enthalt, im Widerspruchzur Annahme, ei liege in jedem MSB von G.

EADS 3.1 Konstruktion von minimalen Spannbaumen 442/600©Ernst W. Mayr

Page 11: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Literatur

Robert E. Tarjan:Data Structures and Network AlgorithmsSIAM CBMS-NSF Regional Conference Series in AppliedMathematics Bd. 44 (1983)

EADS 3.1 Konstruktion von minimalen Spannbaumen 443/600©Ernst W. Mayr

Page 12: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

3.2 Generischer minimaler Spannbaum-Algorithmus

Initialisiere Wald F von Baumen, jeder Baum ist ein singularerKnoten(jedes v ∈ V bildet einen Baum)while Wald F mehr als einen Baum enthalt do

wahle einen Baum T ∈ F ausbestimme eine leichteste Kante e = v, w aus T heraussei v ∈ T , w ∈ T ′vereinige T und T ′, fuge e zum minimalen Spannbaum hinzu

od

EADS 3.2 Generischer minimaler Spannbaum-Algorithmus 444/600©Ernst W. Mayr

Page 13: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Generischer MST-Algorithmus

T T ′

T ′′ T ′′′

V1 V2

Wald F

EADS 3.2 Generischer minimaler Spannbaum-Algorithmus 445/600©Ernst W. Mayr

Page 14: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

3.3 Kruskal’s Algorithmus

algorithm Kruskal (G,w) :=sortiere die Kanten nach aufsteigendem Gewicht in eine Liste Linitialisiere Wald F = Ti, i = 1, . . . , n, mit Ti = viMSB:=∅for i := 1 to length(L) dov, w := Lix := Baum ∈ F , der v enthalt; co x :=Find(v) ocy := Baum ∈ F , der w enthalt; co y :=Find(w) ocif x 6= y then

MSB:=MSB ∪ v, wUnion(x, y) co gewichtete Vereinigung oc

fiod

EADS 3.3 Kruskal’s Algorithmus 446/600©Ernst W. Mayr

Page 15: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Korrektheit: Falls die Gewichte eindeutig sind (w(·) injektiv), folgtdie Korrektheit direkt mit Hilfe der “blauen“ und “roten“ Regel.Ansonsten Induktion uber die Anzahl |V | der Knoten:Ind. Anfang: |V | klein:

Sei r ∈ R, Er := e ∈ E;w(e) < r.Es genugt zu zeigen:Sei T1, . . . , Tk ein minimaler Spannwald fur Gr := V,Er (d.h.,wir betrachten nur Kanten mit Gewicht < r). Sei weiter T einMSB von G, dann gilt die

Hilfsbehauptung: Die Knotenmenge eines jeden Ti induziert in Teinen zusammenhangenden Teilbaum, dessen Kanten alle Gewicht< r haben.

EADS 3.3 Kruskal’s Algorithmus 447/600©Ernst W. Mayr

Page 16: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Beweis der Hilfsbehauptung:

Sei Ti =: (Vi, Ei). Wir mussen zeigen, dass Vi in T einenzusammenhangenden Teilbaum induziert. Seien u, v ∈ Vi zweiKnoten, die in Ti durch eine Kante e verbunden sind. Falls derPfad in T zwischen u und v auch Knoten 6∈ Vi enthalt (also dervon Vi induzierte Teilgraph von T nicht zusammenhangend ist),dann enthalt der in T durch Hinzufugen der Kante e entstehendeFundamentalkreis notwendigerweise auch Kanten aus E \ Er undist damit gemaß der “roten“ Regel nicht minimal! Da Tizusammenhangend ist, folgt damit, dass je zwei Knoten aus Vi inT immer durch einen Pfad verbunden sind, der nur Kanten aus Erenthalt.

EADS 3.3 Kruskal’s Algorithmus 448/600©Ernst W. Mayr

Page 17: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Zeitkomplexitat: (mit n = |V |,m = |E|)

Sortieren m logm = O(m log n)

O(m) Find-Operationen O(m)

n− 1 Unions O(n log n)

Satz 103Kruskal’s MSB-Algorithmus hat die ZeitkomplexitatO((m+ n) log n).

Beweis:s.o.

EADS 3.3 Kruskal’s Algorithmus 449/600©Ernst W. Mayr

Page 18: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Beispiel 104 (Kruskals Algorithmus)

1 2

10

9

78

4

8

117 6

2

414

1

2

3

4 5

6

8

7

⇓ minimaler (nicht eindeutiger)Spannbaum

1 2

10

9

78

4

8

117 6

2

414

EADS 3.3 Kruskal’s Algorithmus 450/600©Ernst W. Mayr

Page 19: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

3.4 Prim’s Algorithmus

algorithm PRIM-MSB (G,w) :=initialisiere Priority Queue PQ mit Knotenmenge V und

Schlussel +∞, ∀v ∈ Vwahle Knoten r als Wurzel (beliebig)Schlussel k[r] := 0Vorganger[r] := nilwhile PQ 6= ∅ do

u := ExtractMin(PQ)for alle Knoten v, die in G zu u benachbart sind do

if v ∈ PQ and w(u, v) < k[v] thenVorganger[v] := uk[v] := w(u, v)

fiod

od

EADS 3.4 Prim’s Algorithmus 451/600©Ernst W. Mayr

Page 20: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Beispiel 105 (Prim’s Algorithmus)

1 2

10

9

78

4

8

117 6

2

414

Ausgangszustand:alle Schlussel = +∞aktueller Knoten u:Startknoten: r (= v0)

2

0

+∞ +∞ +∞

+∞

+∞+∞+∞

+∞v0

v1 v2 v3

v4

v5v6v7

v8

EADS 452/600©Ernst W. Mayr

Page 21: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Beispiel 105 (Prim’s Algorithmus)

1 2

10

9

78

4

8

117 6

2

414

Ausgangszustand:alle Schlussel = +∞aktueller Knoten u:Startknoten: r (= v0)

2

0

+∞ +∞ +∞

+∞

+∞+∞+∞

+∞v0

v1 v2 v3

v4

v5v6v7

v8

1 2

10

9

78

4

8

117 6

2

414

suche u := FindMin(PQ)und entferne u aus PQsetze Schlussel der Nach-barn in PQ mitw(u, v) < Schlussel[v]:(v1 = 8, v7 = 4)

8 +∞ +∞

+∞

+∞+∞4

+∞

2

v0

v1 v2 v3

v4

v5v6v7

v8

EADS 452/600©Ernst W. Mayr

Page 22: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Beispiel 105 (Prim’s Algorithmus)

1 2

10

9

78

4

8

117 6

2

414

suche u := FindMin(PQ)und entferne u aus PQsetze Schlussel der Nach-barn in PQ mitw(u, v) < Schlussel[v]:(v1 = 8, v7 = 4)

8 +∞ +∞

+∞

+∞+∞4

+∞

2

v0

v1 v2 v3

v4

v5v6v7

v8

1 2

10

9

78

8

117 6

2

414

1 suche u := FindMin(PQ)und entferne u aus PQsetze Schlussel der Nach-barn in PQ mitw(u, v) < Schlussel[v]:(v6 = 8)

8 +∞ +∞

+∞

+∞8

+∞

2

v0

v1 v2 v3

v4

v5v6v7

v8

EADS 452/600©Ernst W. Mayr

Page 23: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Beispiel 105 (Prim’s Algorithmus)

1 2

10

9

78

8

117 6

2

414

1 suche u := FindMin(PQ)und entferne u aus PQsetze Schlussel der Nach-barn in PQ mitw(u, v) < Schlussel[v]:(v6 = 8)

8 +∞ +∞

+∞

+∞8

+∞

2

v0

v1 v2 v3

v4

v5v6v7

v8

1 2

10

9

7

8

117 6

2

414

1

2

suche u := FindMin(PQ)und entferne u aus PQsetze Schlussel der Nach-barn in PQ mitw(u, v) < Schlussel[v]:(v3 = 4, v5 = 7, v8 = 2)

8 +∞ 4

+∞

7

2

2

v0

v1 v2 v3

v4

v5v6v7

v8

EADS 452/600©Ernst W. Mayr

Page 24: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Beispiel 105 (Prim’s Algorithmus)

1 2

10

9

7

8

117 6

2

414

1

2

suche u := FindMin(PQ)und entferne u aus PQsetze Schlussel der Nach-barn in PQ mitw(u, v) < Schlussel[v]:(v3 = 4, v5 = 7, v8 = 2)

8 +∞ 4

+∞

7

2

2

v0

v1 v2 v3

v4

v5v6v7

v8

1 2

10

9

7

8

117 6

414

1

2

3 suche u := FindMin(PQ)und entferne u aus PQsetze Schlussel der Nach-barn in PQ mitw(u, v) < Schlussel[v]:(v1 = 7, v2 = 6)

7 6 4

+∞

7

2

v0

v1 v2 v3

v4

v5v6v7

v8

EADS 452/600©Ernst W. Mayr

Page 25: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Beispiel 105 (Prim’s Algorithmus)

1 2

10

9

7

8

117 6

414

1

2

3 suche u := FindMin(PQ)und entferne u aus PQsetze Schlussel der Nach-barn in PQ mitw(u, v) < Schlussel[v]:(v1 = 7, v2 = 6)

7 6 4

+∞

7

2

v0

v1 v2 v3

v4

v5v6v7

v8

1 2

10

9

7

8

117 6

14

1

2

3

4

suche u := FindMin(PQ)und entferne u aus PQsetze Schlussel der Nach-barn in PQ mitw(u, v) < Schlussel[v]:(v2 = 2, v4 = 10)

7 2

10

7

v0

v1 v2 v3

v4

v5v6v7

v8

EADS 452/600©Ernst W. Mayr

Page 26: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Beispiel 105 (Prim’s Algorithmus)

1 2

10

9

7

8

117 6

14

1

2

3

4

suche u := FindMin(PQ)und entferne u aus PQsetze Schlussel der Nach-barn in PQ mitw(u, v) < Schlussel[v]:(v2 = 2, v4 = 10)

7 2

10

7

v0

v1 v2 v3

v4

v5v6v7

v8

1

10

9

7

8

117 6

14

1

2

3

4

5

suche u := FindMin(PQ)und entferne u aus PQsetze Schlussel der Nach-barn in PQ mitw(u, v) < Schlussel[v]:(v1 = 1)

1

10

7

v0

v1 v2 v3

v4

v5v6v7

v8

EADS 452/600©Ernst W. Mayr

Page 27: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Beispiel 105 (Prim’s Algorithmus)

1

10

9

7

8

117 6

14

1

2

3

4

5

suche u := FindMin(PQ)und entferne u aus PQsetze Schlussel der Nach-barn in PQ mitw(u, v) < Schlussel[v]:(v1 = 1)

1

10

7

v0

v1 v2 v3

v4

v5v6v7

v8

10

9

7

8

117 6

14

1

2

3

4

56

suche u := FindMin(PQ)und entferne u aus PQsetze Schlussel der Nach-barn in PQ mitw(u, v) < Schlussel[v]:solche Nachbarn existierennicht

10

7

v0

v1 v2 v3

v4

v5v6v7

v8

EADS 452/600©Ernst W. Mayr

Page 28: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Beispiel 105 (Prim’s Algorithmus)

10

9

7

8

117 6

14

1

2

3

4

56

suche u := FindMin(PQ)und entferne u aus PQsetze Schlussel der Nach-barn in PQ mitw(u, v) < Schlussel[v]:solche Nachbarn existierennicht

10

7

v0

v1 v2 v3

v4

v5v6v7

v8

10

9

8

117 6

14

1

2

3

4

56

7

suche u := FindMin(PQ)und entferne u aus PQsetze Schlussel der Nach-barn in PQ mitw(u, v) < Schlussel[v]:(v4 = 9)

9v0

v1 v2 v3

v4

v5v6v7

v8

EADS 452/600©Ernst W. Mayr

Page 29: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Beispiel 105 (Prim’s Algorithmus)

10

9

8

117 6

14

1

2

3

4

56

7

suche u := FindMin(PQ)und entferne u aus PQsetze Schlussel der Nach-barn in PQ mitw(u, v) < Schlussel[v]:(v4 = 9)

9v0

v1 v2 v3

v4

v5v6v7

v8

108

117 6

14

1

2

3

4

56

7

8 Endzustand:suche u := FindMin(PQ)und entferne u aus PQ,damit ist PQ leer und derAlgorithmus beendet

v0

v1 v2 v3

v4

v5v6v7

v8

EADS 3.4 Prim’s Algorithmus 452/600©Ernst W. Mayr

Page 30: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Korrektheit: ist klar.

Zeitkomplexitat:

n ExtractMin

O(m) sonstige Operationen inclusive DecreaseKey

Implementierung der Priority Queue mittels Fibonacci-Heaps:

Initialisierung O(n)

ExtractMins O(n log n) (≤ n Stuck)

DecreaseKeys O(m) (≤ m Stuck)

Sonstiger Overhead O(m)

EADS 3.4 Prim’s Algorithmus 453/600©Ernst W. Mayr

Page 31: 3. Minimale Spannb aume -  · 3. Minimale Spannb aume Sei G= (V;E) ein einfacher ungerichteter Graph, der o.B.d.A. zusammenh angend ist. Sei weiter w: E!R eine Gewichtsfunktion auf

Satz 106Sei G = (V,E) ein ungerichteter Graph (zusammenhangend,einfach) mit Kantengewichten w. Prim’s Algorithmus berechnet,wenn mit Fibonacci-Heaps implementiert, einen minimalenSpannbaum von (G,w) in Zeit O(m+ n log n) (wobein = |V |, m = |E|). Dies ist fur m = Ω(n log n) asymptotischoptimal.

Beweis:s.o.

EADS 3.4 Prim’s Algorithmus 454/600©Ernst W. Mayr