Datenstrukturen und Algorithmen

Ähnliche Dokumente
Minimale Spannbäume. Übersicht. 1 Spannbäume. 2 Minimale Spannbäume. 3 Greedy Algorithmen. 4 Die Algorithmen von Kruskal und Prim

Minimale Spannbäume. Organisatorisches. VL-16: Minimale Spannbäume. (Datenstrukturen und Algorithmen, SS 2017) Walter Unger. Spannbaum Probleme

Übersicht. Datenstrukturen und Algorithmen. Das Rechenproblem: kürzeste Pfade. Übersicht. Vorlesung 17: Kürzeste Pfade (K24) Bellman-Ford Dijkstra

9 Minimum Spanning Trees

Wie wird ein Graph dargestellt?

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Sortieren II / HeapSort Heaps

Algorithmen und Datenstrukturen Tafelübung 14. Jens Wetzl 8. Februar 2012

Minimal spannende Bäume

Proseminar Online Algorithmen, Prof. Dr. Rolf Klein

Algorithmen und Datenstrukturen (für ET/IT)

Grundlagen: Algorithmen und Datenstrukturen

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

11. GRAPHEN 3 FLÜSSE UND SPANNBÄUME

Algorithmen und Datenstrukturen

Programmierkurs Python II

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

Theoretische Informatik 1

Vorlesung Datenstrukturen

Graphalgorithmen Netzwerkalgorithmen. Laufzeit

Kap. 6.5: Minimale Spannbäume

Informatik II: Algorithmen & Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden!

Algorithmische Graphentheorie

4.2 Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition 4.2.1

void bellford ( List adjlst [n], int n, int i, int j){ int d[n] = + inf ; d[i] = 0;

Lernmodul 7 Algorithmus von Dijkstra

Algorithmen & Komplexität

Datenstrukturen und Algorithmen SS07

Kapitel 5: Minimale spannende Bäume Gliederung der Vorlesung

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph

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

2. Optimierungsprobleme 6

Algorithmen und Datenstrukturen 2

12.4 Traveling Salesman Problem

Algorithmen II Vorlesung am

1.Aufgabe: Minimal aufspannender Baum

\ E) eines Graphen G = (V, E) besitzt die gleiche Knotenmenge V und hat als Kantenmenge alle Kanten des vollständigen Graphen ohne die Kantenmenge E.

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

Tutoraufgabe 1 (Starke Zusammenhangskomponenten):

ADS: Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen

Euler und Hamiltonkreise

15. Elementare Graphalgorithmen

3 Klassifikation wichtiger Optimierungsprobleme

Graphdurchmusterung, Breiten- und Tiefensuche

Berechnung minimaler Spannbäume. Beispiel

Kapitel 4: Minimal spannende Bäume Gliederung der Vorlesung

Tutoraufgabe 1 (Suchen in Graphen):

Datenstrukturen. einfach verkettete Liste

Kapitel 4: Minimale spannende Bäume Gliederung der Vorlesung

Vorlesung 2 KÜRZESTE WEGE

Datenstrukturen und Algorithmen 2. Klausur SS 2001

Aufgaben zur Klausurvorbereitung

Datenstrukturen und Algorithmen

Graphen: Datenstrukturen und Algorithmen

Einführung in minimale Spannbäume und deren Berechnung

Algorithmen und Datenstrukturen 2-1. Seminar -

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Diskrete Strukturen Kapitel 4: Graphentheorie (Bäume)

4 Greedy-Algorithmen (gierige Algorithmen)

Aufgabe 4.2 Sei G = (V, E, l) ein ungerichteter, gewichteter und zusammenhängender Graph.

a) Geben Sie für die folgenden Paare von Mengen jeweils die Teilmengenbeziehung mit Hilfe der Symbole, und = an. lässt sich wie folgt umformen:

Kap. 6.6: Kürzeste Wege

Keller, Schlangen und Listen. Elementare Datenstrukturen Keller, Schlangen und Listen 1 / 14

WS 2009/10. Diskrete Strukturen

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Algo&Komp. - Wichtige Begriffe Mattia Bergomi Woche 6 7

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

Algorithmische Methoden für schwere Optimierungsprobleme

Approximationsalgorithmen. 19. Dezember / 28

Minimal spannende Bäume

Graphen. Leonhard Euler ( )

1 Kürzeste Pfade in Graphen

Graphalgorithmen 2. Oleksiy Rybakov. 3. Juni Betreuer: Tobias Werth, Daniel Brinkers

DATENSTRUKTUREN UND ALGORITHMEN

Das Steinerbaumproblem

3.6 Branch-and-Bound-Verfahren

Algorithmen und Datenstrukturen Vorlesung 1 zu Kruskal/Union-Find

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Informatik II Prüfungsvorbereitungskurs

Programmiertechnik II

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

10. Übung Algorithmen I

Approximationsalgorithmen

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

3. Musterlösung. Problem 1: Boruvka MST

2. November Gradfolgen Zusammenhang Kürzeste Wege. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 37

Kürzeste-Wege-Algorithmen und Datenstrukturen

Transkript:

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 1/1 Datenstrukturen und Algorithmen Vorlesung 14: Prof. Dr. Erika Ábrahám Theorie Hybrider Systeme Informatik 2 http://ths.rwth-aachen.de/teaching/ss-14/ datenstrukturen-und-algorithmen/ Diese Präsentation verwendet in Teilen Folien von Joost-Pieter Katoen. 27. Juni 2014

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 2/18 Übersicht 1 Greedy Algorithmen Minimaler Spannbaum Algorithmus von Prim

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 3/18 Übersicht 1 Greedy Algorithmen Minimaler Spannbaum Algorithmus von Prim

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 4/18 Probleme auf kantengewichteten Graphen Betrachte einen gewichteten Graphen, wobei den Kanten ein Gewicht zugeordnet ist.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 4/18 Probleme auf kantengewichteten Graphen Betrachte einen gewichteten Graphen, wobei den Kanten ein Gewicht zugeordnet ist. Beispiel (Optimierungsprobleme auf Graphen)

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 4/18 Probleme auf kantengewichteten Graphen Betrachte einen gewichteten Graphen, wobei den Kanten ein Gewicht zugeordnet ist. Beispiel (Optimierungsprobleme auf Graphen) Finde den minimalen Spannbaum (minimal spanning tree) in einem ungerichteten Graphen.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 4/18 Probleme auf kantengewichteten Graphen Betrachte einen gewichteten Graphen, wobei den Kanten ein Gewicht zugeordnet ist. Beispiel (Optimierungsprobleme auf Graphen) Finde den minimalen Spannbaum (minimal spanning tree) in einem ungerichteten Graphen. Finde den kürzesten Weg (shortest path) in einem gerichteten oder ungerichteten Graphen.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 4/18 Probleme auf kantengewichteten Graphen Betrachte einen gewichteten Graphen, wobei den Kanten ein Gewicht zugeordnet ist. Beispiel (Optimierungsprobleme auf Graphen) Finde den minimalen Spannbaum (minimal spanning tree) in einem ungerichteten Graphen. Finde den kürzesten Weg (shortest path) in einem gerichteten oder ungerichteten Graphen. Minimal und kürzester beziehen sich hierbei auf die besuchten Gewichte.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 4/18 Probleme auf kantengewichteten Graphen Betrachte einen gewichteten Graphen, wobei den Kanten ein Gewicht zugeordnet ist. Beispiel (Optimierungsprobleme auf Graphen) Finde den minimalen Spannbaum (minimal spanning tree) in einem ungerichteten Graphen. Finde den kürzesten Weg (shortest path) in einem gerichteten oder ungerichteten Graphen. Minimal und kürzester beziehen sich hierbei auf die besuchten Gewichte. Die Gewichte können als Kosten für die Benutzung der Kante aufgefasst werden.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 4/18 Probleme auf kantengewichteten Graphen Betrachte einen gewichteten Graphen, wobei den Kanten ein Gewicht zugeordnet ist. Beispiel (Optimierungsprobleme auf Graphen) Finde den minimalen Spannbaum (minimal spanning tree) in einem ungerichteten Graphen. Finde den kürzesten Weg (shortest path) in einem gerichteten oder ungerichteten Graphen. Minimal und kürzester beziehen sich hierbei auf die besuchten Gewichte. Die Gewichte können als Kosten für die Benutzung der Kante aufgefasst werden. Diese Probleme können durch Greedy-Algorithmen gelöst werden.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 5/18 Greedy Algorithmen Eine Lösungstechnik: Greedy-Algorithmen ( gierig )

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 5/18 Greedy Algorithmen Eine Lösungstechnik: Greedy-Algorithmen ( gierig ) Treffe in jedem Schritt eine Entscheidung, die bezüglich eines lokalen Kriteriums optimal ist.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 5/18 Greedy Algorithmen Eine Lösungstechnik: Greedy-Algorithmen ( gierig ) Treffe in jedem Schritt eine Entscheidung, die bezüglich eines lokalen Kriteriums optimal ist. Dieses Kriterium sollte günstig ( Komplexität) auswertbar sein.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 5/18 Greedy Algorithmen Eine Lösungstechnik: Greedy-Algorithmen ( gierig ) Treffe in jedem Schritt eine Entscheidung, die bezüglich eines lokalen Kriteriums optimal ist. Dieses Kriterium sollte günstig ( Komplexität) auswertbar sein. Nachdem eine Wahl getroffen wurde, kann sie nicht mehr rückgängig gemacht werden.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 5/18 Greedy Algorithmen Eine Lösungstechnik: Greedy-Algorithmen ( gierig ) Treffe in jedem Schritt eine Entscheidung, die bezüglich eines lokalen Kriteriums optimal ist. Dieses Kriterium sollte günstig ( Komplexität) auswertbar sein. Nachdem eine Wahl getroffen wurde, kann sie nicht mehr rückgängig gemacht werden. Mit Greedy-Methoden ist nicht garantiert, dass immer die beste Lösung gefunden wird, denn

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 5/18 Greedy Algorithmen Eine Lösungstechnik: Greedy-Algorithmen ( gierig ) Treffe in jedem Schritt eine Entscheidung, die bezüglich eines lokalen Kriteriums optimal ist. Dieses Kriterium sollte günstig ( Komplexität) auswertbar sein. Nachdem eine Wahl getroffen wurde, kann sie nicht mehr rückgängig gemacht werden. Mit Greedy-Methoden ist nicht garantiert, dass immer die beste Lösung gefunden wird, denn immer das lokale Optimum zu nehmen führt nicht automatisch auch zum globalen Optimum.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 5/18 Greedy Algorithmen Eine Lösungstechnik: Greedy-Algorithmen ( gierig ) Treffe in jedem Schritt eine Entscheidung, die bezüglich eines lokalen Kriteriums optimal ist. Dieses Kriterium sollte günstig ( Komplexität) auswertbar sein. Nachdem eine Wahl getroffen wurde, kann sie nicht mehr rückgängig gemacht werden. Mit Greedy-Methoden ist nicht garantiert, dass immer die beste Lösung gefunden wird, denn immer das lokale Optimum zu nehmen führt nicht automatisch auch zum globalen Optimum. In einigen Fällen, wie dem minimalen Spannbaum und dem Kürzesten-Wege-Problem, wird aber immer die optimale Lösung gefunden.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 6/18 Greedy? Beispiel

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 6/18 Greedy? Beispiel Greedy kann beliebig schlecht werden: Das Problem des Handlungsreisenden (Traveling Salesman Problem, TSP)

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 6/18 Greedy? Beispiel Greedy kann beliebig schlecht werden: Das Problem des Handlungsreisenden (Traveling Salesman Problem, TSP) Greedy kann gut sein: Behälterproblem (Bin Packing) ( 2x Optimum)

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 6/18 Greedy? Beispiel Greedy kann beliebig schlecht werden: Das Problem des Handlungsreisenden (Traveling Salesman Problem, TSP) Greedy kann gut sein: Behälterproblem (Bin Packing) ( 2x Optimum) Greedy kann optimal sein: Minimaler Spannbaum, Kürzester-Weg-Problem.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 6/18 Greedy? Beispiel Greedy kann beliebig schlecht werden: Das Problem des Handlungsreisenden (Traveling Salesman Problem, TSP) Greedy kann gut sein: Behälterproblem (Bin Packing) ( 2x Optimum) Greedy kann optimal sein: Minimaler Spannbaum, Kürzester-Weg-Problem. Wann ist eine Greedy-Lösungsstrategie optimal? Optimale Lösung setzt sich aus optimalen Teilproblemen zusammen Unabhängigkeit von anderen Teillösungen

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 7/18 Was ist ein minimaler Spannbaum? Spannbaum Ein Spannbaum eines ungerichteten, zusammenhängenden Graphen G ist ein Teilgraph von G, der ein ungerichteter Baum ist und alle Knoten von G enthält.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 7/18 Was ist ein minimaler Spannbaum? Spannbaum Ein Spannbaum eines ungerichteten, zusammenhängenden Graphen G ist ein Teilgraph von G, der ein ungerichteter Baum ist und alle Knoten von G enthält. Gewicht eines Graphen Das Gewicht W (G ) eines Teilgraphen G = (V, E ) vom gewichteten Graph G ist: W (G ) = W (u, v). (u,v) E

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 7/18 Was ist ein minimaler Spannbaum? Spannbaum Ein Spannbaum eines ungerichteten, zusammenhängenden Graphen G ist ein Teilgraph von G, der ein ungerichteter Baum ist und alle Knoten von G enthält. Gewicht eines Graphen Das Gewicht W (G ) eines Teilgraphen G = (V, E ) vom gewichteten Graph G ist: W (G ) = W (u, v). (u,v) E Minimaler Spannbaum Ein Spannbaum mit minimalem Gewicht heißt minimaler Spannbaum (minimum spanning tree, MST).

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 8/18 Anwendungen Problem Finde einen MST eines gewichteten, ungerichteten, zusammenhängenden Graphen.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 8/18 Anwendungen Problem Finde einen MST eines gewichteten, ungerichteten, zusammenhängenden Graphen. Beispiel Finde einen kostengünstigsten Weg, um eine Menge von Flughafenterminals, Städten,... zu verbinden.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 8/18 Anwendungen Problem Finde einen MST eines gewichteten, ungerichteten, zusammenhängenden Graphen. Beispiel Finde einen kostengünstigsten Weg, um eine Menge von Flughafenterminals, Städten,... zu verbinden. Grundlage für viele andere Probleme, etwa Routing-Probleme ( Wegfindung ).

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 8/18 Anwendungen Problem Finde einen MST eines gewichteten, ungerichteten, zusammenhängenden Graphen. Beispiel Finde einen kostengünstigsten Weg, um eine Menge von Flughafenterminals, Städten,... zu verbinden. Grundlage für viele andere Probleme, etwa Routing-Probleme ( Wegfindung ). Bestandteil von Approximationsalgorithmen für das TSP Problem.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 8/18 Anwendungen Problem Finde einen MST eines gewichteten, ungerichteten, zusammenhängenden Graphen. Beispiel Finde einen kostengünstigsten Weg, um eine Menge von Flughafenterminals, Städten,... zu verbinden. Grundlage für viele andere Probleme, etwa Routing-Probleme ( Wegfindung ). Bestandteil von Approximationsalgorithmen für das TSP Problem. Verdrahtung von Schaltungen mit geringstem Energieverbrauch.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 9/18 Minimaler Spannbaum Beispiel A 6 C 5 4 F 9 G 14 10 2 B 3 8 E 15 H D

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 9/18 Minimaler Spannbaum Beispiel A 6 C 5 4 F 9 G 14 10 2 B 3 8 E 15 H D Was ist ein minimaler Spannbaum?

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 10/18 Minimaler Spannbaum Beispiel A 6 C 5 4 F 9 G 14 10 2 B 3 8 E 15 H D Das ist ein minimaler Spannbaum (mit Gesamtgewicht 46).

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 10/18 Minimaler Spannbaum Beispiel A 6 C 5 4 F 9 G 14 10 2 B 3 8 E 15 H D Das ist ein minimaler Spannbaum (mit Gesamtgewicht 46). In diesem Fall ist es auch der einzige.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 11/18 Tiefen- oder Breitensuche? A 6 C 5 4 F 9 G A 6 C 5 4 F 9 G 14 10 2 14 10 2 B 3 8 E 15 H B 3 8 E 15 H D D Tiefensuchbaum (von A gestartet) Gesamtgewicht: 55 Breitensuchbaum (von A gestartet) Gesamtgewicht: 67 Der Tiefensuchbaum und der Breitensuchbaum sind zwar Spannbäume, aber nicht notwendigerweise MSTs.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 12/18 Der Algorithmus von Prim Übersicht Wir ordnen die Knoten in drei Kategorien ein: Baum-Knoten : Knoten, die Teil vom bis jetzt konstruierten Baum sind. Rand-knoten: Nicht im Baum, jedoch adjazent zu Knoten im Baum. Ungesehene Knoten: Alle anderen Knoten.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 12/18 Der Algorithmus von Prim Übersicht Wir ordnen die Knoten in drei Kategorien ein: Baum-Knoten : Knoten, die Teil vom bis jetzt konstruierten Baum sind. Rand-knoten: Nicht im Baum, jedoch adjazent zu Knoten im Baum. Ungesehene Knoten: Alle anderen Knoten. Grundkonzept:

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 12/18 Der Algorithmus von Prim Übersicht Wir ordnen die Knoten in drei Kategorien ein: Baum-Knoten : Knoten, die Teil vom bis jetzt konstruierten Baum sind. Rand-knoten: Nicht im Baum, jedoch adjazent zu Knoten im Baum. Ungesehene Knoten: Alle anderen Knoten. Grundkonzept: Fange mit einen Baum mit nur einem Knoten an, indem ein beliebiger Knoten des Graphens ausgewählt wird.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 12/18 Der Algorithmus von Prim Übersicht Wir ordnen die Knoten in drei Kategorien ein: Baum-Knoten : Knoten, die Teil vom bis jetzt konstruierten Baum sind. Rand-knoten: Nicht im Baum, jedoch adjazent zu Knoten im Baum. Ungesehene Knoten: Alle anderen Knoten. Grundkonzept: Fange mit einen Baum mit nur einem Knoten an, indem ein beliebiger Knoten des Graphens ausgewählt wird. Finde die günstigste Kante (d. h. mit minimalem Gewicht), die den bisherigen Baum verlässt.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 12/18 Der Algorithmus von Prim Übersicht Wir ordnen die Knoten in drei Kategorien ein: Baum-Knoten : Knoten, die Teil vom bis jetzt konstruierten Baum sind. Rand-knoten: Nicht im Baum, jedoch adjazent zu Knoten im Baum. Ungesehene Knoten: Alle anderen Knoten. Grundkonzept: Fange mit einen Baum mit nur einem Knoten an, indem ein beliebiger Knoten des Graphens ausgewählt wird. Finde die günstigste Kante (d. h. mit minimalem Gewicht), die den bisherigen Baum verlässt. Füge den über diese Kante erreichten (Rand-)Knoten dem Baum hinzu, zusammen mit der Kante.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 12/18 Der Algorithmus von Prim Übersicht Wir ordnen die Knoten in drei Kategorien ein: Baum-Knoten : Knoten, die Teil vom bis jetzt konstruierten Baum sind. Rand-knoten: Nicht im Baum, jedoch adjazent zu Knoten im Baum. Ungesehene Knoten: Alle anderen Knoten. Grundkonzept: Fange mit einen Baum mit nur einem Knoten an, indem ein beliebiger Knoten des Graphens ausgewählt wird. Finde die günstigste Kante (d. h. mit minimalem Gewicht), die den bisherigen Baum verlässt. Füge den über diese Kante erreichten (Rand-)Knoten dem Baum hinzu, zusammen mit der Kante. Fahre fort, bis keine weiteren Randknoten mehr vorhanden sind.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 12/18 Der Algorithmus von Prim Übersicht Wir ordnen die Knoten in drei Kategorien ein: Baum-Knoten : Knoten, die Teil vom bis jetzt konstruierten Baum sind. Rand-knoten: Nicht im Baum, jedoch adjazent zu Knoten im Baum. Ungesehene Knoten: Alle anderen Knoten. Grundkonzept: Fange mit einen Baum mit nur einem Knoten an, indem ein beliebiger Knoten des Graphens ausgewählt wird. Finde die günstigste Kante (d. h. mit minimalem Gewicht), die den bisherigen Baum verlässt. Füge den über diese Kante erreichten (Rand-)Knoten dem Baum hinzu, zusammen mit der Kante. Fahre fort, bis keine weiteren Randknoten mehr vorhanden sind. Ist das korrekt?

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 12/18 Der Algorithmus von Prim Übersicht Wir ordnen die Knoten in drei Kategorien ein: Baum-Knoten : Knoten, die Teil vom bis jetzt konstruierten Baum sind. Rand-knoten: Nicht im Baum, jedoch adjazent zu Knoten im Baum. Ungesehene Knoten: Alle anderen Knoten. Grundkonzept: Fange mit einen Baum mit nur einem Knoten an, indem ein beliebiger Knoten des Graphens ausgewählt wird. Finde die günstigste Kante (d. h. mit minimalem Gewicht), die den bisherigen Baum verlässt. Füge den über diese Kante erreichten (Rand-)Knoten dem Baum hinzu, zusammen mit der Kante. Fahre fort, bis keine weiteren Randknoten mehr vorhanden sind. Ist das korrekt? Und wenn, was ist die Komplexität?

Prim s Algorithmus: Implementierung 1 // Parameter: ungerichteter gewichteter Graph mit n Knoten und ein Startknoten 2 void primmst(int adj[n], int n, int start) { 3 for (int i = 0; i < n; i++) { 4 key[i] = inf; p[i] = null; 5 } 6 key[start] = 0; //start ist einziger Randknoten mit Kosten 0 7 Q = {0,...,n-1}; 8 while (Q not empty) { 9 //verschiebe den billigsten Randknoten in den Baum 10 v = extractmin(q); 11 // aktualisiere Kosten für Randnnoten 12 for each ((u,w) in adj[v]) { 13 if (u in Q and w < key[u]) { 14 p[u] = v; 15 key[u] = w; 16 } 17 } 18 } 19 } Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 13/18

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 14/18 Prim s Algorithmus Beispiel 0 6 5 4 9 14 10 2 3 8 15

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 14/18 Prim s Algorithmus Beispiel 6 6 5 4 9 5 14 10 2 14 3 8 15 10

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 14/18 Prim s Algorithmus Beispiel 6 4 5 4 9 9 14 10 2 14 3 8 2 15 10

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 14/18 Prim s Algorithmus Beispiel 6 4 5 4 9 9 14 10 2 14 3 8 15 15 8

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 14/18 Prim s Algorithmus Beispiel 6 5 4 9 9 14 10 2 14 3 8 15 15 8

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 14/18 Prim s Algorithmus Beispiel 6 5 4 9 9 14 10 2 3 3 8 15 15

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 14/18 Prim s Algorithmus Beispiel 6 5 4 9 9 14 10 2 3 8 15 15

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 14/18 Prim s Algorithmus Beispiel 6 5 4 9 14 10 2 3 8 15 15

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 14/18 Prim s Algorithmus Beispiel 6 5 4 9 14 10 2 3 8 15

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 15/18 Korrektheit von Prim Lemma Unmittelbar vor jeder Iteration i ist der aktuelle Baum B i = (V i, E i ) eine Teilmenge eines minimalen Spannbaumes..

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 15/18 Korrektheit von Prim Lemma Unmittelbar vor jeder Iteration i ist der aktuelle Baum B i = (V i, E i ) eine Teilmenge eines minimalen Spannbaumes. Beweis. Per Induktion über die Iterationstiefe. k = 1: Trivial, da E i =.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 15/18 Korrektheit von Prim Lemma Unmittelbar vor jeder Iteration i ist der aktuelle Baum B i = (V i, E i ) eine Teilmenge eines minimalen Spannbaumes. Beweis. k > 1: Sei die Eigenschaft gültig für alle 1 i < k; wir zeigen sie für k. Sei T ein MST der B k 1 enthält und B k = (V k 1 {v}, E k 1 {(u, v)}). Wenn T auch B k enthält, dann sind wir fertig. Falls (u, v) nicht in T enthalten ist, dann gibt es einen anderen Pfad von u nach v in T. Da u V k 1 und v V k 1, gibt es eine Kante (x, y) auf dem Pfad mit x V k 1 und y V k 1. Es gilt W (x, y) > W (u, v) wegen des Wahls von (u, v). Der Baum T, der aus T durch entfernen von (x, y) und Hinzufügen von (u, v) entsteht, ist ein Spannbaum, der auch minimal ist (da T minimal ist und W (T ) = W (T ) W (x, y) + W (u, v) W (T )). Da B k in T enthalten ist, gilt die Eigenschaft.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 16/18 ADT zum Vorhalten der Randknoten Die benötigten Operationen für den Algorithmus von Prim sind: Wähle eine billigste Kante zu einem Randknoten (Kantenkandidat). Reklassifiziere einen Randknoten als Baumknoten (füge den Kantenkandidat zum Baum hinzu). Ändere die Kosten (Randgewicht) eines Randknotens, wenn ein günstigerer Kantenkandidat gefunden wird.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 16/18 ADT zum Vorhalten der Randknoten Die benötigten Operationen für den Algorithmus von Prim sind: Wähle eine billigste Kante zu einem Randknoten (Kantenkandidat). Reklassifiziere einen Randknoten als Baumknoten (füge den Kantenkandidat zum Baum hinzu). Ändere die Kosten (Randgewicht) eines Randknotens, wenn ein günstigerer Kantenkandidat gefunden wird. Idee: Ordne die Randknoten nach ihrer Priorität (= Randgewicht).

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 16/18 ADT zum Vorhalten der Randknoten Die benötigten Operationen für den Algorithmus von Prim sind: Wähle eine billigste Kante zu einem Randknoten (Kantenkandidat). Reklassifiziere einen Randknoten als Baumknoten (füge den Kantenkandidat zum Baum hinzu). Ändere die Kosten (Randgewicht) eines Randknotens, wenn ein günstigerer Kantenkandidat gefunden wird. Idee: Ordne die Randknoten nach ihrer Priorität (= Randgewicht). Wir entscheiden uns für die Prioritätswarteschlange als Datenstruktur für die Randknoten.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 17/18 Vorläufige Komplexitätsanalyse Im Worst-Case:

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 17/18 Vorläufige Komplexitätsanalyse Im Worst-Case: Jeder Knoten muss zur Prioritätswarteschlange hinzugefügt werden. Auf jeden Knoten muss auch wieder zugegriffen werden und er muss gelöscht werden. Die Priorität eines Randknotens muss nach jeder gefundenen Kante angepasst werden.

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 17/18 Vorläufige Komplexitätsanalyse Im Worst-Case: Jeder Knoten muss zur Prioritätswarteschlange hinzugefügt werden. Auf jeden Knoten muss auch wieder zugegriffen werden und er muss gelöscht werden. Die Priorität eines Randknotens muss nach jeder gefundenen Kante angepasst werden. Bei einem Graph mit n Knoten und m Kanten ergibt sich: T (n, m) O (n T (insert)+n T (getmin)+n T (delmin)+m T (decrkey))

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 17/18 Vorläufige Komplexitätsanalyse Im Worst-Case: Jeder Knoten muss zur Prioritätswarteschlange hinzugefügt werden. Auf jeden Knoten muss auch wieder zugegriffen werden und er muss gelöscht werden. Die Priorität eines Randknotens muss nach jeder gefundenen Kante angepasst werden. Bei einem Graph mit n Knoten und m Kanten ergibt sich: T (n, m) O (n T (insert)+n T (getmin)+n T (delmin)+m T (decrkey)) Welche Implementierung der Prioritätswarteschlange ist dafür gut geeignet?

Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 18/18 Drei Prioritätswarteschlangenimplementierungen T (n, m) O (n T (insert)+n T (getmin)+n T (delmin)+m T (decrkey)) Implementierung Operation unsortiertes Array sortiertes Array Heap isempty() Θ(1) Θ(1) Θ(1) insert(e,k) Θ(1) Θ(n) Θ(log n) getmin() Θ(n) Θ(1) Θ(1) delmin() Θ(n) Θ(1) Θ(log n) decrkey(e,k) Θ(1) Θ(n) Θ(log n) Prim O(n 2 +m)) O(n 2 + m n) O(n log n + m log n)