Informatik II: Algorithmen und Datenstrukturen SS 2013

Slides:



Advertisements
Ähnliche Präsentationen
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Advertisements

Polynomial Root Isolation
Shift-And und Karp-Rabin
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten KMP, BM.
Suche in Texten (Stringsuche )
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Grundlagen der Informatik
Klicke Dich mit der linken Maustaste durch das Übungsprogramm!
Halbzeit: Kurze Wiederholung
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
Bestimmung des Next-Arrays im KMP-Algorithmus
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 13 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Algorithmen und Datenstrukturen
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 12 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 11 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Informatik II: Algorithmen und Datenstrukturen SS 2013
Christian Schindelhauer
Hauptseminar Automaten und Formale Sprachen
Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar.
Vortrag zum Thema Brute - Force Algorithmus Vortragende
Mustersuche in Zeichenfolgen
Effiziente Algorithmen
Ich möchte gerne mehrere Bilder auf ein Folie
Wie man eine einfache Präsentation erstellt...
Effiziente Algorithmen
Moin. Ich benutze PPT 2002 und möchte drei Bilder nacheinander 1
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Effiziente Algorithmen
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Chris Schwiegelshohn Katja Losemann. Geg.: Suchtext y und Muster x p Position im Suchtext und q Position im Muster Init: p=0 und q=0 loop { while y(p.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2013/14 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Algorithm Engineering „Zeichenkettensuche“
Hallo Ich möchte einen Text einer Folie nicht einfach nur einfliegen lassen, sondern genau diesen Text, der schon an einer bestimmten Stelle steht, vergrößern.
wenn ich auf eine bestimmte Stelle auf einer Folie klicke
Suchen In Texten Von Adriano Feola & Marc Draschl.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Christian Schindelhauer Wintersemester 2006/07 3. Vorlesung
Arne Vater Wintersemester 2006/ Vorlesung
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Analyse der Laufzeit von Algorithmen
Vom graphischen Differenzieren
1 Erstellung eines Lebenslaufes
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Foliendesign: Jörg Steinrücken & Tobias Kahn Vorlesung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Voronoi-Diagramme.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung der Algorithmus von Floyd.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 3 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 1 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
 Präsentation transkript:

Informatik II: Algorithmen und Datenstrukturen SS 2013 Vorlesung 12b, Mittwoch, 10. Juli 2013 (String Matching, Algorithmus von Knuth-Morris-Pratt) Prof. Dr. Hannah Bast Lehrstuhl für Algorithmen und Datenstrukturen Institut für Informatik Universität Freiburg

Blick über die Vorlesung heute Weiter String Matching Fortsetzung: Algorithmus von Rabin-Karp Laufzeitanalyse + Implementierungsdetails In der Implementierung gestern war noch ein Veler ! Neu: Algorithmus von Knuth-Morris-Pratt Beschreibung + Intuition + Beispiel + Laufzeitanalyse Ü12, Aufgabe 2: Knuth-Morris-Pratt implementieren

Knuth-Morris-Pratt Algorithmus 1/9 Motivation für den Algorithmus Wenn man die ersten k Zeichen des Musters mit den ersten k Zeichen eines Fensters im Text verglichen hat ... und jetzt das Fenster im Text um eins weiter schiebt ... dann hat man k-1 Zeichen dieses Fensters schon mal mit dem Muster verglichen Man möchte gerne vermeiden, die nochmal anzuschauen Wie das gehen könnte, sieht man am besten an ein paar Beispielen … nächste Folien

Knuth-Morris-Pratt Algorithmus 2/9 Beispiel nicht-repetitives Muster Im besten Fall kann man die Suche im Text da fort- setzen, wo der letzte "Mismatch" mit dem Muster war Nehmen wir an, dass Muster ist ABCDEFG Und nehmen wir an, an der aktuellen Textstelle passt es bis vor das E und dann nicht mehr ABCDEFG

Knuth-Morris-Pratt Algorithmus 3/9 Beispiel repetitives Muster Es kann aber auch sein, dass es davor auch noch einen Treffer gibt Nehmen wir an, dass Muster ist DUBIDUBADU Und nehmen wir an, an der aktuellen Textstelle passt es bis vor das A und dann nicht mehr DUBIDUBADU

Knuth-Morris-Pratt Algorithmus 4/9 Vorverarbeitung des Musters 1/3 Wir berechnen für jede Stelle des Musters vor, um wie viel links von der Stelle des letzten "Mismatches" man die Suche fortsetzen kann, ohne einen Treffer zu verpassen Dabei wollen wir so wenig nach links gehen wie möglich Erst mal ein paar Beispiele

Knuth-Morris-Pratt Algorithmus 5/9 Vorverarbeitung des Musters 2/3 Genauer gesagt, berechnen wir für jedes j ϵ {0, ..., m - 1} shift[j] = max { k ≤ j : P[j – k + 1 .. j] = P[0 .. k – 1] } In Worten: die Länge des längsten Teilstückes bis Stelle j (< alles bis j), die gleich dem Anfang des Musters ist Man beachte, dass per Definition shift[j] ≤ j

Knuth-Morris-Pratt Algorithmus 6/9 Vorverarbeitung des Musters 3/3 Das Feld shift lässt sich einfach iterativ in Zeit O(m) von links nach rechts berechnen Beobachtung: shift[j + 1] ist entweder shift[j] + 1 oder 0, und das lässt sich anhand von P[j] entscheiden Der Rest ist Teil der Ü12, Aufgabe 2 Schreiben Sie für die Methode precomputeShiftArray unbedingt einen separaten Unit Test ! Sie können dazu einfach die Beispiele von der Folie vorher verwenden

Knuth-Morris-Pratt Algorithmus 7/9 Beschreibung des Algorithmus Vorberechnung des shift Feldes wie gerade erklärt Wie beim naiven Algorithmus ein Fenster der Größe m von links nach rechts über den Text schieben An Stelle i von links nach rechts prüfen ob das Muster passt, ebenfalls wie beim naiven Algorithmus Jetzt der Unterschied: falls erster Mismatch an Stelle j in P, dann an Stelle i – shift[j-1] im Text weiter machen (Match zählt wie Mismatch bei j = |P|) bzw. bei i + 1 falls j = 0 Der naive Algorithmus macht immer an Stelle i + 1 weiter ! Dazu schauen wir uns jetzt ein vollständiges Beispiel an

Knuth-Morris-Pratt Algorithmus 8/9

Knuth-Morris-Pratt Algorithmus 9/9 Laufzeit Sei i der Index des aktuellen Zeichens im Text In jeder Iteration erhöhen wir i oder es bleibt gleich Wenn i gleich bleibt, verschieben wir das Muster im Bild (siehe Beispiel Folie 10) um mindestens eins nach rechts Die Verschiebung ist gerade j – shift[j-1] > 0 Da man im Bild höchstens n mal nach rechts gehen kann, gibt es also höchstens 2n Iterationen In jeder Iteration gibt es nur konstant viele Operationen Damit ist die Laufzeit O(n)

Literatur / Links Wikipedia Originalarbeit http://de.wikipedia.org/wiki/Knuth-Morris-Pratt-Algorithmus http://en.wikipedia.org/wiki/Knuth-Morris-Pratt_algorithm Originalarbeit Donald Knuth und James Morris und Vaughan Pratt Fast pattern matching in strings 1977 SIAM Journal on Computing