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



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

Kapitel 5: Minimale spannende Bäume Gliederung der Vorlesung

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

Kapitel 4: Minimal spannende Bäume Gliederung der Vorlesung

Kapitel 4: Minimale spannende Bäume Gliederung der Vorlesung

Kapitel 8: Bipartite Graphen Gliederung der Vorlesung

Teil 2: Graphenalgorithmen

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

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

9 Minimum Spanning Trees

Kapitel 9: Lineare Programmierung Gliederung

Aufgaben zur Klausurvorbereitung

Algorithmen & Komplexität

Kapitel 1: Fallstudie Bipartite Graphen Gliederung der Vorlesung

ADS: Algorithmen und Datenstrukturen 2

Kapitel 4: Netzplantechnik Gliederung der Vorlesung

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Kapitel 3: Sortierverfahren Gliederung

Vorlesung Datenstrukturen

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

Kapitel 1: Motivation / Grundlagen Gliederung

Kapitel 2: Sortier- und Selektionsverfahren Gliederung

Algorithmen & Komplexität

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

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

Kapitel 6: Graphalgorithmen Gliederung

Kap. 6.5: Minimale Spannbäume

Kapitel 3: Untere Schranken für algorithmische Probleme Gliederung

Kapitel 3: Kürzeste Pfade Gliederung der Vorlesung

11. GRAPHEN 3 FLÜSSE UND SPANNBÄUME

1. Asymptotische Notationen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. String Matching 5. Ausgewählte Datenstrukturen

10 Kürzeste Pfade SSSP-Problem

Graphdurchmusterung, Breiten- und Tiefensuche

ADS: Algorithmen und Datenstrukturen 2

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

Theoretische Informatik

Rückblick: Starke Zusammenhangskomponenten

3.2 Generischer minimaler Spannbaum-Algorithmus

3. Minimale Spannbäume. Definition 99 T heißt minimaler Spannbaum (MSB, MST) von G, falls T Spannbaum von G ist und gilt:

5. Bäume und Minimalgerüste

Kapitel 4: Komplexitätstheorie Gliederung

Algorithmen und Datenstrukturen

Informatik II, SS 2014

Kapitel 5: Paradigmen des Algorithmenentwurfs. Gliederung

p = (v 0, v 1,..., v k )

Grundlagen: Algorithmen und Datenstrukturen

Kapitel 5: Dynamisches Programmieren Gliederung

8 Diskrete Optimierung

Wie wird ein Graph dargestellt?

4.1 Bäume, Datenstrukturen und Algorithmen. Zunächst führen wir Graphen ein. Die einfachste Vorstellung ist, dass ein Graph gegeben ist als

Kapitel 8 Graphenalgorithmen. Minimaler Spannbaum Union-find-Problem Kürzeste Wege

Manipulation von Mengen

Datenstrukturen. Sommersemester Kapitel 1: Motivation / Grundlagen. Steffen Lange

Lernmodul 7 Algorithmus von Dijkstra

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 3: Minimal aufspannende Bäume und Matroide

1. Klausur zur Vorlesung Algorithmentechnik Wintersemester 2008/2009

Optimale Lösungen mit Greedy-Strategie erfordern Optimalität der Greedy-Wahl. Beispiele für optimale Greedy-Lösungen

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

Graphentheorie. Zusammenhang. Zusammenhang. Zusammenhang. Rainer Schrader. 13. November 2007

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

Graphen: Datenstrukturen und Algorithmen

Algorithmen und Datenstrukturen

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

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

Grundlagen Datenstrukturen Transitive Hülle Traversierung Kürzeste Wege Spannender Baum Max. Fluss Zuordnungen. 6. Graphen

Vorlesung Datenstrukturen

Informatik II, SS 2016

Definition Gerichteter Pfad. gerichteter Pfad, wenn. Ein gerichteter Pfad heißt einfach, falls alle u i paarweise verschieden sind.

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Algorithmik WS 07/ Vorlesung, Andreas Jakoby Universität zu Lübeck. 10 Matching-Probleme

Minimal spannende Bäume

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 1: Grundlagen der algorithmischen Graphentheorie

3 Klassifikation wichtiger Optimierungsprobleme

Kap. 6.5: Minimale Spannbäume ff

2 Eulersche Polyederformel und reguläre Polyeder

Algorithmen und Datenstrukturen

Folien aus der Vorlesung Optimierung I SS2013

ADS: Algorithmen und Datenstrukturen 2

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Datenstrukturen

Algorithmen und Datenstrukturen 2

Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Bäume und Wälder. Definition 1

3.2. Divide-and-Conquer-Methoden

Bäume und Wälder. Definition 1

Graphalgorithmen II. Werner Sembach Werner Sembach Graphalgorithmen II / 22

Minimum Spanning Tree

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Berechnung minimaler Spannbäume. Beispiel

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

Diskrete Strukturen Kapitel 4: Graphentheorie (Bäume)

SS / 12

Das Heiratsproblem. Definition Matching

ADS 2: Algorithmen und Datenstrukturen

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Transkript:

Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. äume / Graphen. Hashing 6. Algorithmische Geometrie 4/6, Folie 1 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmen aufspannender äume u Motivation (Teil 1) gegeben: seien n Städte (/* hier A,,...,E */) und damit ein ungerichteter Graph G (/* in dem zwischen je zwei Städten eine Kante vorkommt */) C A D E gesucht: Teilgraph G von G, in dem es eine Verbindung von jeder Stadt zu jeder anderen Stadt gibt (/* Telefon- bzw. Stromleitungsnetz */) 4/6, Folie 2 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmen aufspannender äume u Motivation (Teil 1, cont.)... mögliche Lösungen C A C A D E D E 4/6, Folie 3 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmen aufspannender äume u Grundbegriffe es sei G = (V,E) ein ungerichteter Graph G ist zusammenhängend, falls es zu je zwei Knoten x,y V einen Weg w = (v 1,v 2,...,v n-1,v n ) von x nach y in G gibt (/* d.h. v 1 = v und v n = v und { v i,v i+1 } E für alle i mit 1 i n - 1 */) G hat einen Kreis, falls es einen Knoten x V und einen Weg w = (v 1,v 2,...,v n-1,v n ) mit n > 3 von x nach x gibt (/* d.h. v 1 = v n =x */), in dem jeder Knoten außer x nur einmal vorkommt es sei der Graph G = (V,E ) ein Teilgraph von G (/* d.h. es gilt E V V, V V, und E E */) G = (V,E ) ist ein aufspannender aum von G, falls gilt: V = V G ist kreisfrei G ist zusammenhängend. 4/6, Folie 4 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmen aufspannender äume u Illustration C A C A D E D E C A D E 4/6, Folie 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmen aufspannender äume u eine einfache eobachtung es sei G = (V,E) ein ungerichteter Graph mit n Knoten und G = (V,E ) ein aufspannender aum in G Dann hat G genau n - 1 viele Kanten.... falls G weniger Kanten hat, kann G nicht zusammenhängend sein... falls G mehr Kanten hat, kann G nicht kreisfrei sein 4/6, Folie 6 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmen aufspannender äume u Aufgabenstellung Eingabe: Ausgabe: ein ungerichteter zusammenhängender Graph G = (V,E) ein aufspannender aum G = (V,E ) in G... später betrachten wir dieselbe Aufgabenstellung für kantenbewertete ungerichtete zusammenhängende Graphen und sind daran interessiert, einen aufspannenden aum mit minimalem Gewicht zu bestimmen 4/6, Folie 7 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmen aufspannender äume u Motivation (Teil 2) gegeben: seien n Städte (/* hier A,,...,E */) und damit ein ungerichteter Graph G (/*... und die Kanten haben die Entfernungen zwischen den Städten als Gewichte */) 3 C A 3 D E gesucht: Teilgraph G von G, in dem es eine Verbindung von jeder Stadt zu jeder anderen Stadt gibt und die Gesamtlänge der Verbindungen minimal sein soll 4/6, Folie 8 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmen aufspannender äume u Motivation (Teil 2, cont.)... eine Lösung (/* Gesamtlänge der Verbindungen = 20 */)... beste Lösung (/* Gesamtlänge der Verbindungen = 16 */) 3 3 C 3 A C 3 A D E D E 4/6, Folie 9 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmen aufspannender äume u Datenstruktur eine Menge M von Kanten (/* dient zur Verwaltung der in G potentiell aufzunehmenden Kanten */) 4/6, Folie 10 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmen aufspannender äume u erste algorithmische Idee (1) setze M = E und V = und E = (2) solange E < V - 1 a) wähle eine Kante e = { x,y } aus M und streiche e aus M b) setze V* = V { x,y } und E* = E { e } c) teste, ob der Graph G* = (V*,E*) kreisfrei ist falls ja, so setze V = E* und E = E* falls nein, so ändere V und E nicht... die Laufzeit hängt offenbar davon ab, wie effizient man in c) testen kann, ob G* = (V*,E*) kreisfrei ist... Verfeinerung: diesen Test möglichst einfach realisieren 4/6, Folie 11 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmen aufspannender äume u Hintergrund für eine Verfeinerung der algorithmischen Idee es sei G = (V,E) ein ungerichteter Graph es seien die Graphen G 1 = (V 1,E 1 ) und G 2 = (V 2,E 2 ) kreisfreie zusammenhängende Teilgraphen von G mit V 1 V 2 = es sei e = { x,y } E mit x V 1 und y V 2 Dann ist G* = (V*,E*) mit V* = V 1 V 2 und E* = E 1 E 2 { e } ein kreisfreier zusammenhängender Teilgraph von G. G... es ist offenbar essentiell V 1 und V 2 zu kennen und die Menge E 1 E 2 4/6, Folie 12 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmen aufspannender äume u Illustration G 1 = (V 1,E 1 ) G 2 = (V 2,E 2 ) C A C A D E D E C A G* = (V*,E*), wobei e = {,E } ist D E 4/6, Folie 13 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmen aufspannender äume u Grundbegriff es sei O eine Menge von Objekten es sei K = { M 1,M 2,...,M k } (/* mit 1 k n */) eine Menge von nicht-leeren Teilmengen von O K ist eine Klasseneinteilung der Menge O, falls gilt: für alle alle i,j mit 1 i,j k gilt: M i M j = (/* die Mengen von K sind paarweise disjunkt */) O = M 1 M 2... M k (/* jedes Objekt aus O kommt in einer Menge von K vor */) 4/6, Folie 14 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmen aufspannender äume u verfeinerte algorithmische Idee (1) setze M = E, E = und bilde die Klasseneinteilung K = { { x } x V } (2) solange E < V - 1 a) wähle eine Kante e = { x,y } aus M und streiche e aus M b) bestimme V 1,V 2 K mit x V 1 und y V 2 c) teste, ob V 1 V 2 gilt falls ja, so setze E = E { e }, streiche V 1 und V 2 aus der Klasseneinteilung K und füge die Menge V = V 1 V 2 zur Klasseneinteilung K hinzu (/* für alle V* K ist der durch V* induzierte Teilgraph G* = (V*,E(V*)) kreisfrei und zusammenhängend; V(E*) = { { x,y } E x,y V* } */) falls nein, so ändere E nicht... zur Verwaltung der Klasseneinteilung K verwendet man eine spezielle Datenstruktur (/* Union-Find-Struktur genannt */) 4/6, Folie 1 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmen minimal aufspannender äume u Illustration M = { { A, },{ A,C },{,C },{ A,D },... } E = K = { { A },{ },{ C },{ D },{ E } } C A M = { { A,C },{,C },{ A,D },... } E = { { A, } } K = { { A, },{ C },{ D },{ E } } D E M = { {,C },{ A,D },... } E = { { A, },{ A,C } } K = { { A,,C },{ D },{ E } } M = { { A,D },... } E = { { A, },{ A,C } } K = { { A,,C },{ D },{ E } } 4/6, Folie 16 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Union-Find-Strukturen u Grundidee es sei O = { o 1,...,o n } die Grundmenge der betrachteten Objekte (/* in unserem Fall sind das die Knoten von G */) wir interessieren uns für die Verwaltung von Klasseneinteilungen K von O (/* d.h. K = { M 1,...,M k } mit M 1... M k = O und die Mengen M 1,...,M k sind paarweise disjunkt */) die Anzahl der verwalteten Mengen ändert sich über die Zeit zentrale Operation: Vereinigung disjunkter Mengen... Zugriff auf die Mengen??? 4/6, Folie 17 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Union-Find-Strukturen u Namensgebung von Mengen o 1,...,o n dienen als Namen für die Einermengen { o 1 },...,{ o n } allgemein dient ein ausgezeichnetes Element o M als Name für eine Teilmenge M O u relevante Operation union(o i,o k ) Menge der verwalteten Mengen ändern, indem die Mengen mit den Namen o i bzw. o k vereinigt werden find(o) den Namen der Menge bestimmen, die aktuell das Objekt o enthält 4/6, Folie 18 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Union-Find-Strukturen u Realisierung von Union-Find-Strukturen (/* konzeptionell */) repräsentiere Mengen als äume beliebiger Ordnung jeder Knoten hat ein Objekt als Label jeder Knoten hat einen Zeiger auf seinen Vater die Wurzel hat einen Zeiger auf sich selbst das Label der Wurzel dient als Name für diese Menge 4/6, Folie 19 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Union-Find-Strukturen u Illustration einelementige Mengen 2 { 2 } mehrelementige Mengen 1 { 1,3,,7 } 3 7 4/6, Folie 20 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Union-Find-Strukturen u Realisierung von Union-Find-Strukturen (/* konzeptionell */) Find-Operation... gib das Label der Wurzel des aums zurück, in dem das Objekt o gespeichert ist 4... find(6) = find(2) = find(4) = 4 6 2 { 2,4,6 } Union-Operation... mache die Wurzel das aums für die Menge o 2 zum Sohn der Wurzel des aums für die Menge o 1 4 1 4 1 6 2 3 6 2 3 { 2,4,6 } { 1,3 } = { 1,2,3,4,6 } 4/6, Folie 21 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Union-Find-Strukturen u Implementierung von Union-Find-Strukturen (/* Version 1 */)... verwenden ein eindimensionales Array zur Repräsentation aller äume Väter 1 2 3 4 6 7 1 2 4 1 7 Objekte zugehörige Mengen: { 1,3,4 } { 2 } {,6 } { 7 } 4/6, Folie 22 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Union-Find-Strukturen u Implementierung von Union-Find-Strukturen (/* Version 1 */) Initialisierung for ( int o = 1; o <= n; ++o ) v[o] = o;... in Zeit O(n) Union-Operation void union ( int o1, int o2 ) { v[o2] = o1; }... in Zeit O(1) Find-Operation int find ( int o ) { while ( v[o]!= o ) { o = v[o]; } return(o); }... in Zeit O(n) 4/6, Folie 23 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Union-Find-Strukturen u Implementierung von Union-Find-Strukturen (/* Version 2 */)... verwenden zwei eindimensionale Arrays zur Repräsentation aller äume Väter Mächtigkeit der Mengen 1 2 3 4 6 7 1 2 4 1 7 3 1 1 2 2 1 1 Objekte zugehörige Mengen: { 1,3,4 } { 2 } {,6 } { 7 } 4/6, Folie 24 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Union-Find-Strukturen u Implementierung von Union-Find-Strukturen (/* Version 2 */) Initialisierung for ( int o = 1; o <= n; ++o ) { v[o] = o; m[o] = 1; }... in Zeit O(n) Union-Operation Find-Operation void union ( int o1, int o2 ) { if ( m[o1] > m[o2] ) { v[o2] = o1; m[o1] = m[o1] + m[o2]; } else { v[o1] = o2; m[o2] = m[o2] + m[o1]; } }... wie gehabt... in Zeit O(1)... aber, in Zeit O(log(n)) 4/6, Folie 2 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Union-Find-Strukturen u egründung Laufzeit der Find-Operation (/* Version 2 */) für einelementige Mengen gilt: tiefe() log(n) es seien M 1, M 2 Mengen mit n 1 bzw. n 2 Elementen, wobei n 1 n 2 gilt (/* nach IV gilt für die zugehörigen äume 1 und 2 : tiefe( 1 ) log(n 1 ) und tiefe( 2 ) log(n 2 ) */) Fall 1: tiefe() = tiefe( 1 ) à log(n) = log(n 1 + n 2 ) log(n 1 ) tiefe( 1 ) 1 1 2 2 4/6, Folie 26 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Union-Find-Strukturen u egründung Laufzeit der Find-Operation (/* Version 2 */) für einelementige Mengen gilt: tiefe() log(n) es seien M 1, M 2 Mengen mit n 1 bzw. n 2 Elementen, wobei n 1 n 2 gilt (/* nach IV gilt für die zugehörigen äume 1 und 2 : tiefe( 1 ) log(n 1 ) und tiefe( 2 ) log(n 2 ) */) Fall 2: tiefe() = tiefe( 2 ) + 1 à log(n) = log(n 1 + n 2 ) log(2n 2 ) log(2) + log(n 2 ) 1 + tiefe( 2 ) 1 1 2 2 4/6, Folie 27 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmen minimal aufspannender äume u Datenstruktur eine Menge M von Kanten (/* dient zur Verwaltung der potentiell aufzunehmenden Kanten */) eine Union-Find-Struktur (/* Version 2 */) zur Verwaltung der Knotenmengen, der sukzessive erzeugten kreisfreien zusammenhängenden Teilgraphen 4/6, Folie 28 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmen minimal aufspannender äume u verfeinerte algorithmische Idee (/* mit Union-Find-Struktur */) (1) setze M = E, setze E = und initialisiere eine Union-Find-Struktur für die Knotenmenge V (2) solange E < V - 1 a) wähle eine Kante e = { x,y } aus M und streiche e aus M b) bestimme a = find(x) und b = find(y) c) teste, ob a b gilt falls ja, so setze E = E { e } und führe die Operation union(a,b) aus falls nein, so ändere E nicht... geht in Zeit O(n) + m*o(1) + m*o(log(n)) (/* falls Variante 2 zur Implementierung von Union-Find-Strukturen verwendet wird */), wobei n die Anzahl der Knoten von G und m die Anzahl der Kanten von G ist 4/6, Folie 29 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmen minimal aufspannender äume u Illustration A C D E A C D E 1 1 1 1 1 C A M = { { A, },{ A,C },{,C },{ A,D },... } E = D E A C D E A A C D E 2 1 1 1 1 M = { { A,C },{,C },{ A,D },... } E = { { A, } } 4/6, Folie 30 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmen minimal aufspannender äume u Illustration A C D E A A C D E 2 1 1 1 1 C A M = { { A,C },{,C },{ A,D },... } E = { { A, } } D E A C D E A A A D E 3 1 1 1 1 M = { {,C },{ A,D },... } E = { { A, },{ A,C } } 4/6, Folie 31 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmen minimal aufspannender äume u Illustration A C D E A A A D E 3 1 1 1 1 C A M = { {,C },{ A,D },... } E = { { A, },{ A,C } } D E A C D E A A A D E 3 1 1 1 1 M = { { A,D },... } E = { { A, },{ A,C } } 4/6, Folie 32 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmen minimal aufspannender äume u Grundbegriffe es sei G = (V,E) ein ungerichteter Graph es sei g(.) eine Funktion, die jeder Kante in V eine reelle Zahl zuordnet... das Paar (G,g(.)) heißt ungerichteter kantengewichteter Graph das Gewicht g(g) von G ist die Summe der Gewichte der Kanten von G 4/6, Folie 33 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmen minimal aufspannender äume u Aufgabenstellung Eingabe: Ausgabe: ein ungerichteter zusammenhängender Graph G = (V,E) und eine zugehörige Gewichtsfunktion g(.) ein aufspannender aum G = (V,E ) in G, der ein minimales Gewicht hat 4/6, Folie 34 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmen minimal aufspannender äume u Datenstruktur eine Menge M von Kanten (/* dient zur Verwaltung der in G potentiell aufzunehmenden Kanten */) eine Union-Find-Struktur (/* Version 2 */) zur Verwaltung der Knotenmengen, der sukzessive erzeugten kreisfreien zusammenhängenden Teilgraphen 4/6, Folie 3 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmen minimal aufspannender äume u algorithmische Idee (1) setze M = E, setze E = und initialisiere eine Union-Find-Struktur für die Knotenmenge V (2) solange E < V - 1 a) wähle eine Kante e = { x,y } mit minimalem Gewicht aus M und streiche e aus M b) bestimme a = find(x) und b = find(y) c) teste, ob a b gilt falls ja, so setze E = E { e } und führe die Operation union(a,b) aus falls nein, so ändere E nicht... geht in Zeit O(n) + m*o(m)+ m*o(log(n)) (/* falls Variante 2 zur Implementierung von Union-Find-Strukturen verwendet wird */), wobei n die Anzahl der Knoten von G und m die Anzahl der Kanten von G ist 4/6, Folie 36 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

estimmung minimal aufspannender äume u Anmerkung falls man die Menge M, der aufzunehmenden Kanten, mit Hilfe einer Prioritätswarteschlange realisiert (/* Heap, wobei statt ein zur Sicherstellung der Heap-Eigenschaft verwendet wird */), kann 2a) jeweils in Zeit O(log(m)) realisiert werden, wobei m die Anzahl der Kanten von G ist (/* die Initialisierung der Prioritätswarteschlange kostet einmalig Zeit O(m) */)... geht offenbar in Zeit O(n) + O(m) + m*o(log(m)) + m*o(log(n)), wobei n die Anzahl der Knoten von G und m die Anzahl der Kanten von G ist 4/6, Folie 37 2014 Prof. Steffen Lange - HDa/FbI - Datenstrukturen