Informatik II, SS 2014

Ähnliche Dokumente
Informatik II, SS 2018

Informatik II, SS 2016

Informatik II, SS 2014

Informatik II, SS 2018

Informatik II, SS 2016

Algorithmen & Komplexität

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

Algorithmen und Datenstrukturen 2

Kap. 6.6: Kürzeste Wege

Kap. 6.6: Kürzeste Wege

Wintersemester 2004/ Februar 2005

Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen

Zeichenketten. Michael Fularczyk Michael Fularczyk Zeichenketten / 41

Datenstrukturen und Algorithmen (SS 2013)

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Vorlesung 2 KÜRZESTE WEGE

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

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

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

Grundlagen: Algorithmen und Datenstrukturen

7. Transitive Hülle. Kante des Graphen. Zusatz-Kante der transitiven Hülle

Folien aus der Vorlesung Optimierung I SS2013

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

Informatik II, SS 2016

6. Transitive Hülle. 6.1 Min-Plus-Matrix-Produkt und Min-Plus-Transitive Hülle Ring Z(+, ) Semiring N(+, )

Zeichenketten Benedikt Straßner. Programming Systems Group Martensstr Erlangen Germany

Programmierkurs Python II

Grundlagen: Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Datenstrukturen & Algorithmen Lösungen zu Blatt 10 FS 16

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

Grundbegriffe der Informatik

Vorlesung 2 KÜRZESTE WEGE

Algorithmen und Datenstrukturen

Algorithmische Bioinformatik 1

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

Algorithmen und Datenstrukturen (Informatik II) SS Klausur

Lernmodul 7 Algorithmus von Dijkstra

Algorithmen und Datenstrukturen

Informatik II, SS 2016

Relationen und DAGs, starker Zusammenhang

Effiziente Algorithmen 2

Zeichenketten. 29. April 2015 Benedikt Lorch. Benedikt Lorch Zeichenketten April

Algorithmische Mathematik I

Algorithmen und Datenstrukturen, FS17 Prof Dr Christian Tschudin

Informatik II, SS 2018

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

Von Aachen nach Halle...

Gliederung. Algorithmen und Datenstrukturen II. Graphen: All-pairs shortest paths. Graphen: All-pairs shortest paths. Graphen: Kürzeste Pfade III

Algorithmen I - Tutorium 28 Nr. 9

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

Bemerkung: Es gibt Algorithmen für minimale Spannbäume der Komplexität O(m + n log n) und, für dünnbesetzte Graphen, der Komplexität O(m log n), wobei

Informatik II, SS 2016

Kürzeste und Schnellste Wege

16. All Pairs Shortest Path (ASPS)

Informatik II Precomputation

Wenn wir zudem a ii = 1 für 1 i n setzen, dann gilt für A k (boolesches Produkt, A 0 = I) 0 falls es im Graphen keinen Pfad von v i nach v j,

String - Matching. Kapitel Definition

Vorlesung Datenstrukturen

Informatik II Prüfungsvorbereitungskurs

Graphalgorithmen II. Sebastian Ehrenfels Sebastian Ehrenfels Graphalgorithmen II / 44

Grundlagen Datenstrukturen Transitive Hülle Traversierung Kürzeste Wege Spannender Baum Max. Fluss Zuordnungen. 6. Graphen

Informatik II, SS 2018

Informatik II, SS 2014

Graphenalgorithmen und lineare Algebra Hand in Hand Prof. Dr. Henning Meyerhenke

Algorithmen und Datenstrukturen

Algorithmen I. Tutorium Sitzung. Dennis Felsing

Algorithmen I. Prof. Jörn Müller-Quade Institut für Theoretische Informatik Web:

Laufzeit. Finden eines Matchings maximaler Kardinalität dauert nur O( E min{ V 1, V 2 }) mit der Ford Fulkerson Methode.

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

2. Entsprechende Listen P i von Vorgängern von i 3. for i := 1 to n do. (ii) S i = Knoten 2 + 1}

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

Übersicht. 1 Einführung. 2 Suchen und Sortieren. 3 Graphalgorithmen. 4 Algorithmische Geometrie. 5 Textalgorithmen. 6 Paradigmen

Informatik II, SS 2018

Graphalgorithmen Netzwerkalgorithmen. Laufzeit

Informatik II, SS 2018

15. Elementare Graphalgorithmen

Grundbegriffe der Informatik Musterlösung zu Aufgabenblatt 9

Kürzeste Wege in Graphen

Graphentheorie. Kürzeste Wege. Kürzeste Wege. Kürzeste Wege. Rainer Schrader. 25. Oktober 2007

Otto-von-Guericke-Universität Magdeburg Fakultät für Informatik Institut für Simulation und Graphik Prof. Dr. Holger Theisel

DAP2 Probeklausur. Matrikelnummer Vorname Nachname. Datum: 24. Juli C. Sohler A. Krivo²ija, A. Rey, H. Sandvoÿ

SS11 Effiziente Algorithmen 5. Kapitel: Dynamische Programmierung

Aufgaben zur Klausurvorbereitung

Algorithmen für Routenplanung 2. Sitzung, Sommersemester 2012 Thomas Pajor 23. April 2012

Klausur Informatik 2: Algorithmen und Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden!

Algorithmen und Datenstrukturen in der Bioinformatik Viertes Übungsblatt WS 05/06 Musterlösung

Algorithmen für schwierige Probleme

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8

Informatik II, SS 2014

Algorithmische Bioinformatik 1

Effiziente Algorithmen und Datenstrukturen: Kürzeste Wege

Algorithmen und Datenstrukturen Kapitel 9. und

Grundlagen: Algorithmen und Datenstrukturen

Dynamische Programmierung. Problemlösungsstrategie der Informatik

Algorithmen und Datenstrukturen Übung #4 BFS/DFS, Wachstum von Funktionen

Transkript:

Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 20 (23.7.2014) All Pairs Shortest Paths, String Matching (Textsuche) Algorithmen und Komplexität

Vorlesungsevaluation Sie sollten alle eine E Mail mit den Details zur Evaluation der Vorlesung erhalten haben. Bitte die Evaluation bis Ende Woche ausfüllen Am interessantesten sind für uns die allgemeinen Kommentare Auf dem letzten Übungsblatt bekommen Sie 15 Punkte für die Abgabe der Evaluation falls Sie bei der Abgabe in der Datei erfahrungen.txt angeben, dass Sie die Evaluation gemacht haben sollte auch helfen, die Prüfungszulassung zu bekommen, wenn s mit den 50% der Punkte sonst knapp wird... Ich werde die Resultate nächste Woche in der Vorlesung besprechen 2

Kürzeste Wege zw. allen Knotenpaaren all pairs shortest paths problem Berechne single source shortest paths für alle Knoten Dijkstras Algorithmus mit allen Knoten: Laufzeit: Laufzeit Dijkstra log Problem: funktioniert nur bei nichtnegativen Kantengewichten Bellman Ford Algorithmusmitallen Knoten: Laufzeit: Laufzeit BF Problem: langsam... 3

Distanzen zw. allen Knotenpaaren Wir beschränken uns zur Einfachheit auf Distanzen Anstatt mit Adjazenzlisten werden wir dieses Mal mit der Adjazenzmatrix arbeiten Oder etwas genauer, miteiner Distanzmatrix Initialisierung: 3 1 1 2 2 1 3 1 2 3 4 5 3 0 1 3 2 0 5 1 0 3 2 1 0 2 0 2 4

Distanzmatrix Pfade aus Kanten? Matrix : Distanzen, falls nur Pfade aus 2Kanten benutzt werden dürfen Rekursive Berechnung: 5

Distanzmatrix und Matrixmultiplikation Berechnung von (aus und ): Matrixmultiplikation von und : Definition: Matrixmultiplikation in der sogenannten Min Plus Algebra 6

Distanzmatrix berechnen Algorithmus zum Berechnen der Distanzmatrix for 2 to 1 do oder ausgeschrieben... for 2 to 1 do for 1 to do for 1 to do,, for 1 to do if,,, then,,, 7

Distanzmatrix schneller berechnen Matrixmultiplikation in der Min Plus Algebra hat die gleichen Grundeigenschaften, wie die normale Matrixmultiplikation Insbesondere erfüllt sie das Distributivgesetz: Daher gilt Und damit auch 8

Distanzmatrix schneller berechnen Algorithmus zum Berechnen der Distanzmatrix for 1 to log do Am Schluss gilt Laufzeit: 9

Distanzmatrix schneller berechnen Algorithmus zum Berechnen der Distanzmatrix for 1 to log do Alg. ist ein klassisches Beispiel für dynamische Programmierung Opt. Pfad der Länge besteht aus optimalen Pfaden der Länge 2 wird rekursiv berechnet Zwischenresultate werden wiederverwendet 10

Distanzen noch schneller berechnen? Ein anderer Ansatz, wieder durch dynamische Programmierung Annahme: Knoten sind von 1 bis nummeriert Definition, Länge des kürzesten Pfades von nach, so dass als innere Knoten nur die Knoten 1,, verwendet warden. Rekursive Definition von,, 0,,, falls,,, sonst Für 0: 11

Distanzen noch schneller berechnen? Definition, Länge des kürzesten Pfades von nach, so dass als innere Knoten nur die Knoten 1,, verwendet warden. Rekursive Definition von,, 0,,, falls,,, sonst Für 0:,,,,, 12

Floyd Warshall Algorithmus // Initialization for 1 to do for 1 to do if, then,,, 0 else, // Main Loop for 1 to do for 1 to do for 1 to do, min,,,, Korrektheit folgt, da,, Laufzeit: 13

Schnellere Algorithmen Es gibt schnellere Algorithm zum Multiplizieren von Matrizen Die Techniken können zum Teil verwendet werden Allerdings nicht direkt Und insbesondere bei gewichteten Graphen nicht ohne zusätzliche Kosten Dünn besetzte Graphen Johnsons Algorithmus (Laufzeit log ) Idee: Falls die Kantengewichte nichtnegativ sind, kann man einfach Mal Dijkstra ausführen Falls der Graph negative Kantengewichte hat, werden zuerst nichtnegative Gewichte berechnet, welche die gleichen kürzesten Pfade ergeben Das kann man in Zeit tun 14

Transitive Hülle Gegeben ein gerichteter Graph, Die transitive Hülle von ist ein Graph, für welchen gilt:, gerichteter Pfad von nach in Kann genauso mit Floyd Warshall in Zeit berechnet warden Man kann etwas optimieren (da man nur eine 1/0 Antwort benötigt) Hier kann man die Matrix Multiplikationstechniken anwenden BestebekannteKomplexität:. 15

Textsuche / String Matching Gegeben: Zwei Zeichenketten (Strings) Text (typischerweise lang) Muster (engl. pattern, typischerweise kurz) Ziel: Finde alle Vorkommen von in Annahmen: Länge Text :, Länge Muster : Beispiel: 16

Motivation Ist offensichtlich wichtig... Wird in jedem Texteditor gebraucht jeder Editor hat eine find Funktion Wird von Programmiersprachen unterstützt: Java: String.indexOf(String pattern, int fromthisposition) C++: std::string.find(std::string str, size_t fromthisposition) Python: strong.find(pattern, from) 17

Naiver Algorithmus Gehe den Text von links nach rechts durch Das Muster kann an jeder der Stellen 0,, vorkommen Prüfe an jeder dieser Stellen ob das Muster passt indem das Muster Buchstabe für Buchstabe mit dem Text an der Stelle verglichen wird Werden wir gleich noch etwas genauer anschauen... 18

Naiver Algorithmus TestPosition( ): // tests if,, 1 0 while and do 1 return 19

Naiver Algorithmus TestPosition( ): // tests if,, 1 0 while and do 1 return String Matching: for 0 to do if TestPosition( ) then report found match at position 20

Naiver Algorithmus Analyse Laufzeit von TestPosition( ): Annahme: erster Mismatch ist an Position des Patterns falls das Pattern gefunden wird Laufzeit des Algorithmus: Beispiel: 000010001010001 0001 Best case: Worst case: 21

Rabin Karp Algorithmus Grundidee Wir schieben wieder ein Fenster der Grösse über den Text und schauen an jeder Stelle, ob das Muster passt Zur Einfachheit nehmen wir an, dass der Text nur aus den Ziffern 0,, 9 besteht dann können wir das Muster und das Fenster als Zahl verstehen Wenn wir das Fenster eins nach rechts schieben, kann die neue Zahl einfach aus der alten berechnet werden 22

Rabin Karp Algorithms Beobachtungen: In jedem Schritt müssen wir einfach zwei Zahlen vergleichen Falls die Zahlen gleich sind, kommt das Muster an der Stelle vor Wenn man das Fenster um eins weiter schiebt, lässt sich die neue Zahl in 1 Zeit berechnen Falls wir zwei Zahlen in 1 vergleichen können, dann hat der Algorithmus Laufzeit Problem: Die Zahlen können sehr gross sein (Θ bits) Zwei Θ bit Zahlen vergleichen benötigt Laufzeit Θ Nicht besser als mit dem naiven Algorithmus Idee: Benutze Hashing und vergleiche Hashwerte Wenn man das Fenster eins weiter schiebt, sollte sich der neue Hashwert wieder in 1 Zeit aus dem alten Hashwert berechnen lassen 23

Rabin Karp Algorithmus Lösung von Rabin und Karp: Wir rechnen alles mit den Zahlen modulo sollte möglichst gross sein, allerdings klein genug, damit die Zahlen 0,, 1 in einer Speicherzelle (z.b. 32 Bit) Platz haben Muster und Textfenster sind dann beides Zahlen aus dem Bereich 0,, 1 Beim Schieben des Fensters um eine Stelle, lässt sich die neue Zahl wieder in 1 Zeit berechnen Falls das nicht klar ist, siehe spätere Folie... Falls das Muster gefunden wird, sind die zwei Zahlen gleich, falls nicht, können sie trotzdem gleich sein Falls die Zahlen gleich sind, dann überprüfen wir nochmals wie beim naiven Algorithmus Buchstabe für Buchstabe 24

Rabin Karp Algorithmus: Beispiel Text: Muster: Modulus 25

Rabin Karp Algorithmus: Pseudo Code Text, Muster, Basis, Modulus mod 0; t 0; for 0 to 1 do mod mod 0; while do if then TestPosition( ) mod 26

Rabin Karp Algorithmus: Laufzeit Vorberechnung: Im schlechtesten Fall: Der schlechteste Fall tritt ein, falls die Zahlen in jedem Schritt übereinstimmen. Dann muss man in jedem Schritt Buchstabe für Buchstabe überprüfen, ob man das Muster wirklich gefunden hat. Sollte bei guter Wahl von nicht allzu oft geschehen... ausser, wenn das Muster tatsächlich sehr oft (Θ mal) vorkommt... Im besten Fall: Im besten Fall sind die Zahlen nur gleich, falls das Muster auch wirklich gefunden wird. Die Kosten sind dann, falls das Muster im Text Mal vorkommt. 27