Algorithmen und Datenstrukturen 2



Ähnliche Dokumente
ADS: Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2

1 topologisches Sortieren

Das Briefträgerproblem

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

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

WS 2009/10. Diskrete Strukturen

8 Diskrete Optimierung

Institut für Programmierung und Reaktive Systeme 25. August Programmier-Labor Übungsblatt. int binarysearch(int[] a, int x),

Konzepte der Informatik

Algorithmen und Datenstrukturen 2-1. Seminar -

Datenstrukturen & Algorithmen

Breiten- und Tiefensuche in Graphen

Algorithmen II Vorlesung am

Grundbegriffe der Informatik

Algorithmentheorie Maximale Flüsse

Kapitel 6: Graphalgorithmen Gliederung

Kürzeste Wege in Graphen. Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Theoretische Grundlagen der Informatik

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (20 Graphen) T. Lauer

Informatik I WS 07/08 Tutorium 24

Graphen: Datenstrukturen und Algorithmen

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Vorlesung Diskrete Strukturen Graphen: Wieviele Bäume?

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Maximaler Fluß und minimaler Schnitt. Von Sebastian Thurm

Kompetitive Analysen von Online-Algorithmen

Informationsblatt Induktionsbeweis

Algorithmische Mathematik

Anmerkungen zur Übergangsprüfung

Die Komplexitätsklassen P und NP

Lange Nacht der Wissenschaft. Ein Klassiker. Die Mathematik der Kürzesten Wege

Algorithmen & Komplexität

16. All Pairs Shortest Path (ASPS)

Algorithmen und Datenstrukturen. Große Übung vom Nils Schweer

Grundlagen der Theoretischen Informatik, SoSe 2008

Inventur. Bemerkung. / Inventur

Statistische Untersuchungen zu endlichen Funktionsgraphen

Gliederung. Definition Wichtige Aussagen und Sätze Algorithmen zum Finden von Starken Zusammenhangskomponenten

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

WS 2013/14. Diskrete Strukturen

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Erwin Grüner

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Abschlussprüfung Realschule Bayern II / III: 2009 Haupttermin B 1.0 B 1.1

Formale Systeme, WS 2012/2013 Lösungen zu Übungsblatt 4

Binäre Bäume Darstellung und Traversierung

Algorithmen und Datenstrukturen

6.2 Scan-Konvertierung (Scan Conversion)

Einführung in die Algebra

Kapiteltests zum Leitprogramm Binäre Suchbäume

Wie wird ein Graph dargestellt?

Algorithmen und Datenstrukturen

Bestimmung einer ersten

Kombinatorische Optimierung

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

Primzahlen und RSA-Verschlüsselung

Künstliche Intelligenz Maschinelles Lernen

Die reellen Lösungen der kubischen Gleichung

Vorlesungsplan. Von Naïve Bayes zu Bayesischen Netzwerk- Klassifikatoren. Naïve Bayes. Bayesische Netzwerke

Unterscheidung: Workflowsystem vs. Informationssystem

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

7 Rechnen mit Polynomen

Einführung in Petri-Netze. Modellierung von Abläufen und Prozessen (1) Abhängigkeitsgraphen: Motivation. Petri-Netze

Algorithmen und Datenstrukturen Suchbaum

Teil III: Routing - Inhalt I. Literatur. Geometric Routing. Voraussetzungen. Unit Disk Graph (UDG) Geometric Routing 29

Mathematischer Vorbereitungskurs für Ökonomen

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

Synchronisations- Assistent

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Algorithmen und Datenstrukturen 2

Also kann nur A ist roter Südler und B ist grüner Nordler gelten.

Lineare Funktionen. 1 Proportionale Funktionen Definition Eigenschaften Steigungsdreieck 3

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Grundlagen der Künstlichen Intelligenz

Erfüllbarkeit und Allgemeingültigkeit

Lineare Gleichungssysteme

Tutorium zur Mikroökonomie II WS 02/03 Universität Mannheim Tri Vi Dang. Aufgabenblatt 3 (KW 44) ( )

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Java-Programmierung mit NetBeans

15 Optimales Kodieren

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

2.11 Kontextfreie Grammatiken und Parsebäume

Übung Theoretische Grundlagen

teamsync Kurzanleitung

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü.

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

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

Transkript:

Algorithmen und Datenstrukturen 2 Sommersemester 2007 4. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de

Traversierung Durchlaufen eines Graphen, bei dem jeder Knoten (bzw. jede Kante) genau 1-mal aufgesucht wird - Beispiel 1: Aufsuchen aller Verbindungen (Kanten) und Kreuzungen (Knoten) in einem Labyrinth - Beispiel 2: Aufsuchen aller Web-Server durch Suchmaschinen-Roboter Generische Lösungsmöglichkeit für Graphen G=(V, E) Realisierungen unterscheiden sich bezüglich Verwaltung der noch abzuarbeitenden Knotenmenge und Auswahl der jeweils nächsten Kante P. Stadler Algorithmen und Datenstrukturen 2 2

Breiten- und Tiefendurchlauf Breitendurchlauf (Breadth First Search, BFS) - ausgehend von Startknoten werden zunächst alle direkt erreichbaren Knoten bearbeitet - danach die über mindestens zwei Kanten vom Startknoten erreichbaren Knoten, dann die über drei Kanten usw. - es werden also erst die Nachbarn besucht, bevor zu den Söhnen gegangen wird - kann mit FIFO-Datenstruktur für noch zu bearbeitende Knoten realisiert werden Tiefendurchlauf (Depth First Search, DFS) - ausgehend von Startknoten werden zunächst rekursiv alle Söhne (Nachfolger) bearbeitet; erst dann wird zu den Nachbarn gegangen - kann mit Stack-Datenstruktur für noch zu bearbeitende Knoten realisiert werden - Verallgemeinerung der Traversierung von Bäumen Algorithmen nutzen "Farbwert" pro Knoten zur Kennzeichnung des Bearbeitungszustandes - weiß: noch nicht bearbeitet - schwarz: abgearbeitet - grau: in Bearbeitung P. Stadler Algorithmen und Datenstrukturen 2 3

Breitensuche I Bearbeite einen Knoten, der in n Schritten von u erreichbar ist, erst, wenn alle Knoten, die in n- 1 Schritten erreichbar sind, abgearbeitet wurden. - ungerichteter Graph G = (V,E); Startknoten s; Q sei FIFO-Warteschlange. - zu jedem Knoten u wird der aktuelle Farbwert, der Abstand d zu Startknoten s, und der Vorgänger pred, von dem aus u erreicht wurde, gespeichert - Funktion succ(u) liefert die Menge der direkten Nachfolger von u - pred-werte liefern nach Abarbeitung für zusammenhängende Graphen einen aufspannenden Baum (Spannbaum), ansonsten Spannwald Algorithmus BFS(G,s): P. Stadler Algorithmen und Datenstrukturen 2 4

Breitensuche II Beispiel Komplexität: ein Besuch pro Kante und Knoten: O(n + m) - falls G zusammenhängend gilt E > V -1 -> Komplexität O(m) Breitensuche unterstützt Lösung von Distanzproblemen, z.b. Berechnung der Länge des kürzesten Wegs eines Knoten s zu anderen Knoten P. Stadler Algorithmen und Datenstrukturen 2 5

Tiefensuche I Bearbeite einen Knoten v erst dann, wenn alle seine Söhne bearbeitet sind (außer wenn ein Sohn auf dem Weg zu v liegt) - (un-)gerichteter Graph G = (V,E); succ(v) liefert Menge der direkten Nachfolger von Knoten v - zu jedem Knoten v wird der aktuelle Farbwert, die Zeitpunkte in bzw. out, zu denen der Knoten im Rahmen der Tiefensuche erreicht bzw. verlassen wurden, sowie der Vorgänger pred, von dem aus v erreicht wurde, gespeichert -die in-bzw. out-zeitpunkte ergeben eine Reihenfolge der Knoten analog zur Vorbzw. Nachordnung bei Bäumen P. Stadler Algorithmen und Datenstrukturen 2 6

Tiefensuche II Algorithmus: lineare Komplexität O(n+m) - DFS-visit wird genau einmal pro (weißem) Knoten aufgerufen - pro Knoten erfolgt Schleifendurchlauf für jede von diesem Knoten ausgehende Kante P. Stadler Algorithmen und Datenstrukturen 2 7

Tiefensuche: Beispiel P. Stadler Algorithmen und Datenstrukturen 2 8

Topologische Sortierung I - gerichtete Kanten eines zyklenfreien Digraphs (DAG) beschreiben Halbordnung unter Knoten - topologische Sortierung erzeugt vollständige Ordnung, die nicht im Widerspruch zur partiellen Ordnung steht - Topologische Sortierung eines Digraphen G = (V,E): Abbildung ord: V {1,..., n} mit V = n, so dass mit (u,v) E auch ord(u) < ord(v) gilt. Beispiel: P. Stadler Algorithmen und Datenstrukturen 2 9

Topologische Sortierung II Satz: Digraph G = (V,E) ist zyklenfrei <=> für G existiert eine topologische Sortierung Beweis: <= klar => Induktion über V. Induktionsanfang: V =1, keine Kante, bereits topologisch sortiert Induktionsende: V =n. - Da G azyklisch ist, muss es einen Knoten v ohne Vorgänger geben. Setze ord(v) = 1 - Durch Entfernen von v erhalten wir einen azyklischen Graphen G' mit V' = n-1, für den es nach Induktionsvoraussetzung topologische Sortierung ord' gibt - Die gesuchte topologische Sortierung für G ergibt sich durch ord(v') = ord'(v') + 1, für alle v' V' P. Stadler Algorithmen und Datenstrukturen 2 10

Topologische Sortierung III Korollar: Zu jedem DAG gibt es eine topologische Sortierung Beweis liefert einen Algorithmus zur topologischen Sortierung Bestimmung einer Abbildung ord für gerichteten Graphen G = (V,E) zur topologischen Sortierung und Test auf Zyklenfreiheit - (Neu-)Bestimmung des Eingangsgrades kann sehr aufwendig werden - Effizienter ist daher, den jeweils aktuellen Eingangsgrad zu jedem Knoten zu speichern Effiziente Alternative: Verwendung der Tiefensuche - Verwendung der out-zeitpunkte, in umgekehrter Reihenfolge - Realisierung mit Aufwand O(n+m) - Mit denselben Kosten O(n+m) kann die Zyklenfreiheit eines Graphen getestet werden (Zyklus liegt dann vor, wenn bei der Tiefensuche der Nachfolger eines Knotens bereits grau gefärbt ist!) P. Stadler Algorithmen und Datenstrukturen 2 11

Topologische Sortierung IV Anwendungsbeispiel: Der zerstreute Professor legt die Reihenfolge beim Ankleiden fest. - Unterhose vor Hose - Hose vor Gürtel - Hemd vor Gürtel - Gürtel vor Jackett - Hemd vor Krawatte - Krawatte vor Jackett - Socken vor Schuhen - Unterhose vor Schuhen - Hose vor Schuhen - Uhr: egal Ergebnis der topologischen Sortierung mit Tiefensuche abhängig von Wahl der Startknoten (weißen Knoten) P. Stadler Algorithmen und Datenstrukturen 2 12

Topologische Sortierung V Anwendungsbeispiel: Der zerstreute Professor legt die Reihenfolge beim Ankleiden fest. - Unterhose vor Hose - Hose vor Gürtel - Hemd vor Gürtel 3 Hose - Gürtel vor Jackett - Hemd vor Krawatte - Krawatte vor Jackett - Socken vor Schuhen - Unterhose vor Schuhen - Hose vor Schuhen - Uhr: egal Ergebnis der topologischen Sortierung mit Tiefensuche abhängig von Wahl der Startknoten (weißen Knoten) Unterhose vor Hose Hose vor Gürtel Hose vor Schuhen Uhr: egal 4 Gürtel START 6 Socken Socken v. Schuhen 1 Unterhose Unterhose vor Schuhen Gürtel vor Jackett Hemd vor Gürtel 2 Hemd Hemd vor Krawatte 5 Krawatte Krawatte vor Jackett P. Stadler 13 7 Uhr 8 Schuhe 9 Jackett

Transitive Hülle I Erreichbarkeit von Knoten - welche Knoten sind von einem gegebenen Knoten aus erreichbar? - gibt es Knoten, von denen aus alle anderen erreicht werden können? - Bestimmung der transitiven Hülle ermöglicht Beantwortung solcher Fragen Ein Digraph G* = (V,E*) ist die reflexive, transitive Hülle (kurz: Hülle) eines Digraphen G = (V,E), wenn genau dann (v,v') E* ist, wenn es einen Weg von v nach v' in G gibt. Beispiel P. Stadler Algorithmen und Datenstrukturen 2 14

Transitive Hülle II Naiver Algorithmus zur Berechnung von Pfeilen der reflexiven transitiven Hülle - es werden nur Pfade der Länge 2 bestimmt! - Komplexität O(n 3 ) P. Stadler Algorithmen und Datenstrukturen 2 15

Transitive Hülle: Warshall-Algorithmus Einfache Modifikation liefert vollständige transitive Hülle: P. Stadler Algorithmen und Datenstrukturen 2 16

Korrektheit des Warshall-Algorithmus Korrektheit kann über Induktionsbeweis gezeigt werden: - Induktionshypothese P(j): gibt es zu beliebigen Knoten i und k einen Weg von i nach k, so dass alle Zwischenknoten aus der Menge {0, 1,...j} sind, so wird in der j-ten Iteration A [i][k]=true gesetzt. Wenn P(j) für alle j gilt, wird keine Kante der transitiven Hülle vergessen - Induktionsanfang: j=0: Falls A[i][0] und A[0][k] gilt, wird in der Schleife mit j=0 auch A[i][k] gesetzt - Induktionsschluss: Sei P(j) wahr für 0.. j. Sei ein Weg von i nach k vorhanden, der Knoten j+1 nutzt, dann gibt es auch einen solchen, auf dem j+1 nur einmal vorkommt. Aufgrund der Induktionshypothese wurde in einer früheren Iteration der äußeren Schleife bereits (i,j+1) und (j+1,k) eingefügt. In der (j+1)-ten Iteration wird nun (i,k) gefunden. Somit gilt auch P(j+1). P. Stadler Algorithmen und Datenstrukturen 2 17

Komplexität des Warshall-Algorithmus Komplexität - innerste for-schleife wird nicht notwendigerweise n 2 -mal (n= V ) durchlaufen, sondern nur falls Verbindung von i nach j in E* vorkommt, also O(k) mit k= E* mal - Gesamtkomplexität O(n 2 +k n). P. Stadler Algorithmen und Datenstrukturen 2 18

Kürzeste Wege I kantenmarkierter (gewichteter) Graph G = (V, E, g) - Weg/Pfad P der Länge n: (v 0,v 1 ), (v 1,v 2 ),...,(v n-1, v n ) - Gewicht (Länge) des Weges/Pfads w (P) = g ((v i, v i+1 )) - Distanz d(u,v): Gewicht des kürzesten Pfades von u nach v Varianten - nichtnegative Gewichte vs. negative und positive Gewichte - Bestimmung der kürzesten Wege a) zwischen allen Knotenpaaren, b) von einem Knoten u aus c) zwischen zwei Knoten u und v Bemerkungen - kürzeste Wege sind nicht immer eindeutig - kürzeste Wege müssen nicht existieren: es existiert kein Weg; es existiert Zyklus mit negativem Gewicht P. Stadler Algorithmen und Datenstrukturen 2 19

Kürzeste Wege II Warshall-Algorithmus lässt sich einfach modifizieren, um kürzeste Wege zwischen allen Knotenpaaren zu berechnen - Matrix A enthält zunächst Knotengewichte pro Kante, falls "keine Kante" vorliegt - A[i,i] wird mit 0 vorbelegt - Annahme: kein Zyklus mit negativem Gewicht vorhanden Komplexität: O(n 3 ) P. Stadler Algorithmen und Datenstrukturen 2 20

Kürzeste Wege: Dijkstra-Algorithmus I Bestimmung der von einem Knoten ausgehenden kürzesten Wege - gegeben: kanten-bewerteter Graph G = (V,E, g) mit g: E -> R + (Kantengewichte) - Startknoten s; zu jedem Knoten u wird die Distanz zu Startknoten s in D[u] geführt - Q sei Prioritäts-Warteschlange (sortierte Liste); Priorität = Distanzwert - Funktion succ(u) liefert die Menge der direkten Nachfolger von u Verallgemeinerung der Breitensuche (gewichtete Entfernung) funktioniert nur bei nicht-negativen Gewichten Optimierung gemäß Greedy-Prinzip P. Stadler Algorithmen und Datenstrukturen 2 21

Kürzeste Wege: Dijkstra-Algorithmus II Dijkstra (G,s): P. Stadler Algorithmen und Datenstrukturen 2 22

Dijkstra-Algorithmus: Beispiel P. Stadler Algorithmen und Datenstrukturen 2 23