• Keine Ergebnisse gefunden

3.5 Prim’s Algorithmus, zweite Variante

N/A
N/A
Protected

Academic year: 2021

Aktie "3.5 Prim’s Algorithmus, zweite Variante"

Copied!
13
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

3.5 Prim’s Algorithmus, zweite Variante

Die Idee der folgenden Variante von Prim’s Algorithmus ist:

Lasse die Priority Queues nicht zu groß werden.

Seien dazu G = (V, E), | V | = n, | E | = m, w Gewichtsfunktion, und k ein Parameter, dessen Wert wir erst sp¨ ater festlegen werden.

Der Algorithmus arbeitet nun in Phasen wie folgt:

1

Initialisiere eine Schlange von B¨ aumen, jeder Baum anfangs ein (Super-) Knoten. Zu jedem Baum initialisiere eine Priority Queue (Fibonacci-Heap) mit den Nachbarn der Knoten im Baum, die selbst nicht im Baum sind, als Elementen und jeweils dem Gewicht einer leichtesten Kante zu einem Knoten im Baum als Schl¨ ussel.

2

Markiere jeden Baum in der Schlange mit der Nummer der

(2)

3

Bestimme k f¨ ur die Phase

4

while vorderster Baum in der Schlange hat laufende Phasennummer do

lasse ihn wachsen, solange seine Priority Queue h¨ ochstens k Elemente enth¨ alt (und noch etwas zu tun ist) if Priority Queue zu groß (mehr als k Elemente) then

f¨ uge Baum mit inkrementierter Phasennummer am Ende der Schlange ein

fi od

5

Falls

” Phasensprung“: Schrumpfe alle B¨ aume zu Superknoten,

reduziere Kantenmenge (d.h., behalte zwischen zwei Knoten

jeweils nur die leichteste Kante)

(3)

Ende- markierung wenn groß genug

hinten anstellen

...

Ende-

markierung falls

Phasensprung schrumpfen und

n¨ achste Phase

(4)

Analyse des Zeitbedarfs:

Sei t die Anzahl der B¨ aume in der Schlange zu Beginn einer Phase.

Betrachte die Schlange von B¨ aumen:

T 1 T 2 · · · T i · · · T t

v

Abgesehen von den Operationen, die bei der Vereinigung von

Superknoten anfallen, betr¨ agt der Zeitaufwand pro Phase O (m).

(5)

Vereinigung zweier Superknoten, z.B. T 1 und T 2 : F¨ ur jeden (Super-)Knoten v in T 2 ’s Priority Queue:

1

v ∈ T 1 : √

(nichts zu tun)

2

v in Priority Queue von T 1 : DecreaseKey. Hilfsdatenstruktur:

f¨ ur alle Knoten in den Priority Queues ein Zeiger auf den Superknoten, in dessen Priority Queue der Knoten letztmals am Anfang der Schlange stand.

3

sonst: Einf¨ ugen

(6)

Betrachte Knoten mit

” Halbkanten“: jede Halbkante kommt nur 1x in allen B¨ aumen der Queue vor. Mit m Kanten ergeben sich 2m Halbkanten.

m

Kanten 2m

Halbkanten

Kante aus zwei Halbkanten v

e →

v e

und

e = b

v

e

(7)

Zeitaufwand pro Phase (mit Bildung der Superknoten zu Beginn):

Initialisierung: O (m)

ExtractMin: < t Operationen

sonstige Priority Queue-Operationen, Overhead: Zeit O (m) Da die Priority Queues h¨ ochstens k Elemente enthalten, wenn darauf eine

” teure“ Priority Queue-Operation durchgef¨ uhrt wird, sind die Kosten pro Phase

O (t log k + m) .

Setze k = 2

2mt

(damit t log k = 2m). Damit sind die Kosten pro

Phase O (m).

(8)

Wieviele Phasen f¨ uhrt der Algorithmus aus?

t ist die Anzahl der Superknoten am Anfang einer Phase, t 0 sei diese Zahl zu Beginn der n¨ achsten Phase. Sei a die

durchschnittliche Anzahl urspr¨ unglicher Knoten in jeder der t Priority Queues zu Anfang der Phase, a 0 entsprechend zu Beginn der n¨ achsten Phase.

Wir haben:

1

a = 2m t

2

t 02m k (mit Ausnahme ev. der letzten Phase)

(9)

Also:

a 0 = 2m

t 0 ≥ k = 2

2mt

= 2 a

F¨ ur die erste Phase ist a = 2m n , f¨ ur jede Phase ist a ≤ n − 1. Also ist die Anzahl der Phasen

≤ 1 + min

i; log (i) 2 (n − 1) ≤ 2m n

.

Setzen wir β(m, n) := min n

i; log (i) 2 n ≤ m n o

, dann gilt

β(m, n) ≤ log n f¨ ur n ≤ m ≤ n

2

.

(10)

Satz 107

F¨ ur gewichtete, zusammenh¨ angende (ungerichtete) Graphen mit n Knoten, m Kanten kann ein minimaler Spannbaum in Zeit

O (min { m · β(m, n), m + n log n } ) bestimmt werden.

(11)

3.6 Erweiterungen

Euklidische minimale Spannb¨ aume stellen ein Problem dar, f¨ ur das es speziellere Algorithmen gibt. Literatur hierzu:

Andrew Chih-Chi Yao:

On constructing minimum spanning trees in k-dimensional spaces and related problems

SIAM J. Comput. 11(4), pp. 721–736 (1982)

(12)

Kapitel V K¨ urzeste Pfade

1. Grundlegende Begriffe

Betrachte Digraph G = (V, A) oder Graph G = (V, E).

Kante im ungerichteten

Graph

entgegengesetzte (antiparallele) Kanten b

=

Distanzfunktion: d : A −→ R + (bzw. −→ R )

O.B.d.A.: A = V × V , d(x, y) = + ∞ f¨ ur Kanten, die eigentlich

(13)

Arten von K¨ urzeste-Pfade-Problemen:

1

single-pair-shortest-path (spsp). Beispiel: K¨ urzeste Entfernung von M¨ unchen nach Frankfurt.

2

single-source-shortest-path: gegeben G, d und s ∈ V ,

bestimme f¨ ur alle v ∈ V die L¨ ange eines k¨ urzesten Pfades von s nach v (bzw. einen k¨ urzesten Pfad von s nach v) (sssp).

Beispiel: K¨ urzeste Entfernung von M¨ unchen nach allen anderen Großst¨ adten.

3

all-pairs-shortest-path (apsp). Beispiel: K¨ urzeste Entfernung zwischen allen Großst¨ adten.

Bemerkung: Wir kennen keinen Algorithmus, der das

single-pair-shortest-path berechnet, ohne nicht gleichzeitig (im

worst-case) das single-source-shortest-path-Problem zu l¨ osen.

Referenzen

ÄHNLICHE DOKUMENTE

Lies deinen Text am Ende rückwärts noch einmal Wort für Wort durch. Siehst du einen Fehler? Dann vergleiche deinen Text mit dieser Vorlage. Findest du jetzt noch Fehler, dann

könnte deine Schwester, Frau N., wenn sie nun doch auf diesem Stück Erde mit ihrem Manne wohnen will, ungestraft das alte Haus niederreissen und ein neues bauen; denn dies neue

Dass die Fotos und die dazugehörigen Beschreibun- gen je nach Format unterschiedlich quer oder längs angeordnet sind, wird bei der Vielfalt der Kar- ten für kaum einen

Wenn Früchte von Vögeln oder anderen Tieren gefressen werden, können sich an ande- rer Stelle aus den ausgeschiedenen Samen neue Bäume entwickeln.. Eichhörnchen vergraben Früchte

Wenn Sie beim Einfügen Knoten splitten oder rotieren müssen, zeichnen Sie jeden

[r]

Bäumchen – nun ein stattlicher schöner Baum – sehr viel Kraft, den anderen Trost zuzusprechen, so dass sie, dadurch gestärkt, innerlich stark wurden, was auch sie zum

Die Schüler sollen aus dem dunkelbraunen Tonpapier einen Stamm und viele Äste reißen und auf den Hintergrund kleben. Anschließend werden aus dem bunten Seidenpapier kleine