ADS: Algorithmen und Datenstrukturen 2 Teil I Gerhard Heyer, Florian Holz unter Verwendung der Materialien der letzten Jahre Abteilung Automatische Sprachverarbeitung Institut für Informatik Universität Leipzig 10. April 2013 1 / 24 Organisatorisches Aktuelle Informationen zur Veranstaltung http://asv.informatik.uni-leipzig.de/ → Lehre → Sommersemester 2013 G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 2 / 24 Organisatorisches Übungsaufgaben Es sind 5 Übungsserien zu lösen Die ersten Übungsaufgaben werden am 10.04. gestellt. Abgabe ist am 24.04. Lösungen sind nach der Bearbeitungszeit direkt vor Beginn der Vorlesung im Hörsaal abzugeben (mit Name, Matrikelnummer und Gruppe). Lösungen werden bewertet und in der Übungsstunde zurückgegeben. Punkte gibt es für das Lösen der Aufgaben, nicht für die Abgabe der Kopie der Lösung Es wird daher stichprobenartig überprüft, ob die Lösung auch verstanden wurde und erklärt werden kann. Dies geschieht planmäßig in den Übungsstunden. G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 3 / 24 Organisatorisches Übungsgruppen Gruppen G0 G1 G2/G3 Montag Dienstag Mittwoch 15:15 – 16:45 13:15 – 14:45 13:15 – 14:45 Raum 110, Seminargebäude Raum 109, Härtelstrasse 16–18 Raum 110, Seminargebäude Termine G0 G1 G2 G3 29.04., 30.04., 08.05., 15.05., 27.05., 28.05., 29.05., 05.06., G. Heyer, F. Holz (Abt ASV, Uni LE) 10.06., 11.06., 12.06., 19.06., 24.06., 25.06., 26.06., 03.07., ADS 2 08.07. 09.07. (Raum 110) 10.07. 17.07. SS 2013 4 / 24 Organisatorisches Übungsgruppen – Anmeldung Die Anmeldung für die Übungen erfolgt selbstorganisierend. Die Termine sind so gewählt, dass Studenten verschiedener Fachrichtungen unterschiedliche Vorzugstermine haben sollten. ALSO: Einfach zum Wunschtermin hingehen! G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 5 / 24 Organisatorisches Prüfungs(vor)leistung Klausur voraussichtlich erste Prüfungswoche, Dauer 60 Minuten Zulassungsvoraussetzungen Erreichen von 50% der Punkte in den Übungsaufgaben Fähigkeit, abgegebene Lösungen zu erläutern Kommen Sie also bitte zu den Übungsgruppen unbenoteter Übungsschein (Diplom-Studiengänge) 50% der erreichbaren Punkte bei den Übungsaufgaben und die Fähigkeit, abgegebene Lösungen zu erläutern, überprüft werden konnte. Kommen Sie also zu den Übungsgruppen! Alternative (falls zuwenig Punkte/Übungsteilnahme): Mitschreiben der Klausur (bei Anmeldung angeben!) G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 6 / 24 Organisatorisches Literatur und Weiteres Literatur, Termine, Ergebnisse alles zu finden auf http://asv.informatik.uni-leipzig.de/courses/131 (Vorlesung) und http://asv.informatik.uni-leipzig.de/courses/132 (Übungen) G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 7 / 24 Organisatorisches Inhaltsverzeichnis 1 Graphenalgorithmen 2 Verarbeitung von Zeichenketten: Suche, Vergleich, Kompression 3 Dynamische Programmierung G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 8 / 24 Graphen Graphen – Themenübersicht 1 Ungerichtete gewichtete Graphen: Grundlegende Definitionen, minimale Spannbäume 2 Gerichtete Graphen: Definitionen, Speicherung, topologische Sortierung, transitive Hülle, starke Zusammenhangskomponenten 3 Gerichtete gewichtete Graphen: Kürzeste Pfade, Flußnetzwerke G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 9 / 24 Graphen Königsberger Brückenproblem (Euler, 1736) Originalartikel: http://www.math.dartmouth.edu/~euler/pages/E053.html G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 10 / 24 Graphen Ungerichteter Graph Ein Tupel (V , E ) heißt (ungerichteter) Graph, wenn V eine endliche Menge und E eine Menge ungeordneter Paare von Elementen in V ist. V heißt Knotenmenge, die Elemente von V heißen Knoten. E heißt Kantenmenge, die Elemente von E heißen Kanten. Beispiel: V = {1, 2, 3, 4, 5} E = {{1, 2}, {1, 3}, {2, 3}, {2, 4}, {2, 5}, {3, 4}, {3, 5}, {4, 5}} 2 4 3 5 1 G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 11 / 24 Graphen Ungerichteter Graph Ein Tupel (V , E ) heißt (ungerichteter) Graph, wenn V eine endliche Menge und E eine Menge ungeordneter Paare von Elementen in V ist. V heißt Knotenmenge, die Elemente von V heißen Knoten. E heißt Kantenmenge, die Elemente von E heißen Kanten. Beispiel: V = {1, 2, 3, 4, 5} E = {{1, 2}, {1, 3}, {2, 3}, {2, 4}, {2, 5}, {3, 4}, {3, 5}, {4, 5}} 2 4 2 4 2 1 = 3 5 G. Heyer, F. Holz (Abt ASV, Uni LE) = 1 3 5 ADS 2 1 4 5 3 SS 2013 11 / 24 Graphen Graphen: Beispiele realer Systeme System Knoten Kanten Internet Router Datenleitungen WWW Webseiten/-dokumente Hyperlinks Gesellschaft Personen soziale Kontakte Biotop Spezies trophische Bez., “Fressen” Molekül Atome chem. Bindungen G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 12 / 24 Graphen Graph von Protein-Wechselwirkungen (Hefe) Jeong, Mason, Barabási & Oltvai, Nature 2001. G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 13 / 24 Graphen Network of articles about climate change (Okt 2012) http://www.emapsproject.com/blog/archives/1572 G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 14 / 24 Graphen Facebook’s Social Network Graph (2010) http://blog.revolutionanalytics.com/2010/12/ facebooks-social-network-graph.html G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 15 / 24 Graphen Friendship Paradox (eternal ;) ) Why Everyone Has More Friends Than You http://frs111.cs.princeton.edu/?p=495 G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 16 / 24 Graphen Teilgraphen Seien G = (V , E ) und H = (W , F ) Graphen. H heißt Teilgraph von G , wenn W ⊆ V und F ⊆ E ist. H heißt spannender Teilgraph von G , wenn H Teilgraph von G mit W = V ist (H enthält dieselben Knoten wie G ). H heißt induzierter Teilgraph von G , wenn H Teilgraph von G ist und für alle e ∈ E gilt: e ⊆ W ⇒ e ∈ F . (Alle Kanten aus G , deren zwei Knoten in H liegen, sind auch in H enthalten.) G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 17 / 24 Graphen Pfade, Zyklen, Zusammenhang Sei G = (V , E ) ein Graph, l ∈ N und k = (v0 , v1 , . . . , vl ) ∈ V l+1 . k heißt Weg der Länge l , wenn für alle i ∈ {1, . . . , l } gilt: {vi−1 , vi } ∈ E k heißt Pfad der Länge l , wenn k ein Weg ist und für alle i, j ∈ {0, . . . , l } mit i 6= j gilt: vi 6= vj . k heißt Zyklus (oder Kreis) der Länge l , wenn (v1 , . . . , vl ) ein Pfad der Länge l − 1 ist und v0 = vl . G heißt zusammenhängend, wenn für alle x, y ∈ V ein Pfad zwischen x und y existiert. G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 18 / 24 Graphen Wälder und Bäume Sei G = (V , E ) ein Graph. G heißt Wald (oder zyklenfrei), wenn kein Weg in G ein Zyklus ist. G heißt Baum, wenn G ein Wald ist und G zusammenhängend ist. Satz: Ist G ein Baum, so hat G genau |V | − 1 Kanten. Satz: Ist G zusammenhängend, so hat G einen spannenden Teilgraphen T , so daß T ein Baum ist. T heißt dann Spannbaum von G . G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 19 / 24 Graphen Gewichteter Graph Sei (V , E ) ein Graph und w : E → R. Das Tripel G = (V , E , w ) heißt gewichteter (oder kantenbewerteter) Graph. w (e) heißt Gewicht (oder Länge) der Kante e ∈ E . Beispiel: 2 1.3 0.5 1 0.8 3 G. Heyer, F. Holz (Abt ASV, Uni LE) 1.8 1.9 4 0.6 2.4 1.5 ADS 2 5 SS 2013 20 / 24 Graphen Minimaler Spannbaum Gegeben: Gewichteter zusammenhängender Graph G = (V , E , w ) mit |V | ≥ 2. Gesucht: Spannbaum T = (V , F ) mit minimaler Kantensumme. Wähle also die Kantenmenge F ⊆ E so, daß X w (e) e∈F möglichst klein wird. G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 21 / 24 Graphen Kruskal-Algorithmus Kruskal-Algorithmus (1956) 1 Erzeuge eine PriorityQueue Q mit der Kantenmenge E sortiert nach Gewicht (kleinstes zuerst). Initialisiere F als leere Menge. 2 Entferne Kante e = {u, v } aus Q 3 Falls (V , F ) keinen Pfad zwischen u und v enthält: F := F ∪ {e} (sonst: tue nichts) 4 Falls Q nicht leer, zurück zu 2. 5 Ausgabe F bzw T = (V , F ). G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 22 / 24 Graphen Beispiel-Lauf: Kruskal-Algorithmus 2 1.3 1.8 1.9 0.5 1 4 0.6 0.8 3 2.4 1.5 5 Q = [{2, 3}, {4, 5}, {1, 3}, {1, 2}, {3, 5}, {2, 4}, {2, 5}, {3, 4}] F = {} G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 23 / 24 Graphen Beispiel-Lauf: Kruskal-Algorithmus 2 1.3 1.8 1.9 4 0.5 1 0.6 0.8 3 2.4 1.5 5 Q = [{4, 5}, {1, 3}, {1, 2}, {3, 5}, {2, 4}, {2, 5}, {3, 4}] F = {{2, 3}} G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 23 / 24 Graphen Beispiel-Lauf: Kruskal-Algorithmus 2 1.3 1.8 1.9 0.5 1 4 0.6 0.8 3 2.4 1.5 5 Q = [{1, 3}, {1, 2}, {3, 5}, {2, 4}, {2, 5}, {3, 4}] F = {{2, 3}}, {4, 5}} G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 23 / 24 Graphen Beispiel-Lauf: Kruskal-Algorithmus 2 1.3 1.8 1.9 0.5 1 4 0.6 0.8 3 2.4 1.5 5 Q = [{1, 2}, {3, 5}, {2, 4}, {2, 5}, {3, 4}] F = {{2, 3}}, {4, 5}, {1, 3}} G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 23 / 24 Graphen Beispiel-Lauf: Kruskal-Algorithmus 2 1.3 1.8 1.9 0.5 1 4 0.6 0.8 3 2.4 1.5 5 Q = [{3, 5}, {2, 4}, {2, 5}, {3, 4}] F = {{2, 3}}, {4, 5}, {1, 3}} G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 23 / 24 Graphen Beispiel-Lauf: Kruskal-Algorithmus 2 1.3 1.8 1.9 0.5 1 4 0.6 0.8 3 2.4 1.5 5 Q = [{2, 4}, {2, 5}, {3, 4}] F = {{2, 3}}, {4, 5}, {1, 3}, {3, 5}} G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 23 / 24 Graphen Beispiel-Lauf: Kruskal-Algorithmus 2 1.3 1.8 1.9 0.5 1 4 0.6 0.8 3 2.4 1.5 5 Q = [] F = {{2, 3}}, {4, 5}, {1, 3}, {3, 5}} G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 23 / 24 Graphen Anmerkungen zum Kruskal-Algorithmus Korrektheit: Findet Kruskal-Algorithmus garantiert einen minmalem Spannbaum? → Ja, sehen wir später bei Greedy-Algorithmen. Analog: Bestimmung maximaler Spannbäume durch den Kruskal-Algorithmus Laufzeit-Komplexität O(|E | log |V |) G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2 SS 2013 24 / 24