Programmierkurs Python II

Ähnliche Dokumente
Algorithmen & Komplexität

Datenstrukturen und Algorithmen (SS 2013)

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

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

Programmierkurs Python II

Informatik II, SS 2014

Vorlesung Datenstrukturen

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist.

Aufgaben zur Klausurvorbereitung

Vorlesung 2 KÜRZESTE WEGE

Algorithmen und Datenstrukturen

12. Graphen Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013

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

8.4 Digraphen mit negativen Kantengewichten Grundsätzliches Betrachte Startknoten s und einen Kreis C mit Gesamtlänge < 0.

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. C5.1 Einführung. C5.2 Grundlagen

Datenstrukturen und Algorithmen

Kürzeste Pfade. Organisatorisches. VL-17: Kürzeste Pfade. (Datenstrukturen und Algorithmen, SS 2017) Walter Unger

Grundlagen: Algorithmen und Datenstrukturen

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

Informatik II, SS 2014

Programmierkurs Python

Fortgeschrittene Netzwerk- und Graph-Algorithmen

1 Kürzeste Pfade in Graphen

Vorlesung Datenstrukturen

Algorithmen und Datenstrukturen 2

Lernmodul 7 Algorithmus von Dijkstra

9 Minimum Spanning Trees

Vorlesung Datenstrukturen

Graphalgorithmen II. Werner Sembach Werner Sembach Graphalgorithmen II / 22

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

2. Das single-source-shortest-path-problem

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

Kürzeste Wege in einem gewichteten Graphen. Anwendungen

12. Der Algorithmus von Dijkstra. Informatik II für Verkehrsingenieure

Algorithmen und Datenstrukturen Kapitel 9. und

Graphalgorithmen II. Sebastian Ehrenfels Sebastian Ehrenfels Graphalgorithmen II / 44

3.2 Generischer minimaler Spannbaum-Algorithmus

Wintersemester 2004/ Februar 2005

11. GRAPHEN 3 FLÜSSE UND SPANNBÄUME

1.Aufgabe: Minimal aufspannender Baum

Algorithmen & Datenstrukturen 2 Praktikum 3

ADS: Algorithmen und Datenstrukturen 2

10 Kürzeste Pfade SSSP-Problem

Graphalgorithmen I. Katharina Reif Hallo Welt -Seminar - LS 2

Kap. 6.6: Kürzeste Wege

Algorithmentechnik - U bung 3 4. Sitzung Tanja Hartmann 03. Dezember 2009

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

Kap. 6.6: Kürzeste Wege

Von Aachen nach Halle...

Algorithmen und Datenstrukturen 1 VL Übungstest SS Juni 2009

Algorithmen und Datenstrukturen

Grundbegriffe der Informatik

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2

Teil 2: Graphenalgorithmen

Algorithmen und Datenstrukturen

Rückblick: Starke Zusammenhangskomponenten

Algorithmische Graphentheorie

Algorithmen und Datenstrukturen Kapitel 9. und

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Vorlesung 2 KÜRZESTE WEGE

Wie wird ein Graph dargestellt?

Informatik II, SS 2018

Teil 2: Graphenalgorithmen

Mustererkennung: Graphentheorie

Routing A lgorithmen Algorithmen Begriffe, Definitionen Wegewahl Verkehrslenkung

Seien u, v V, u v. Da G zusammenhängend ist, muss mindestens ein Pfad zwischen u und v existieren.

10. Übungsblatt zu Algorithmen I im SS 2010

Kap. 5: Graphen. Carsten Gutwenger Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund. 17. VO DAP2 SS

12. AuD Tafelübung T-C3

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

Abgabe: (vor der Vorlesung)

15. Elementare Graphalgorithmen

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 12, Donnerstag, 23.

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen 13

p = (v 0, v 1,..., v k )

Informatik II, SS 2016

Programmiertechnik II

Graphen Jiri Spale, Algorithmen und Datenstrukturen - Graphen 1

Programmierung 2 Studiengang MI / WI

1 Pfade in azyklischen Graphen

Grundbegriffe der Informatik

Grundbegriffe der Informatik

Programmiertechnik II

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen (für ET/IT)

1 Einführung. 2 Grundlagen von Algorithmen. 3 Grundlagen von Datenstrukturen. 4 Grundlagen der Korrektheit von Algorithmen

Algorithmen und Datenstrukturen 2-1. Seminar -

Vorlesungstermin 2: Graphentheorie II. Markus Püschel David Steurer. Algorithmen und Datenstrukturen, Herbstsemester 2018, ETH Zürich

Algorithmen II Vorlesung am

Algorithmen I. Tutorium Sitzung. Dennis Felsing

Algorithmen für Planare Graphen

Transkript:

Programmierkurs Python II Stefan Thater & Michaela Regneri Universität des Saarlandes FR 4.7 Allgemeine Linguistik (Computerlinguistik) Übersicht Topologische Sortierung (einfach) Kürzeste Wege finden (ziemlich einfach) Größter gemeinsamer Teilgraph - Modulares Graph-Produkt (nicht formal) - Cliquen (etwas komplexer)

Ein Graph zum -Machen X Y : X muss erledigt sein, damit Y gemacht werden kann Zwiebel Schälen!!! hacken hacken!!! in die Hackfleisch auspacken! Hackfleisch in die "" " " " " " " Gewürze in die [alles in die ]! Masse Verkneten Masse Verkneten!!! formen Formen!! braten [...] Ein Graph zum -Machen schälen hacken in Hackfleisch in Masse verkneten Gewürze in Fett in erhitzen formen braten 4

Topologische Sortierung - graphische Variante schälen hacken in Hackfleisch in Masse verkneten Gewürze in Fett in erhitzen formen braten lineare Ordnung, alle Kanten zeigen nach rechts 5 Topologische Sortierung - Algorithmus (im Bild) Schritt 0 schälen hacken in x: Eingangsgrad 0 Hackfleisch in Masse verkneten Gewürze in 0 0 Fett in erhitzen formen braten 6

Topologische Sortierung - Algorithmus (im Bild) Schritt 0 hacken in x: Eingangsgrad Masse verkneten 0 erhitzen formen braten schälen Fett in Gewürze in Hackfleisch in Beliebige Ordnung untereinander 7 Topologische Sortierung - Algorithmus (im Bild) in Masse verkneten 0 Schritt x: Eingangsgrad formen braten schälen Fett in Gewürze in Hackfleisch in hacken erhitzen 8

Topologische Sortierung - Algorithmus (im Bild) Schritt 6 Komplexität: bester Fall: O(n) worst case: O(n ) x: Eingangsgrad braten 0 schälen Fett in Gewürze in Hackfleisch in hacken erhitzen in Masse verkneten formen 9 Kürzeste Wege finden 8 a b 5 d e 7 c f Single source shortest path problem Aufgabe: Gegeben einen Knoten im Graph, finde die kürzesten Wege zu allen anderen Knoten Meistens assoziiert mit Kantengewichten (kürzester Weg = billigster Weg) Der Weg vom Startknoten zu unerreichbaren Knoten kann unendlich sein (unzusammenhängende ungerichtete / nicht stark zusammenhängende gerichtete Graphen) 0

Dijkstra-Algorithmus 8 a b 5 d e 7 c f Initialisierung: - Startknoten: Distanz 0, permanent, aktiv - andere: Distanz, temporär (nicht aktiv) So lange es Knoten mit temporären Nachbarn gibt... - Berechne die Distanz der temp. Nachbarn des aktiven Knoten (Distanz aktiver Knoten + Kantengewicht) - wenn berechnete Distanz > notierter Distanz: - aktualisiere notierte Distanz; - notiere aktiven Knoten als Vorgänger - neuer aktiver Knoten: Knoten mit kleinster (Gesamt-)Distanz; markiere den als permanent Dijkstra-Algorithmus a b 8 5 d e 7 c f Startknoten hier: a Initialisiere Distanzen: Startknoten = 0, alle anderen = 0 Initialisiere Markierungen: 8 a b c Startknoten = permanent 5 alle anderen = temporär d e f 7 Initialisiere aktiven Knoten: Startknoten

Dijkstra-Algorithmus 0 (a) 8 Berechne alle Nachbar-Distanzen a b c zum aktiven Knoten (nur zu 5 temporären Knoten) d e f Wenn die berechnete Distanz kleiner (a) 7 ist als die bisher gefundene, aktualisiere Distanz und Vorgänger 0 (a) 8 a b c 5 d (a) e f 7 neuer aktiver Knoten: temporärer Knoten mit kleinster Distanz markiere neuen aktiven Knoten als permanent Dijkstra-Algorithmus 0 a (a) 9 8 b c 5 d e 6 (b) f 7 (b) 0 (a) 9 8 a b c 5 d (a) e X6(b) 5(d) 7 f (b) 0 (a) 9X(b) 6 8 a b c 5 d (a) e 5 (d) 7 f (e) (e) 0 (a) 6 8 a b c 5 d (e) e f 7 5(d) 8 (a) X (e) (c) 0 (a) 6 8 a b c 5 d (a) e f 7 5(d) 8 (e) (c) fertig 4

Dijkstra-Algorithmus - Ergebnis jeder Knoten: minimale Distanz, und direkter Vorgänger Ableitbarer Spannbaum : ein Teilgraph des Graphen, der ein Baum ist und alle Knoten des Graphen enthält die enthaltenen Kanten markieren hier die kürzesten Pfade 0 (a) 6 8 a b c 5 d (a) e f 7 5(d) 8 (e) (c) a b d e c f 5 Kürzeste Wege finden Komplexität von Dijkstra: O(Knoten * log(knoten) + Kanten) SSSP mit neg. gewichteten Kanten - Dijkstra erlaubt keine negativen Gewichte - SSSP mit negativen Gewichten (aber ohne negative Zyklen): Bellman-Ford-Algorithmus All pairs shortest path problem - Aufgabe: berechne für alle Paare von Knoten die kürzesten Pfade zwischen den Knoten - Floyd-Warshall-Algorithmus 6

Graph-Ähnlichkeit: Größter gemeinsamer Teilgraph Problem: Welches ist der maximale Graph, der Teilgraph von zwei Graphen ist? Hyponym Hyponym Person Stephen King verfasst Dramen verfasst Literatur Hyponym Romane Lyrik Hyponym Hyponym Person Schriftsteller Schriftsteller Stephen King verfasst liest verfasst Hyponym Romane Lebens mittel Literatur Hyponym Lyrik 7 Graph-Ähnlichkeit: Größter gemeinsamer Teilgraph Eine Möglichkeit: - Berechne das modulare Produkt der beiden Graphen (ein neuer Graph, der beide Graphen repräsentiert) - finde den größten maximalen vollständigen Teilgraphen (Definition später) 8

Graph-Ähnlichkeit: Modulares Graph-Produkt (MGP) oft angewendet für reinen Graph isomorphismus (ungelabelte, ungerichtete Kanten, Knoten-Label egal) MGP von G=(V,E) und H=(V,E ) ist P=(W,F) so dass - W = kartesisches Produkt von E und F [(u,v) u V, v W] - F = [((u,v),(u,v ))] für alle - (u,u ) E & (v,v ) E - (u,u ) E & (v,v ) F - Knoten sind also Knotenpaare, Kanten repräsentieren gleiche Verbindung in den Ursprungsgraphen 9 Graph-Ähnlichkeit: Modulares Graph-Produkt (MGP) Abwandlung hier für Knoten mit Typen und ggf. unterschiedliche Kanten MGP von G=(V,E) und H=(V,E ) ist P=(W,F) so dass - W = [(u,v) u V, v W, v u] (hier: v s Knoten-Typ ist kompatibel mit u) - F = [{(u,v),(u,v )}] für alle - {u,u } E & {v,v } E - {u,u } E & {v,v } E Zur Vereinfachung ignorieren wir hier Kantentypen, weil die Datenstruktur sie so nicht vorsieht. 0

Graph-Ähnlichkeit: Modulares Graph-Produkt (MGP) Graph-Ähnlichkeit: Cliquen Ein Graph G heißt vollständig, wenn alle seine Knoten paarweise verbunden sind Ein maximaler vollständiger Teilgraph (oder eine Clique) eines Graphen G ist ein Teilgraph G, so dass G vollständig ist und es keinen vollständigen Teilgraphen G von G gibt, so dass G ein Teilgraph von G ist.

Graph-Ähnlichkeit: größte Clique Cliquen finden - Prinzip beginne bei einem minimalen vollständigen Teilgraphen (= ein Knoten) mache eine Cliquen-Knotenmenge (CS) damit auf füge so lange Knoten zu CS, bis es keine Knoten mehr gibt, die mit CS zusammen eine noch unbekannte Clique ergeben Speichere CS als Clique und suche die nächste (mit einem anderen Startknoten) 4

Cliquen finden - Grundlagen des Algorithmus eine aktuelle Cliquen-Menge CS (inital: leer) Kandidaten, Knoten, die mit allen Elementen aus CS verbunden sind (initial: alle Knoten) C Visited, Knoten, die schon betrachtet wurden und für das aktuelle CS gültige Erweiterungen sind (= die zu schon gesehenen Cliquen führen) (initial: leer) ein aktueller aktiver Kandidat S im aktuellen Schritt ignorierte Knoten 5 Cliquen finden - Erfolgsbedingung (finden einer Clique) keine Kandidaten mehr keine Elemente in Visited - sonst gäbe es Knoten, die die aktuelle Cliquen-Menge zu einer Clique erweitern können - der vollständige Teilgraph wäre nicht maximal 6

Cliquen finden - Algorithmus C C in diesem Schritt: ein Knoten in Visited (= eine Clique schon gefunden) Knoten in der Cliquen- Menge Kandidaten übrig 7 Cliquen finden - Algorithmus. Wähle einen aktiven Kandidaten, entferne ihn aus der Kandidaten-Menge S C 8

Cliquen finden - Algorithmus. Wähle einen aktiven Kandidaten, entferne ihn aus der Kandidaten-Menge. füge ihn zur Cliquen-Menge hinzu S C 9 Cliquen finden - Algorithmus.Wähle einen aktiven Kandidaten, entferne ihn aus der Kandidaten- Menge.füge ihn zur Cliquen-Menge hinzu C.gehe in die Rekursion mit neuen Mengen: - Entferne alle Knoten von Kandidaten u. Visited, die nicht mit dem letzten aktiven Kandidaten verbunden sind) - beginne damit bei 0

Cliquen finden - Algorithmus C 5.Wenn Rekursion fertig: - alte Mengen (Visited und Kandidaten) wieder zurück holen - den alten aktiven Kandidaten zu Visited hinzufügen S C Cliquen finden - Algorithmus Abbruchs-Bedingungen: - es gibt keine Kandidaten mehr - es gibt einen Knoten in Visited, der mit allen übrigen Kandidaten verbunden ist C

Cliquen finden der Basis-Algorithmus ist sehr ineffizient Verbesserung des Standard-Falls: Bron-Kerbosch- Algorithmus - Prinzip: optimiere die Auswahl des nächsten aktiven Kandidaten, so dass möglichst früh abgebrochen wird - Ziel: möglichst früh ein Knoten in Visited, der zu allen Kandidaten adjazent ist - Für jeden Knoten in Visited wird die Anzahl der nicht Adjazenten Kandidaten gespeichert - Der nächste Kandidat hat immer eine Verbindung zu dem Knoten in Visited mit kleinsten Zähler Mehr Cliquen 4

Zusammenfassung Heute: verschiedene Graph-Algorithmen Topologische Soritierung: Plan-Management Single Source Shortest Path: Kürzeste Wege Größter gemeinsamer Teilgraph - Modulares Graph-Produkt - Cliquen 5