Union-Find-Strukturen

Slides:



Advertisements
Ähnliche Präsentationen
Man bestimme den „minimalen aufspannenden Baum“ des Graphen.
Advertisements

Minimum Spanning Tree: MST
DNA-Array oder DNA-Chip
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)
LS 2 / Informatik 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.
WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
ADS Vorlesung Prof. Dr. W. Conen, FH Gelsenkirchen
7. Natürliche Binärbäume
Übung 6.6Schranken 1.Angenommen, Ihr Algorithmus habe einen Aufwand von g(n) = 5n 3 + n für alle n a)Geben sie eine obere Schranke O(g(n)) an. b)Beweisen.
Algorithmentheorie 04 –Hashing
Konstruktion von Suffix Bäumen
Suche in Texten: Suffix-Bäume
Algorithmentheorie 6 – Greedy-Verfahren
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
Prof.Dr.S. Albers Prof. Dr. Th. Ottmann
WS 03/04 Algorithmentheorie 03 - Randomisierung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Dynamische Programmierung (2) Matrixkettenprodukt
Algorithmentheorie 02 – Polynomprodukt und Fast Fourier Transformation
Prof. Dr. S. Albers Prof. Dr. Th. Ottmann
Konstruktion von Suffix Bäumen
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Prof. Dr. S. Albers Prof. Dr. Th. Ottmann
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (11-3 –Selbstanordnende lineare Listen) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (11-1 –Selbstanordnende lineare Listen) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27-Selbstanordnende lineare Listen) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (12 – Dynamische Tabellen) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Fibonacci-Heaps – Analyse) Tobias Lauer.
WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer.
Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts
WS Algorithmentheorie 15 – Fibonacci-Heaps Tobias Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 16 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Algorithmen und Datenstrukturen
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix - Bäume.
WS03/041 Binomial Queues Prof. Dr. S. Albers Prof.Dr.Th Ottmann.
Geometrisches Divide and Conquer
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Minimum Spanning Tree: MST
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Terminierung in aktiven DBMS Friedrich-Schiller-Universität Jena Institut für Informatik Seminar: Aktive Datenbanken (Siegmundsburg) Leitung: Prof. Dr.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Polynome und schnelle Fourier-Transformation
Algorithmen und Datenstrukturen Übungsmodul 8
Analyse der Laufzeit von Algorithmen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Algorithmen und Datenstrukturen
 Präsentation transkript:

Union-Find-Strukturen Prof. Dr. S. Albers Prof.Dr.Th Ottmann WS03/04

Union-Find Strukturen Problem: Verwaltung einer Familie von paarweise disjunkten Mengen unter den Operationen: e.make-set(): Erzeugt eine neue Menge mit Element e. e.find-set(): Liefert diejenige Menge Mi, die das Element e enthält. WS03/04

Union-Find Strukturen union(Mi, Mj): Vereinigt die Mengen Mi und Mj zu einer neuen Menge. Repräsentation der Mengen Mi : Mi wird durch ein repräsentatives (kanonisches) Element aus Mi identifiziert. WS03/04

Union-Find Strukturen Operationen mit repräsentativen Elementen: e.make-set(): Erzeugt eine neue Menge mit einzigem Element e. Die Menge wird durch e repräsentiert. e.find-set(): Liefert den Namen des Repräsentanten derjenigen Menge, die das Element e enthält. e.union(f): Vereinigt die Mengen Me und Mf , die die Elemente e und f enthalten zu einer neuen Menge M und liefert ein Element aus Me  Mf als Repräsentanten von M. Me und Mf werden zerstört. WS03/04

Folgerungen Ist n die Anzahl der e.make-set() Operationen und werden insgesamt m Operationen e.make-set(), e.find-set(), e.union(f) ausgeführt, so ist m >= n nach höchstens (n – 1) union – Operationen besteht die Kollektion von Mengen nur noch aus einer einzigen Menge WS03/04

Anwendungs-Beispiel: Zusammenhangstest Input: Graph G =(V,E) Output: die Familie der Zusammenhangskomponenten von G Algorithmus: Connected-Components for all v in V do v.makeset() for all (u,v) in E do if u.findset()  v.findset() then u.union(v) Same-Component (u,v): if u.findset() = v.findset() then return true WS03/04

Repräsentation durch verkettete Listen b f a x.make-set() x.find-set() x.union(y) g h d WS03/04

Repräsentation durch verkettete Listen b.union(d) e b f a g h d WS03/04

Teurere Operations-Folge e1.make-set() e1 e2.make-set() e2 ... en.make-set() en e2.union(e1) e2 e1 e2 e1 e2.union(e1) e3 e2 e1 e3 e2 e1 ... en.union(en-1) en en-1 .... e1 en en-1 ..... e1 Längere Liste wird stets an kurze angehängt! Zeigerzuweisungen im i-ten Schritt ei.union(ei-1): 2n Operationen kosten Zeit: WS03/04

Verbesserung Gewichtete Union-Heuristik Hänge stets die kürzere an die längere Liste. (Führe Listenlänge als Parameter mit). Satz Bei Verwendung der gewichteten Union-Heuristik kann jede Folge von m make-set(), find-set(), und union()-Operationen, die höchstens n make-set() Operationen enthält, in Zeit O(m + n log n) ausgeführt werden. Beweis Betrachte Element e Anzahl der Änderungen des Zeigers von e auf das repräsentative Element: log n WS03/04

Repräsentation durch Wald von Bäumen f r a h e d s u b g i v x y a.make-set() y.find-set() d.union(e): mache den Repräsentanten der einen Menge (z.B. f) zum direkten Vater des Repräsentanten. WS03/04

Beispiel n - i m = Gesamtanzahl der Operationen (  2n ) for i = 1 to n do ei.make-set( ) for i = n to 2 do ei-1.union(ei ) for i = 1 to f do en.find-set( ) i – ter Schritt Kosten für f find-set Operationen: O(f * n) n - i WS03/04

Vereinigung nach Größe zusätzliches Feld: e.size = (#Knoten im Teilbaum von e) e.make-set() 1 e.parent = e 2 e.size = 1 e.union(f) 1 Link(e.find-set( ), f.find-set( )) WS03/04

Vereinigung nach Größe Link(e,f) 1 if e.size  f.size 2 then f.parent = e 3 e.size = e.size + f.size 4 else /* e.size < f.size */ 5 e.parent = f 6 f.size = e.size + f.size WS03/04

Vereinigung nach Größe Satz Das Verfahren Vereinigung nach Größe hat folgende Invariante: Ein Baum mit Höhe h hat wenigstens 2h Knoten Beweis h1 h2 T1 T2 T1 T2 WS03/04

Vereinigung nach Größe Fall 1: Der neue Baum ist genauso hoch wie T1 Fall2 : Der neue Baum ist gewachsen Höhe von T: h2 + 1 Konsequenz Eine find-set-Operation kostet höchsten O( log n ) viele Schritte, falls die Anzahl der make-set-Operationen gleich n ist. WS03/04

Pfadverkürzung e.find-set() 1 if e  e.parent 2 then e.parent = e.parent.find-set( ) 3 return WS03/04

Analyse der Laufzeit m Gesamtanzahl der Operationen, davon f find-Set-Operation und n make-Set-Operation. höchstens n – 1 union-Operationen Vereinigung nach Größe: O( n + f log n) Vereinigung nach Pfadverkürzung: Falls f < n, Q(n + f log n) Falls f  n, Q(f log1 +f/n n) WS03/04

Analyse der Laufzeit Satz ( Vereinigung nach Größe und Pfadverkürzung) Bei der Verwendung der Strategie Vereinigung nach Größe und Pfadverkürzung benötigen m Union-Find-Operation über n Elementen Q(m * (m,n)) Schritte. (m,n) = Inverse der Ackermann-Funktion WS03/04

Ackermann-Funktion und Inverse A(1,j) = 2j für j  1 A(i,1) = A(i – 1,2) für i  2 A(i,j) = A(i – 1, A(i, j - 1)) für i,j  2 Inverse Ackermann-Funktion WS03/04

Ackermann-Funktion und Inverse WS03/04