Christian Scheideler WS 2008

Slides:



Advertisements
Ähnliche Präsentationen
8. Termin Teil B: Wiederholung Begriffe Baum
Advertisements

Randomisierte Algorithmen Präfix Suche und Konsistentes Hashing
Christian Scheideler SS 2009
Christian Scheideler SS 2009
Man bestimme den „minimalen aufspannenden Baum“ des Graphen.
Eine dynamische Menge, die diese Operationen unterstützt,
Minimum Spanning Tree: MST
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann.
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Graphen Ein Graph ist eine Kollektion von Knoten und Kanten. Knoten sind einfache Objekte. Sie haben Namen und können Träger von Werten, Eigenschaften.
GIN2 – 2. Vorlesung, SS04 Prof. Dr. Wolfram Conen
ADS Vorlesung Prof. Dr. W. Conen, FH Gelsenkirchen
Kapitel 6: Klassifizierung von Sortiertechniken
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Synonyme: Stapel, Keller, LIFO-Liste usw.
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Fibonacci-Heaps – Analyse) Tobias Lauer.
Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts
Union-Find-Strukturen
WS Algorithmentheorie 15 – Fibonacci-Heaps Tobias Lauer.
Seminar parallele Programmierung SS 2003
Minimum Spanning Tree: MST
Kapitel 2: Datenstrukturen
Effiziente Algorithmen
Effiziente Algorithmen
Chromatische Zahl.
Diskrete Mathematik II
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation
Information und Kommunikation
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Verteilte Algorithmen und Datenstrukturen Kapitel 4: Caching Christian Scheideler Institut für Informatik Universität Paderborn.
Christian Scheideler Institut für Informatik Universität Paderborn
Kapitel 8: Graphalgorithmen 8. 1 Grundlagen 8
Kapitel 8: Graphalgorithmen 8. 1 Grundlagen 8
Analyse der Laufzeit von Algorithmen
HEINZ NIXDORF INSTITUT Universität Paderborn Fachbereich Mathematik/Informatik Algorithmische Probleme in Funknetzwerken VI Christian Schindelhauer
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Algorithmen und Datenstrukturen
Gliederung der Vorlesung
Binärbäume.
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren.
Programmiersprachen II Graph_Algorithmen Gewichtete Graphen - Minimum Spanning Tree und shortest path aus Implementierungssicht Prof. Dr. Reiner Güttler.
Adiazenzmatrix des Graphen
Algorithmen und Datenstrukturen
Vorlesung AVL-Bäume/Algorithmen-
Vorlesung AVL-Bäume/Algorithmen-
Effiziente Algorithmen und Datenstrukturen I Kapitel 8: Kürzeste Wege
Wiederholung TexPoint fonts used in EMF.
Übungen Übungsanmeldung Übungskorrektur
Wiederholung Verband Ungerichtete Graphen Partielle Ordnung
 Präsentation transkript:

Christian Scheideler WS 2008 Effiziente Algorithmen und Datenstrukturen I Kapitel 9: Minimale Spannbäume Christian Scheideler WS 2008 08.11.2018 Kapitel 9

Minimaler Spannbaum Zentrale Frage: Welche Kanten muss ich nehmen, um mit minimalen Kosten alle Knoten zu verbinden? 1 3 2 3 2 2 5 2 3 1 4 08.11.2018 Kapitel 9

Minimaler Spannbaum Eingabe: ungerichteter Graph G=(V,E) Kantenkosten c:E!IR+ Ausgabe: Teilmenge T ½ E, so dass Graph (V,T) verbunden und c(T)=e 2 T c(e) minimal T formt immer einen Baum (wenn c positiv). Baum über alle Knoten in V mit minimalen Kosten: minimaler Spannbaum (MSB) 08.11.2018 Kapitel 9

Minimaler Spannbaum Lemma 9.1: Sei (U,W) eine Partition von V (d.h. U [ W = V und U Å W = ;) und e={s,t} eine Kante mit minimalen Kosten mit s2U und t2W. Dann gibt es einen minimalen Spannbaum (MSB) T, der e enthält. s t e U W 08.11.2018 Kapitel 9

Minimaler Spannbaum Beweis von Lemma 9.1: Betrachte beliebigen MSB T´ e={s,t}: (U,W)-Kante minimaler Kosten Ersetzung von e´ durch e führt zu Baum T´´, der höchstens Kosten von MSB T´ hat, also MSB ist s t e U W e´ in T´ 08.11.2018 Kapitel 9

Minimaler Spannbaum Lemma 9.2: Betrachte beliebigen Kreis C in G und sei e Kante in C mit maximalen Kosten. Dann ist jeder MSB in G ohne e auch ein MSB in G. e 1 5 3 4 2 3 2 5 08.11.2018 Kapitel 9

Minimaler Spannbaum Beweis von Lemma 9.2: Betrachte beliebigen MSB T in G Angenommen, T enthalte e : zu Tv, : zu Tw - es gibt e´ von Tv nach Tw - e ! e´ ergibt MSB T´ ohne e v w e e maximal für C Tv Tw e C e‘ 08.11.2018 Kapitel 9

Minimaler Spannbaum Regel aus Lemma 9.1: Wähle wiederholt Kante mit minimalen Kosten, die verschiedene ZHKs verbindet, bis eine ZHK übrig 1 3 2 3 2 2 5 2 3 1 4 08.11.2018 Kapitel 9

Minimaler Spannbaum Regel aus Lemma 9.2: Lösche wiederholt Kante mit maximalen Kosten, die Zusammenhang nicht gefähr-det, bis ein Baum übrig 1 3 2 3 2 2 5 2 3 1 4 08.11.2018 Kapitel 9

benötigt Union-Find DS Minimaler Spannbaum Problem: Wie implementiert man die Regeln effizient? Strategie aus Lemma 9.1: Setze T=; und sortiere die Kanten aufsteigend nach ihren Kosten Für jede Kante (u,v) in der sortierten Liste, teste, ob u und v bereits im selben Baum in T sind. Falls nicht, füge (u,v) zu T hinzu. benötigt Union-Find DS 08.11.2018 Kapitel 9

Erinnerung: Union-Find DS Operationen: Union(x1, x2): vereinigt die Elemente in den Teilmengen T1 und T2, zu denen die Elemente x1 und x2 gehören, zu T=T1 [ T2 Find(x): gibt (eindeutigen) Repräsentanten der Teilmenge aus, zu der Element x gehört 08.11.2018 Kapitel 9

Minimaler Spannbaum Beispiel: ( : Kanten im MSB) s 1 3 2 3 2 2 5 2 3 1 4 08.11.2018 Kapitel 9

Kruskal Algorithmus Function KruskalMST(V,E,c): Set of Edge T:=; Init(V) // initialisiere einelem. Mengen für V S:=Mergesort(E) // aufsteigend sortiert foreach {u,v}2 S do if Find(u)=Find(v) then // versch. Mengen T:=T [ { {u,v} } Union(u, v) // u und v in einer Menge return T 08.11.2018 Kapitel 9

Kruskal Algorithmus Laufzeit: Mergesort: O(m log n) Zeit 2m Find-Operationen und n-1 Union-Operationen: O((m,n) ¢ m) Zeit Insgesamt Zeit O(m log n). Mit LinearSort auf O((m,n)¢m) reduzierbar. 08.11.2018 Kapitel 9

Minimaler Spannbaum Problem: Wie implementiert man die Regeln effizient? Alternative Strategie aus Lemma 9.1: Starte bei beliebigem Knoten s, MSB T besteht anfangs nur aus s Ergänze T durch günstigste Kante zu äußerem Knoten w und füge w zu T hinzu bis T alle Knoten im Graphen umfasst 08.11.2018 Kapitel 9

Minimaler Spannbaum Beispiel: s 1 3 2 3 2 2 5 2 3 1 4 08.11.2018 Kapitel 9

Jarnik-Prim Algorithmus Procedure JarnikPrim(s: NodeId) d=<1,…,1>: NodeArray of IR [ {-1,1} parent=<?,…,?>: NodeArray of NodeId d[s]:=0; parent[s]:=s // T anfangs nur aus s q=<s>: NodePQ while q = ; do u:=q.deleteMin() // u: min. Distanz zu T in q foreach e={u,v} 2 E mit v2MSB(s) do if c(e) < d[v] then // aktualisiere d[v] zu T if d[v]=1 then q.insert(v) // v schon in q? d[v]:=c(e); parent[v]:=u q.decreaseKey(v) 08.11.2018 Kapitel 9

Jarnik-Prim Algorithmus Laufzeit: TJP = O(n(TDeleteMin(n)+TInsert(n)) + m¢ TdecreaseKey(n)) Binärer Heap: alle Operationen O(log n), also TJP = O((m+n)log n) Fibonacci Heap: TDeleteMin(n)=TInsert(n)=O(log n) TdecreaseKey(n)=O(1) Damit TJP = O(n log n + m) 08.11.2018 Kapitel 9

Verbesserter JP-Algorithmus Sei G=(V,E) ein ungerichteter Graph mit |V|=n, |E|=m und m=o(n log n) (sonst verwende ursprünglichen JP Algorithmus) Idee: lasse Priority Queues nicht zu groß werden. Der verbesserte JP-Algorithmus arbeitet dazu in Phasen, wobei in Phase i ein Parameter ki verwendet wird, dessen Wert wir erst später festlegen werden. 08.11.2018 Kapitel 9

Verbesserter JP-Algorithmus Phase 1 startet mit Graph G1=(V1,E1)=G. Die Funktion g:E1 [ V1 ! IR+ weist jeder Kante Gewicht 1 zu und jedem Knoten in G1 ein Gewicht zu, das seinem Grad entspricht. Phase i>1 arbeitet wie folgt: Schritt 1: Forme eine Liste L aller Knoten in Gi. Geändert am 14.01.08 08.11.2018 Kapitel 9

Verbesserter JP-Algorithmus Hintergrund zu Schritt 2: Jeder (Super-)Knoten repräsentiert einen MSB im ursprünglichen Graphen G. Das Gewicht eines (Super-)Knotens ist die Summe der Gewichte der Knoten in G, die in seinem MSB enthalten sind. Superknoten v : MSB-Kante Geändert am 12.01.09 08.11.2018 Kapitel 9

Verbesserter JP-Algorithmus Schritt 2: solange L nicht leer ist: Nimm den vordersten Knoten j in L und führe den JP-Algo auf j aus, um einen minimalen Spannbaum MSBj mit Wurzel j aufzubauen (wobei Knoten aus L, die zum MSBj hinzugefügt werden, aus L gelöscht werden), bis eines der folgenden Ereignisse eintritt: PQ Qj=; oder v 2 MSBj g(v)>ki. Dann entferne j aus L. Ein Knoten v wird zu MSBj hinzugefügt wird, der bereits zu einem MSB mit Wurzel j’ gehört. Dann vereinen wir die MSBs und die PQs von j und j’ zu einem MSB mit Wurzel j’ mittels einer speziellen Union-Operation und entfernen j aus L. Geändert am 12.01.08 08.11.2018 Kapitel 9

Verbesserter JP-Algorithmus Union-Operation: T1, Q1: MSB und PQ von Knoten j’, T2, Q2: MSB und PQ von Knoten j, Vereinigung aufgrund Kante {v,w} mit v2T1, w2T2. Ziel: T1 := T1 [ T2 [ {v,w}, Q1 := PQ(Q1,Q2) Für alle Knoten u 2 T2 mit u 2 Q1: lösche u aus Q1 (einfaches Delete) Für alle Knoten u 2 Q2: u 2 T1: u nicht in Q1 einfügen (einfach löschen) u 2 Q1 : update Wert von u in Q1 (decreaseKey) Sonst füge u in Q1 ein (Insert). Letzte Änderung am 14.01.09 08.11.2018 Kapitel 9

Verbesserter JP-Algorithmus Schritt 3: (mindestens eine nichtleere PQ übrig) Schrumpfe alle MSBs zu Superknoten (dessen Gewicht die Summe der Gewichte all seiner Knoten in G ist, die er repräsentiert). Verwende die PQs zu den MSBs, um Superknoten miteinander zu verbinden. (D.h. für jeden MSB T1 mit Kanten zu einem MSB T2 erhalten die entsprechen-den Superknoten eine Kante e, dessen Wert den minimalen Kosten einer Kante von T1 nach T2 ent-spricht und dessen Gewicht g(e) die Summe der Gewichte der Kanten von T1 nach T2 ist.) Dafür reicht ein linearer Scan der entsprechenden PQs. Daraus resultierender Graph ist Gi+1. Letzte Änderung: 13.01.09 08.11.2018 Kapitel 9

Verbesserter JP-Algorithmus Schritt 3: (alle PQs leer) Falls nur eine PQ übrig, dann gibt es nur noch einen MSB mit einer Wurzel. Damit haben wir einen MSB über alle Superkonten in Gi (und damit über alle Knoten in G). Falls mehrere PQs übrig, dann ist G nicht verbunden. Fehler! 08.11.2018 Kapitel 9

Verbesserter JP-Algorithmus Korrektheit: Die MSB-Bildung ist korrekt, da JP-Algo verwendet wird, um MSBs aufzubauen, welcher Lemma 9.1 erfüllt. 08.11.2018 Kapitel 9

Verbesserter JP-Algorithmus Laufzeitanalyse: Schritt 1: O(ni) Zeit, wobei ni=|Vi| ist. Schritt 2: (Übung) O(ni) deleteMin Operationen O(m) Delete Operationen O(m) Insert Operationen O(m) decreaseKey Operationen Mit Fibonacci-Heaps Laufzeit O(ni log ki + m) 08.11.2018 Kapitel 9

Verbesserter JP-Algorithmus Schritt 3 (mind. eine nichtleere PQ): Laufzeit O(ni+m) zur Bildung von Gi+1 Schritt 3 (alle PQs leer): fertig Also pro Phase Laufzeit O(ni log ki + m). Noch offen: Definition von ki (damit Schranke für ni). Maximale Anzahl Phasen. 08.11.2018 Kapitel 9

Verbesserter JP-Algorithmus Setze ki = 22m/ni. ) ni log ki = 2m, ) Kosten pro Phase O(m). Anzahl Phasen: n: Anzahl Superknoten zu Beginn einer Phase 2m: Summe aller Knotengewichte zu Beginn der Phase d: durschnittliches Gewicht eines Superknotens zu Beginn der Phase d’: durchschnittliches Gewicht eines Superknotens am Ende der Phase Letze Änderung: 13.01.09 08.11.2018 Kapitel 9

Verbesserter JP-Algorithmus Es gilt d’ > k = 22m/n = 2d. Für die erste Phase ist d=2m/n und für alle anderen Phasen ist d62m. Also ist die Anzahl der Phasen höchstens 1+ min{i: log(i) 2m 6 2m/n} Setzen wir (m,n):=min{i: log(i) 2m 6 2m/n}, dann gilt (m,n) 6 log* m für alle m>n. 08.11.2018 Kapitel 9

Verbesserter JP-Algorithmus Theorem 9.3: Für beliebige gewichtete ungerichtete Graphen mit n Knoten und m Kanten kann ein MSB in Zeit O(min{m ¢ (m,n), m + n log n}) bestimmt werden. 08.11.2018 Kapitel 9

Ausblick Weiter mit linearer Algebra… 08.11.2018 Kapitel 9