Kap. 6.5: Minimale Spannbäume

Ähnliche Dokumente
3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

4 Greedy-Algorithmen (gierige Algorithmen)

S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J

Das Briefträgerproblem

Graphen: Datenstrukturen und Algorithmen

Kap. 4.2: Binäre Suchbäume

16. All Pairs Shortest Path (ASPS)

WS 2009/10. Diskrete Strukturen

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

13. Binäre Suchbäume

Algorithmen II Vorlesung am

8 Diskrete Optimierung

Datenstrukturen & Algorithmen

Algorithmen und Datenstrukturen 2

Vorlesung 3 MINIMALE SPANNBÄUME

Steinerbäume. Seminarausarbeitung Hochschule Aalen Fakultät für Elektronik und Informatik Studiengang Informatik Schwerpunkt Software Engineering

Undirected Single-Source Shortest Paths with Positive Integer Weights in Linear Time

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Datenstrukturen und Algorithmen SS07

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen Suchbaum

Algorithmentheorie Maximale Flüsse

Gliederung. Definition Wichtige Aussagen und Sätze Algorithmen zum Finden von Starken Zusammenhangskomponenten

Anmerkungen zur Übergangsprüfung

Die in den Suchverfahren konstruierten Graphen waren zusammenhängend und enthielten keine Kreise. Also vereinbaren wir:

Seminarvortag zum Thema Virtual Private Network Design im Rahmen des Seminars Network Design an der Universität Paderborn

w a is die Anzahl der Vorkommen von a in w Beispiel: abba a = 2

Algorithmen und Datenstrukturen (WS 2007/08) 63

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

Informatik II Greedy-Algorithmen

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Datenstrukturen und Algorithmen

Approximationsalgorithmen: Klassiker I. Kombinatorische Optimierung Absolute Gütegarantie Graph-Coloring Clique Relative Gütegarantie Scheduling

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Codierung, Codes (variabler Länge)

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15.

Bäume und Wälder. Bäume und Wälder 1 / 37

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg

Programmiertechnik II

Maximaler Fluß und minimaler Schnitt. Von Sebastian Thurm

Modelle und Statistiken

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Statistische Untersuchungen zu endlichen Funktionsgraphen

2. Lernen von Entscheidungsbäumen

15 Optimales Kodieren

Fully dynamic algorithms for the single source shortest path problem.

Die Komplexitätsklassen P und NP

Suchen und Sortieren Sortieren. Heaps

EndTermTest PROGALGO WS1516 A

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (20 Graphen) T. Lauer

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Bäume und Wälder. Bäume und Wälder 1 / 37

Die k kürzesten Wege in gerichteten Graphen

NP-Vollständigkeit. Krautgartner Martin ( ) Markgraf Waldomir ( ) Rattensberger Martin ( ) Rieder Caroline ( )

Algorithmen & Datenstrukturen 1. Klausur

Abschnitt: Algorithmendesign und Laufzeitanalyse

Scheduling und Lineare ProgrammierungNach J. K. Lenstra, D. B. Shmoys und É.

Codierungstheorie Rudolf Scharlau, SoSe

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Kombinatorische Optimierung

Kürzeste Wege in Graphen. Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik

Entwurf und Analyse von Algorithmen WS 1999/2000

Algorithmische Methoden der Netzwerkanalyse

Seminarausarbeitung Entwurf und Analyse von Datenstrukturen. Splay Trees. Mirco Lukas und Alexander Werthmann. Datum:

Praktikum Planare Graphen

Punktbeschriftung in Dynamischen Karten

Kapitel 6: Graphalgorithmen Gliederung

Randomisierte Algorithmen

Sortierte Folgen 250

4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum

Alignment-Verfahren zum Vergleich biologischer Sequenzen

Primzahlzertifikat von Pratt

Algorithmen und Datenstrukturen

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Branch-and-Bound. Wir betrachten allgemein Probleme, deren Suchraum durch Bäume dargestellt werden kann. Innerhalb des Suchraums suchen wir

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen:

Programmierkurs Java

HINWEISE ZUR ADS-KLAUSUR SS06 für BACHELOR (für beide Termine)

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)

WS 2013/14. Diskrete Strukturen

1 topologisches Sortieren

Wasserfall-Ansätze zur Bildsegmentierung

Graphenalgorithmen und lineare Algebra Hand in Hand Vorlesung für den Bereich Diplom/Master Informatik

Approximationsalgorithmen

Programmierung 2. Dynamische Programmierung. Sebastian Hack. Klaas Boesche. Sommersemester

Kapiteltests zum Leitprogramm Binäre Suchbäume

Zeichnen von Graphen. graph drawing

Alles zu seiner Zeit Projektplanung heute

Netzwerkmodelle. Seminar Netzwerkanalyse. Sommersemester 2005 Jasmine Metzler

Lenstras Algorithmus für Faktorisierung

Kostenmaße. F3 03/04 p.188/395

Transkript:

Kap. 6.5: Minimale Spannbäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 19./20. VO DAP2 SS 2009 30.6./2.7.2009 1

Anmeldung zur Klausur 31.07.2009 um 10:15 Uhr Informatik AI/KI Bacc+Diplom: BOSS System 16.7.-27.7. Informatik AI/KI Diplom: BOSS System ab sofort IKT/ET:Bacc/Diplom: BOSS System? Physik Bacc/Diplom: ihr Dekanat Datenanalyse und Datenmanagement / Statistik Bacc/ Diplom: ihr eigenes Prüfungsamt? Mathematik Bacc/Diplom: BOSS System? Lehramt, BaMaLa: direkt bei uns? Bei Problemen mit BOSS: schriftlich beim Prüfungsamt anmelden 3

Nachtest für Ausnahmefälle Di 14. Juli 2009, voraussichtlich 16:00 Uhr, OH14, R. 202 Anmeldung bis 9. Juli erforderlich via Email an Nicola Beume Stoff: Alles bis inkl. Hashing (inkl.1.-10. Übungsblatt) Teilnahmevoraussetzungen: Attest/Entschuldigt beim 1. oder 2. Übungstest oder besondere Härtefälle anerkannt in meiner Sprechstunde Di 7.7.09,14:15 Uhr-15:15 Uhr 4

Überblick Minimale Spannbäume (Einführung) Algorithmus von Kruskal ADT Union Find extrem langsam wachsende Funktion α(n) 5

Motivation Was gibt es heute Besonderes? einfacher und schöner Greedy-Algorithmus Was gibt es heute Besonderes? ADT UNION-FIND: So kam ich zur Informatik Und was noch? extrem langsam wachsende Funktion 6

Kap. 6.5 Minimale Spannbäume Achtung: in diesem Abschnitt ungerichtete gewichtete Graphen! ungerichteter Graph G=(V,E) Gewichtsfunktion w : E R Kantengewichte: Kosten, Länge, 7

Bäume Definition: Ein ungerichteter Graph heißt Wald (engl. forest), wenn er kreisfrei ist. Wenn er zusätzlich zusammenhängend ist, dann heißt er Baum (engl. tree). auch: freier Baum (kein gewurzelter Baum) 8

Theorem: Sei G=(V,E) ungerichteter Graph (ohne Mehrfachkanten, Schleifen). Dann sind äquivalent: 1) G ist ein Baum 2) Jedes Paar von Knoten ist durch einen eindeutigen Weg verbunden. 3) G ist zshgd., zerfällt aber durch Entfernen einer beliebigen Kante in zwei Komponenten. 4) G ist zshgd. und E = V -1 5) G ist kreisfrei und E = V -1 6) G ist kreisfrei, aber durch Hinzufügen einer beliebigen Kante entsteht ein Kreis. 10

Erläuternde Bilder zum Theorem zu 2) zu 3) zu 6) 11

Beweis: durch Ringschluss 1) 2) 6) 1) 1) 2) Da Baum zshgd. ex. Weg zwischen u und v Annahme: zwei Wege p und q p u x y v q p + q bilden Kreis! Widerspruch 12

2) 3) zusammenhängend klar Annahme: G zerfällt nach Löschen von (u,v) nicht Ex. Weg zwischen u und v, der (u,v) nicht benutzt Weg nicht eindeutig! Widerspruch 13

3) 4) zusammenhängend klar G besitzt DFS-Baum mit V -1 T-Kanten Falls G mehr Kanten besitzt ex. B-Kante Durch Löschen einer B-Kante zerfällt G aber nicht G hat V -1 Kanten 14

4) 5) Da G zshgd. und E = V -1 die T-Kanten eines DFS-Baums sind genau die Kanten von G keine B-Kanten G kreisfrei 15

5) 6) G kreisfrei und besteht aus k Komponenten G hat V -k Kanten k=1 (d.h. G ist zusammenhängend) Hinzufügen einer Kante erzeugt Kreis 16

6) 1) Sei u,v beliebiges Knotenpaar Entweder (u,v) E oder Hinzufügen von (u,v) erzeugt Kreis ex. Weg von u nach v in G G ist zusammenhängend 17

Spannbaum Definition: Sei G=(V,E) ein ungerichteter, zshgd. Graph. Ein Untergraph T=(V,E T ) von G heißt Spannbaum (engl. spanning tree) von G, falls T ein Baum ist. Gewicht eines Spannbaums: w(t) := w(e T ) := e ET w(e) 18

Minimaler Spannbaum Minimum Spanning Tree (MST) Gegeben: ungerichteter, zshgd. Graph G = (V,E) Gesucht: Gewichtsfunktion w : E R ein Spannbaum T von G mit minimalem Gewicht w(t) Anwendung: Konstruktion von Netzwerken 19

Beispiel für MST a 4 12 9 b c 2 10 d 11 e 4 7 f 5 1 2 g h 8 7 5 i 20

Definition: Eine Teilmenge E der Kanten heißt aussichtsreich, wenn es einen MST gibt, der alle Kanten aus E enthält. Eine Kante (u,v) verlässt eine Knotenmenge S V, wenn u S und v S b d g a e i c f S h 22

E := ist immer aussichtsreich. E aussichtsreich und E = V 1 G := (V,E ) ist ein MST b d g a e i c f S h 23

MST Eigenschaft Lemma: Sei G=(V,E) zshgd. mit Gewichtsfunktion w : E R. Seien: S V T E aussichtsreich und keine Kante aus T verlässt S e E eine Kante mit minimalem Gewicht, die S verlässt Dann ist T {e} aussichtsreich. b d g a e i c e f S h

Beweis: Ex. MST T=(V,E T ) mit E E T Falls e E T fertig! Sonst: E T {e} enthält Kreis: e S e' Ex. Kante e E T auf Kreis, die S verlässt Da w(e) w(e ) T e + e ist ein MST E {e} ist aussichtsreich 26

6.5.1 Algorithmus von Kruskal Idee: Sortiere die Kanten nach aufsteigendem Gewicht: w(e 1 ) w(e 2 ) w(e m ) T:= Für i:=1,,m: Falls T {e i } kreisfrei, dann: T:=T {e i } Greedy-Algorithmus ( gefräßig ): iterative Konstruktion einer Lösung, die immer um die momentan besten Kandidaten erweitert wird. 27

Beispiel für Kruskal a 4 12 9 b c 2 10 d 11 e 4 7 f 5 1 2 g h 8 7 5 i 29

Korrektheit von Kruskal Theorem: Sei G=(V,E) zshgd. mit Gewichtsfunktion w : E R. Dann berechnet der Algorithmus von Kruskal einen MST von G. Beweis: T ist aufspannender Baum: offensichtlich, denn G ist zshgd., und wir fügen Kanten nur dann nicht hinzu, wenn sie einen Kreis schließen würden. Minimalität: mittels obigem Lemma (MST Eigenschaft): 30

MST Eigenschaft Lemma: Sei G=(V,E) zshgd. mit Gewichtsfunktion w : E R. Seien: S V T E aussichtsreich und keine Kante aus T verlässt S e E eine Kante mit minimalem Gewicht, die S verlässt Dann ist T {e} aussichtsreich. 31

Beweis ff: Minimalität Seien t 1,t 2,,t k die Kanten, die Kruskal in dieser Reihenfolge zu T hinzufügt. Wir zeigen: T i :={t 1,t 2,,t i } mit 0 i k ist aussichtsreich. Induktion: i=0: T 0 = o.k. Sei nun 1 i k: Ind.Ann.: T i-1 ist aussichtsreich. Sei t i =(u,v) und C u =(U,E u ) die Komponente des Graphen G i-1 =(V,T i-1 ) die u enthält. t i verläßt U (da T i-1 {t i } kreisfrei bleibt) keine Kante aus T i-1 verläßt U keine billigere Kante als t i verläßt U t i ist eine Kante minimalen Gewichts, die U verläßt T i := T i-1 {t i } ist aussichtsreich.

Realisierung von Kruskal Idee: Sortiere die Kanten nach aufsteigendem Gewicht: w(e 1 ) w(e 2 ) w(e m ) T:= Für i:=1,,m: Falls T {e i } kreisfrei, dann: T:=T {e i } Problem: Teste, ob T {e i } kreisfrei 33

Teste, ob T {e i } kreisfrei Idee: Aufruf der Funktion ISACYCLIC(V, T {e i }) Gesamtlaufzeit für alle Kreis-Tests: O( V E ), da E Aufrufe nötig sind, und T pro Aufruf bis zu V -1 Kanten besitzen kann. Besser: Datenstruktur Union-Find Idee: Lasse Wälder wachsen bzw. Partitionierung von Mengen fast Linearzeit erreichbar 34

Kruskal mit Mengenpartitionierung a 4 12 9 b c 2 10 e 11 {a},{b},{c},{d},{e},{f},{g},{h},{i} {a},{b},{c},{d},{e},{f,h},{g},{i} {a},{b},{c,e},{d},{f,h},{g},{i} {a},{b},{c,e},{d,g},{f,h},{i} {a},{b},{c,e,f,h},{d,g},{i} {a,b},{c,e,f,h},{d,g},{i} 4 d 7 f 5 1 (f,h) (c,e) (d,g) (e,f) (a,b) (c,f) 2 g h 8 7 5 i

Partitionierung von Mengen Idee: Zu Beginn ist jeder Knoten in einer eigenen Menge Wird eine Kante e=(u,v) zu T hinzugenommen, dann werden die beiden Mengen, in denen u und v jeweils liegen, vereinigt. Test auf Kreisfreiheit von T {(u,v)}: Kreis entsteht genau dann wenn u und v in der gleichen Menge liegen 36

Operationen zur Partitionierung Erzeuge eine einelementige Menge der Partition: MAKESET Finde die Partitionsmenge, in der sich ein gegebenes Element befindet: FIND Vereinige zwei Partitionsmengen: UNION hierfür: ADT UNION-FIND 37

6.5.3 Der ADT UNION-FIND Zweck: Verwaltung einer Partition einer endlichen Menge, deren Elemente aus einem endlichen Universum U sind. Wertebereich: Familie P={S 1,S 2,,S k } paarweiser disjunkter Teilmengen einer endlichen Menge U. Für jede Teilmenge gibt es einen eindeutigen Repräsentanten s i S i. Sei P={S 1,S 2,,S k } mit Repräsentanten s i die Instanz vor Anwendung der Operation. 38

Operationen des ADT UNION-FIND MAKESET(U x) Voraussetzung: x S 1 S 2 S k Erzeugt eine neue Menge S k+1 :={x} mit Repräsentant s k+1 :=x und fügt sie zu P hinzu. FIND(U x): U Voraussetzung: x ist in einer der Mengen S 1,S 2,,S k enthalten Gibt den Repräsentanten der Menge zurück, die x enthält. 39

Operationen des ADT UNION-FIND UNION(U x, U y) Voraussetzung: x und y sind jeweils Repräsentant einer der Mengen S 1,S 2,,S k Sei x Repräsentant von S x, und y Repräsentant von S y. Dann werden S x und S y in P durch S := S x S y ersetzt, d.h. die Instanz P nach der Operation ist P :=P \ {S x, S y } {S }. Als Repräsentant für S wird ein beliebiges Element in S gewählt. 40

Realisierung des ADT UNION-FIND Idee: Realisierung durch gewurzelte Bäume: Jede Menge S k wird durch einen gewurzelten Baum dargestellt. Die Knoten des Baumes sind die Elemente der Menge. Die Wurzel des Baumes ist der Repräsentant der Menge. In der Implementierung hat jeder Knoten v nur einen Verweis auf seinen Elter (keine Kindzeiger) 41

Realisierung durch gewurzelte Bäume Beispiel für 2 Mengen Implementierung: Jeder Knoten v hat Verweis auf seinen Elter: π(v) Die Wurzel zeigt auf sich selbst.

Implementierung von Union-Find (1) procedure MAKESET(U x) { (2) π[x]:=x (3) } (4) procedure UNION(U x, U y) { (5) π[x]:=y (6) } (7) function FIND(U x):u { (8) while π[x] x do { x := π[x] } (9) return x (10) } 43

Laufzeitanalyse des ADT MAKESET(x): O(1) UNION(x,y): O(1) FIND(x): O(h(T x )), wobei T x der Baum ist, der x enthält. Gesamtlaufzeit von n MAKESET Operationen und n-1 UNION und 2m FIND Operationen (für Kruskal): O(n+mn), da die Höhe eines Baumes Θ(n) sein kann. hier: n= V, m= E jetzt: Verbesserung der Laufzeiten 44

Verbesserung 1: Gewichtete Vereinigungsregel Idee: Bei UNION: Hänge den Baum mit der kleineren Höhe an den Baum mit der größeren Höhe. 45

Realisierung durch gewurzelte Bäume Wenn h(t x )>h(t y ), dann ist die neue Höhe h(t x ) sie nimmt nicht zu Wenn beide Bäume gleiche Höhe haben, dann ist die neue Höhe: h(t x )+1

Verbesserung 1: Gewichtete Vereinigungsregel Lemma: UNION mit gewichteter Vereinigungsregel liefert immer Bäume, deren Höhe h(t) durch log s(t) nach oben beschränkt ist. Anzahl der Knoten im Baum Beweis: Wir zeigen, dass jeder erzeugte Baum mit Höhe d mindestens 2 d Knoten besitzt. Induktion: d=0: Baum besitzt 1 Knoten: 1 2 0 d 1: Ind.-Ann.: Beh. gilt für alle Bäume mit d <d 47

Beweis Lemma ff. z.z.: Jeder erzeugte Baum mit Höhe d hat 2 d Knoten Sei T Baum mit Höhe d mit minimaler Knotenanzahl. T entstand dadurch, dass bei UNION der Baum T 1 an T 2 gehängt wurde. Wir wissen also: h(t 1 ) h(t 2 ) und h(t 2 ) d-1, denn sonst hätte T 2 Höhe d aber weniger Knoten als T, was nach Wahl von T nicht möglich ist. h(t) ist also höher als h(t 1 ) und h(t 2 ), deswegen müssen beide gleiche Höhe gehabt haben h(t 1 )=h(t 2 )=d-1 aus Ind.Vorr. folgt: s(t 1 ) 2 d-1 und s(t 2 ) 2 d-1 daraus folgt: s(t) 2 d-1 + 2 d-1 = 2 d

Analyse der gewichteten Vereinigungsregel Lemma: Worst-Case Laufzeit einer FIND Operation ist durch O(log n) beschränkt. Die Gesamtlaufzeit von n MAKESET Operationen und n-1 UNION und 2m FIND Operationen (für Kruskal) ist also: O(n+m log n). Bemerkung: Statt als Rang einer Wurzel die Höhe des Baumes zu benutzen, kann man alternativ auch die Anzahl der Knoten im Baum verwenden auch Höhe log s(t). 49

Verbesserung 2: Pfadkomprimierung Idee: Bei einem Aufruf von FIND(x) werden alle Knoten auf dem Pfad von x bis zur Wurzel zu direkten Kindern der Wurzel gemacht. vor und nach Pfadkomprimierung

Analyse der Pfadkomprimierung Theorem: Wird die gewichtete Vereinigungsregel und Pfadkomprimierung benutzt, so kosten n-1 UNION und 2m FIND Operationen im Worst Case Zeit O( (n+m) α(n) ). Dabei ist α(n) eine extrem langsam wachsende Funktion. Tarjan machte die ursprüngliche Analyse mit der Inversen der Ackermann-Funktion, die sehr ähnlich zu α(n) ist. 51

Definition Für k 0 und j 1 definieren wir: A 0 (1) = 1+1=2 (j+1)-fache Anwendung der Funktion Es gilt: A 2 (j)=2 j+1 (j+1)-1 A 1 (1) = A 0 (2) (1)=A 0 (A 0 (1)) = A 0 (2) = 2+1=3 A 2 (1) = A (2) 1 (1)=A 1 (3) = A (4) 0 (3) = A (3) 0 (A 0 (3)) =7 A 3 (1) = A (2) 2 (1)=A 2 (7) = 2 8 8-1=2047 A 52 4 (1) = A (2) 3 (1)=A 3 (2047) A 2 (2047)>16 512 10 80

Definition Die Inverse der Funktion A k ist definiert als α(n) := min { k A k (1) n} Wir können also annehmen, dass α(n) 4 ist für alle praktisch relevanten Werte von n. 53

Implementierung von UnionFind (1) procedure MAKESET(U x) { (2) π[x]:=x (3) rank[x]:=0 (4) } (5) procedure UNION(U x, U y) { (6) if rank[x]>rank[y] then (7) π[y]:=x (8) else π[x]:=y (9) if rank[x]==rank[y] then rank[y]:=rank[y]+1 (10) } (11) 54

Implementierung von UnionFind (1) function FIND(U x):u { (2) if π[x] x then (3) π[x]:=find(π[x]) (4) return π[x] (5) } 55

Idee: Realisierung von Kruskal mit UNION-FIND Sortiere die Kanten nach aufsteigendem Gewicht: w(e 1 ) w(e 2 ) w(e m ) T:= Für i:=1,,m: Falls T {e i } kreisfrei, dann: T:=T {e i } Problem: Teste, ob T {e i } kreisfrei 56

Realisierung von Kruskal mit Union-Find (1) Sortiere Kanten, so dass w(e 1 ) w(e 2 ) w(e m ) (2) T:= ; i:=1 (3) while T < V -1 do // let e i =(u,v) (4) x:=p.find(u) (5) y:=p.find(v) (6) if x y then { (7) T:=T {e i } (8) P.UNION(x,y) (9) } // while (10) i:=i+1 (11) } 57

Analyse von Kruskal mit Union-Find Sortieren der Kanten: O(m log m) Initialisieren von MAKESET: O(n) while-schleife: wird im schlechtesten Fall für alle Kanten durchlaufen: m Mal Dabei insgesamt 2m FIND-Operationen und n-1 UNION-Operationen Dies ist also: O((n+m)α(n)) und falls G zusammenhängend ist, gilt n=o(m) und damit O(m α(n)) Gesamtlaufzeit wird von Sortieren dominiert: O(m log m) 58

Analyse von Kruskal mit Union-Find Theorem: Der Algorithmus von Kruskal berechnet einen minimalen Spannbaum eines ungerichteten, zusammenhängenden Graphen G=(V,E) in Zeit O( E log E ). jetzt: PRIM Algorithmus für MST 59