Analyse der Laufzeit von Algorithmen

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen für das Erfüllbarkeitsproblem SAT
Advertisements

Christian Scheideler SS 2009
Kap. 13 Sweep-Line Algorithmen Kap Schnittprobleme
Christian Scheideler SS 2009
Man bestimme den „minimalen aufspannenden Baum“ des Graphen.
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel durch eine Rekursionsformel (recurrence,
Minimum Spanning Tree: MST
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann.
Algebraische Zahlen: Exaktes Rechnen mit Wurzeln
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.
B-Bäume.
Kapitel 6: Klassifizierung von Sortiertechniken
Greedy-Algorithmus Greedy-Algorithmen sind mit dem dynamischen Programmieren verwandt, jedoch einfacher. Die Grundsituation ist dieselbe: Es geht um ein.
Graphalgorithmen ( elementare A. )
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Die 1-Baum-Relaxation des TSP mit der Subgradientenmethode
Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen
Verifizieren versus Berechnen
Gliederung Motivation / Grundlagen Sortierverfahren
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
Prof. Dr. S. Albers Prof. Dr. Th. Ottmann
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts
Union-Find-Strukturen
Geometrisches Divide and Conquer
Kapitel 5 Stetigkeit.
Seminar parallele Programmierung SS 2003
Christian Schindelhauer
Minimum Spanning Tree: MST
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Effiziente Algorithmen
Effiziente Algorithmen
Chromatische Zahl.
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
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
Effiziente Algorithmen
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
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 Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Polynome und schnelle Fourier-Transformation
Einführung in die Programmierung Wintersemester 2013/14 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Institut für Theoretische Informatik
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Kapitel 8: Graphalgorithmen 8. 1 Grundlagen 8
Kapitel 8: Graphalgorithmen 8. 1 Grundlagen 8
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
HEINZ NIXDORF INSTITUT Universität Paderborn Fachbereich Mathematik/Informatik Algorithmische Probleme in Funknetzwerken VIII Christian Schindelhauer
Bipartite Graphen Der Satz von König.
Gliederung der Vorlesung
Einführung in die Informationsverarbeitung Teil Thaller Stunde V: Wege und warum man sie geht Graphen. Köln 14. Januar 2016.
Das Problem des Handlungsreisenden
 Präsentation transkript:

Analyse der Laufzeit von Algorithmen Gliederung Grundlagen Analyse der Laufzeit von Algorithmen Untere Schranken für algorithmische Probleme Sortier- und Selektionsverfahren Paradigmen des Algorithmenentwurfs Ausgewählte Datenstrukturen Algorithmische Geometrie Umgang mit algorithmisch schwierigen Problemen Divide and Conquer Dynamisches Programmieren Greedy-Algorithmen

Gliederung ... weiteres Vorgehen wir schauen uns ein Beispiel für einen Greedy-Algorithmen in der Graphentheorie genauer an Algorithmus von Kruskal zum Bestimmen minimal spannender Bäume in ungerichteten kantengewichteten Graphen ... wir wählen einen anderen Blick auf diesen bekannten Standard-Algorithmus (/* Ziel: zeigen, dass dieser Algorithmus das leistet, was er leisten soll */)

Beispiel – Minimal spannende Bäume Grundbegriffe ungerichteter kantengewichteter Graph G = (V,E,w(.)), wobei gilt: V ist die Menge der Knoten von G E  { { u,v } | u,v  V } w(.) ist eine Funktion, die jeder Kante in e  E ihr Gewicht, d.h. eine Zahl w(e) zuordnet das Gewicht w(G) eines ungerichteten kantengewichteten G entspricht der Summe der Gewichte der Kanten von G

Beispiel – Minimal spannende Bäume Grundbegriffe (cont.) ein ungerichteter Graph G ist zusammenhängend, wenn für jedes Knotenpaar (u,v) gilt, dass es in G einen Pfad gibt, der vom Knoten u zum Knoten v geht ein ungerichteter Graph G ist kreisfrei, wenn es für keinen Knoten u in G ein Pfad mit einer Länge größer 2 gibt, der vom Knoten u zum Knoten u geht ein ungerichteter Graph G ist ein Baum, wenn G zusammenhängend und kreisfrei ist

Beispiel – Minimal spannende Bäume zentraler Begriff es sei G = (V,E) ein ungerichteter Graph es sei G‘ = (V‘,E‘) mit V‘  V und E‘  E ein Baum G‘ ist ein spannender Baum in G, falls V‘ = V gilt

Beispiel – Minimal spannende Bäume grundlegende Eigenschaft spannender Bäume es sei G = (V,E) ein ungerichteter Graph es sei G‘ = (V‘,E‘) ein spannender Baum in G dann gilt: G‘ hat genau eine Kante weniger als es Knoten in G gibt, d.h. |E‘| = |V| - 1 ... wenn G‘ weniger Kanten hat, kann G nicht zusammenhängend sein, und wenn G‘ mehr Kanten hat, kann G nicht kreisfrei sein

Beispiel – Minimal spannende Bäume grundlegende Eigenschaft zusammenhängender Graphen es sei G = (V,E) ein ungerichteter zusammenhängender Graph dann gilt: Es gibt einen spannenden Baum G‘ = (V‘,E‘) in G. ... das zeigt man am besten induktiv über die Anzahl der Knoten in G

Beispiel – Minimal spannende Bäume noch ein zentraler Begriff (cont.) es seien G = (V,E) ein ungerichteter Graph und w(.) eine Gewichts-funktion, d.h. (V,E,w(.)) ist ein ungerichteter Graph es sei G‘ = (V‘,E‘) ein spannender Baum für G G‘ ist ein minimal spannender Baum für G, falls es keinen spannenden Baum G‘‘ = (V‘‘,E‘‘) für G gibt, so dass w(G‘‘) < w(G‘) gilt

Beispiel – Minimal spannende Bäume interessierendes Optimierungsproblem (/* Minimierungsproblem */) zulässige Eingaben: Zulässige Ausgaben: ungerichteter zusammenhängender Graph G = (E,V) Gewichtsfunktion w(.) einen minimal spannenden Baum G‘ in G

Beispiel – Minimal spannende Bäume Algorithmus von Kruskal zur Bestimmung minimal spannender Bäume klassischer Greedy-Algorithmus (/* aber für ein Minimierungsproblem */) bevor wir den Algorithmus beschreiben und analysieren, brauchen wir noch eine Hilfsbegriff und ein „kleines“ Resultat

Beispiel – Minimal spannende Bäume Hilfsbegriff es sei G = (V,E) ein ungerichteter Graph es sei E‘  E dann bezeichnen wir mit V(E‘) die Menge der Knoten, die Ecken von Kanten in E‘ sind den ungerichteten Graphen G‘ = (V(E‘)‘,E‘) nennen wir den durch E‘ induzierten Teilgraphen von G

Beispiel – Minimal spannende Bäume ein „kleines“ Resultat es sei G = (V,E) ein ungerichteter Graph es sei E‘  E dann gilt: Wenn E‘ genau eine Kante weniger enthält, als es Knoten in G gibt, und der durch E‘ induzierte Teilgraph G‘ = (V(E‘),E) kreisfrei ist, so ist G‘ auch zusammenhängend, d.h. G‘ ist dann auch ein spannender Baum in G. ... das zeigt man am besten induktiv über die Anzahl der Knoten in G

Beispiel – Minimal spannende Bäume Algorithmus von Kruskal (/* Details */) es sei G = (V,E) ein ungerichteter Graph es sei w(.) eine Gewichtsfunktion, die jeder Kante e  V ein Gewicht w(e) zuordnet sortiere die Kanten in G aufsteigend nach ihrem Gewicht (/* Ergebnis: e1,e2,...,en mit w(e1) ≤ w(e2) ≤ ... ≤ w(en) */) setze E‘ =  und i = 1 while ( |E‘| < |V| - 1 ): teste, ob der von E‘‘ = E‘  { ei } induzierte Teilgraph G‘‘= (V(E‘‘),E) kreisfrei ist falls ja, setze E‘ = E‘‘ setze i = i +1 gib den durch E‘ induzierten Teilgraphen G‘ = (V‘,E‘) aus

Beispiel – Minimal spannende Bäume 1 2 1 A C 2 3 3 2 2 3 D E 2 {A,C},{B,C},{A,B},{A,E},{B,D},{C,D},{D,E},{A,D},{B,E},{C,E}

Beispiel – Minimal spannende Bäume Beispiel (cont.) B 1 2 E‘ = { {A,C} } 1 A C 2 3 3 2 2 3 D E 2 {A,C},{B,C},{A,B},{A,E},{B,D},{C,D},{D,E},{A,D},{B,E},{C,E}

Beispiel – Minimal spannende Bäume Beispiel (cont.) B 1 2 E‘ = { {A,C},{B,C} } 1 A C 2 3 3 2 2 3 D E {A,C},{B,C},{A,B},{A,E},{B,D},{C,D},{D,E},{A,D},{B,E},{C,E}

Minimal aufspannende Bäume Beispiel (cont.) B 1 2 E‘ = { {A,C},{B,C} } 1 A C 2 3 3 2 2 3 D E {A,C},{B,C},{A,B},{A,E},{B,D},{C,D},{D,E},{A,D},{B,E},{C,E}

Beispiel – Minimal spannende Bäume Beispiel (cont.) B 1 2 E‘ = { {A,C},{B,C},{A,E} } 1 A C 2 3 3 2 2 3 D E 2 {A,C},{B,C},{A,B},{A,E},{B,D},{C,D},{D,E},{A,D},{B,E},{C,E}

Beispiel – Minimal spannende Bäume Beispiel (cont.) B 1 2 E‘ = { {A,C},{B,C},{A,E},{B,D} } 1 A C 2 3 3 2 2 3 D E 2 {A,C},{B,C},{A,B},{A,E},{B,D},{C,D},{D,E},{A,D},{B,E},{C,E}

Beispiel – Minimal spannende Bäume Beispiel (cont.) B 1 2 E‘ = { {A,C},{B,C},{A,E},{B,D} } 1 A C 2 3 3 2 2 3 D E 2 {A,C},{B,C},{A,B},{A,E},{B,D},{C,D},{D,E},{A,D},{B,E},{C,E}

Beispiel – Minimal spannende Bäume Analyse und Diskussion der Algorithmus von Kruskal benötigt O(|E|*log(|E|)) + |E|*O(|V|) viele Rechenschritte, um als Ergebnis einen kreisfreien Teilgraphen von G mit höchstens |V| - 1 Kanten zu bestimmen O(|E|*log(|E|)) viele Rechenschritte, um die Kanten von G nach ihrem Gewicht zu sortieren jeweils O(|V|) viele Rechenschritte, um zu überprüfen, ob der durch E‘‘ induzierte Teilgraph G‘‘ = (V(E‘‘),E‘‘) kreisfrei ist (/* wir wissen, dass |V(E‘‘)| ≤ |V| und |E‘‘| ≤ |V| -1 gilt und dass man mit Hilfe der Tiefensuche in der Zeit O(|V‘‘|+|E‘‘|) überprüfen kann, ob G‘‘ kreisfrei ist */) ... zu zeigen bleibt, dass der Algorithmus von Kruskal einen minimal spannenden Baum in G bestimmt

Beispiel – Minimal spannende Bäume das zugehörige Teilmengensystem es sei G = (V,E) ein ungerichteter Graph wir betrachten folgendes Teilmengensystem (E,U): die verwendete endliche Menge E ist genau die Menge der Kanten von G U enthält alle Teilmengen E‘  E für die gilt: der durch E‘ induzierte Teilgraph G‘ = (V(E‘),E‘) ist kreisfrei

Beispiel – Minimal spannende Bäume Anmerkungen man kann sich leicht davon überzeugen, dass das Teilmengensysstem (E,U) wirklich ein Teilmengensystem ist wir wissen, dass es in U nur Teilmengen E‘ mit |E‘| ≤ |V| - 1 gibt da G = (V,E) ein zusammenhängender Graph ist, wissen wir auch, dass es in U eine bzgl.  maximale Teilmenge E‘ mit |E‘| = |V| - 1 gibt ... zu zeigen bleibt, dass das Teilmengensystem (E,U) die Austauscheigenschaft hat

Beispiel – Minimal spannende Bäume Nachweis der Austauscheigenschaft es seien E1 und E2 zwei Teilmengen aus U mit |E1| < |E2| es seien G1 = (V(E1),E1) und G2 = (V(E2),E2) die von E1 und E2 induzierten kreisfreien Teilgraphen von G wir interessieren uns für die Zusammenhangskomponenten des Teilgraphen G1 man kann die Kanten des Teilgraphen G2 in zwei Klassen zerlegen: Klasse 1: alle Kanten in G2, deren Ecken Knoten einer Zusammenhangskomponente in G1 verbinden Klasse 2: alle anderen Kanten in G2

Beispiel – Minimal spannende Bäume Nachweis der Austauscheigenschaft (cont.) Beobachtung: in der Klasse 1 können nur so viele Kanten enthalten sein, wie es Kanten in G1 gibt (/* andernfalls wäre G2 nicht kreisfrei */) da G2 mehr Kanten als G1 hat, gibt es mindestens eine Kante e in G2, die zur Klasse 2 gehört wir setzen nun E‘ = E1  { e } da die Ecken der Kante e zu unterschiedlichen Zusammenhangs-komponenten des durch E1 induzierten Teilgraphen G1 gehören, muss der von E‘ induzierte Teilgraph G‘ = (V(E‘),E‘) kreisfrei sein also gehört die Teilmenge E‘ zu U

Beispiel – Minimal spannende Bäume Zusammenfassung der kanonischen Greedy-Algorithmus für das Teilmengensystem (E,U) arbeitet offenbar genauso, wie der Algorithmus von Kruskal, bei Eingabe eines zusammenhängenden ungerichteten Graphen G = (V,E) und einer Gewichtsfunktion w(.) da das zu G gehörende Teilmengensystem (E,U) die Austauscheigen-schaft hat, bestimmt der kanonische Greedy-Algorithmus eine bzgl. w(.) gewichtsminimale Teilmenge E‘ in U also ist der vom Algorithmus von Kruskal bestimmte Teilgraph G‘ = (V(E‘),E‘) ein minimal spannender Baum in G