8. Übung zu Algorithmen I Institut für Theoretische Informatik, Prof. Sanders 1 2009 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders KIT – die Kooperation von8.Forschungszentrum GmbH und Universität Karlsruhe (TH) Übung zu Algorithmen Karlsruhe I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Organisatorisches Raumverlegung: Tutorium 10 von 131 nach -102 (Hörsaal) am 30.6. und 14.7. Mittsemesterklausur Ergebnisse sind online und ausgehängt Klausureinsicht am 3.7.2009: Nachnamen A–J 14 Uhr; K–Z um 15 Uhr Name fehlt immer noch bei ID 210; bitte vorbeikommen und Schriftprobe abgeben 2. Programmier-Übungsblatt ist online Abgabe ist Montag, 20.7.2009 2 2009 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders 8. Übung zu Algorithmen I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Matrizen zu Graphen: Un-/bigerichtet Un-/bigerichtete Graphen haben eine symmetrische Adjazenzmatrix 3 1 2 0 1 0 1 1 0 1 0 0 1 0 0 1 0 0 0 4 3 2009 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders 8. Übung zu Algorithmen I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Matrizen zu Graphen: DAG DAGs lassen sich als obere Dreiecksmatrix repräsentieren. 4 5 3 1 4 2009 2 0 0 1 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders 8. Übung zu Algorithmen I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Matrizen zu Graphen: DAG DAGs lassen sich als obere Dreiecksmatrix repräsentieren. 1 3 2 4 4 2009 5 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 1 0 0 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders 8. Übung zu Algorithmen I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Matrizen zu Graphen: Zusammenhangskomponenten Pro Zusammenhangskomponente ein Block in der Matrix 5 2009 4 5 1 3 2 6 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders 8. Übung zu Algorithmen I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Matrizen zu Graphen: Zusammenhangskomponenten Pro Zusammenhangskomponente ein Block in der Matrix 5 2009 4 3 6 1 2 5 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders 8. Übung zu Algorithmen I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Matrizen zu Graphen: Potenzierung Was resultiert aus Potenzierung der Adjazenzmatrix? Wie sind überhaupt · und + definiert auf {0, 1}? z. B. · wie üblich (also Logisches Und), + als max Was bedeutet aij = 1? Weg von i nach j (in einem Schritt). Dann gilt für M = A2 mij = max` (mi ` · m`j ): Existiert ein Weg von i nach j über `? mittels Induktion: (Ak )ij = 1 ⇐⇒ ein Weg von i nach j in k Schritten existiert 6 2009 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders 8. Übung zu Algorithmen I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Implizite Graphen: Unit Disk Graph Implizite Graphen Knoten und/oder Kanten implizit gegeben Unit Disk Graph Knoten mit 2D-Position Kante zu Knoten mit Entfernung ≤ 1 z. B. Funkreichweite in Sensornetzwerken 7 2009 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders 8. Übung zu Algorithmen I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Implizite Graphen: Spielbäume Knoten ist Stellung im Spiel Kanten sind implizit gegeben durch mögliche Züge, zu deren Nachfolgezuständen Tic Tac Toe relativ kleine Anzahl Zustände im DAG optimales Spielen möglich Schach Knoten praktisch nicht mehr aufzählbar allgemeiner Graph, da Stellungs-Wiederholungen 8 2009 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders 8. Übung zu Algorithmen I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Euler-Tour jede Kante genau 1x enthalten Folgende Aussagen sind für einen ungerichteten Graphen G äquivalent: A G enthält eine Euler-Tour B G ist zusammenhängend und jeder Knoten hat geraden Grad C G ist zusammenhängend und die kantendisjunkte Vereinigung von Kreisen Kreis Ein Kreis ist ein kantendisjunkter Pfad mit identischem Anfangsund Endknoten. 9 2009 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders 8. Übung zu Algorithmen I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Beweis A⇒B Die inzidenten Kanten eines Knoten lassen sich in eingehende und ausgehende Kanten unterteilen. Jede eingehende Kante ist bijektiv auf eine ausgehende Kante abgebildet. Also gibt es eine gerade Anzahl inzidenter Kanten an jedem Knoten. 10 2009 4 5 7 3 6 1 2 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders 8. Übung zu Algorithmen I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Beweis B⇒C Q := ∅ while E 6= ∅ e := {u , v } aus E beliebig, E := E \ e x : = v , K : = hu , v i do // invariante genau u und x haben ungeraden Grad e := {x , w } aus E beliebig, E := E \ e x := w, K := K . hw i // gehe zu nächstem Knoten while x 6= u Q := Q ∩ {K } // füge Kreis hinzu 5 4 11 2009 7 3 1 2 6 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders 8. Übung zu Algorithmen I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Beweis C⇒A Kreise sind nicht knotendisjunkt, da G sonst nicht zusammenhängend Induktion über die Anzahl k Kreise Induktionsanfang k = 1: der eine Kreis ist eine Euler-Tour. Induktionsvoraussetzung: Ein zusammenhängender Graph aus k kantendisjunkten Kreisen hat eine Euler-Tour. Induktionsschritt k k + 1: Sei T eine Euler-Tour aus k Kreisen (IV) und K der fehlende Kreis. Da der Graph zusammenhängend, muss es einen gemeinsamen Knoten v geben. Fahre T ab bis v , dann vollständig K und dann weiter mit T . Das ist eine gültige Euler-Tour aus k + 1 Kreisen. 5 1 3 2 12 2009 4 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders 8. Übung zu Algorithmen I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Euler-Tour Algorithmus Verknüpfe Beweise B ⇒ C Finde kantendisjunkte Kreise. und C ⇒ A. Bilde eine einzige Euler-Tour. Ergibt einen Algorithmus mit Laufzeit O(n + m ). Algorithmus von Hierholzer Demo der Technischen Universität München http://www-m9.ma.tum.de/Allgemeines/HierholzerApplet 13 2009 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders 8. Übung zu Algorithmen I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Pfade finden Aufgabe: Gegeben ein ungerichteter zusammenhängender Graph. Finde einen knotendisjunkten Pfad P von Knoten u zu v in O(n). Vorberechnung mit O(n) Platz und O(n + m ) Zeit. Bekannte Algorithmen zur Pfadsuche: Breitensuche (BFS) benötigt O(n + m ) Laufzeit. Der gefundene Pfad ist kantenminimal. Tiefensuche (DFS) benötigt O(n + m ) Laufzeit. Der gefundene Pfad muss nicht kantenminimal sein. Beide Algorithmen benötigen keine Vorberechnung. 14 2009 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders 8. Übung zu Algorithmen I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Algorithmus Lösung: Speichere Breitensuchbaum (parent) für einen beliebigen Startknoten ab. O(n) Platz und O(n + m ) Zeit Von den Knoten u und v traversiere den Baum in Richtung Wurzel bis zum tiefsten gemeinsamen Konten. lowest common ancestor (LCA) Beide Teilpfade zusammen ergeben einen gewünschten Pfad P. Laufzeit ist O(|P |) ⊆ O(n) 15 2009 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders 8. Übung zu Algorithmen I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Beispiel 13 16 14 17 18 12 15 20 19 23 11 22 21 7 10 8 5 9 3 4 6 2 1 16 2009 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders 8. Übung zu Algorithmen I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Beispiel Breitensuche von 1 13 16 14 17 18 12 15 20 19 23 11 22 21 7 10 8 5 9 3 4 6 2 1 17 2009 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders 8. Übung zu Algorithmen I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Beispiel Pfad zwischen Knoten 17 und 21 13 16 14 17 18 12 15 20 19 23 11 22 21 7 10 8 5 9 3 4 6 2 1 18 2009 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders 8. Übung zu Algorithmen I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) 1. Programmier-Aufgabe Proportion Extend Sort Interessanter Algorithmus, der wenig Vergleiche benötigt “... the average number of comparisions is close to n log n − O(n) for some p ...” guter Algorithmus, wenn Vergleiche sehr teuer sind 2. Programmier-Aufgabe Diese ist anspruchsvoller, da der Algorithmus nicht vorgegeben ist. Wer früher anfängt, kann den Tutor mehr fragen. Die meisten werden diese nicht an einem Wochenende lösen können! Allerdings können 12 Punkte erreicht werden ohne eine einzige Zeile Java-Code. (schwierig!) 19 2009 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders 8. Übung zu Algorithmen I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) presorted.png mit p = 16 20 2009 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders 8. Übung zu Algorithmen I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) random.png mit p = 16 21 2009 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders 8. Übung zu Algorithmen I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) random.png mit p = 8 22 2009 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders 8. Übung zu Algorithmen I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) random.png mit p = 4 23 2009 Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders 8. Übung zu Algorithmen I KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)