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.

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

Christian Scheideler SS 2009
Christian Scheideler SS 2009
Informatik II: Algorithmen und Datenstrukturen SS 2013
Eine dynamische Menge, die diese Operationen unterstützt,
Asymptotische Notation
Algebraische Zahlen: Exaktes Rechnen mit Wurzeln
Kontextfreie Grammatiken
Kardinalität von binären Beziehungen (1)
Shift-And und Karp-Rabin
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten KMP, BM.
Suche in Texten (Stringsuche )
3. Kapitel: Komplexität und Komplexitätsklassen
Kapitel 6. Suchverfahren
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
5. Sortier-Algorithmen Vorbemerkungen:
2. Kapitel: Komplexität und Komplexitätsklassen
Synonyme: Stapel, Keller, LIFO-Liste usw.
Christian Schindelhauer
Sortierverfahren Richard Göbel.
Algorithmentheorie 04 –Hashing
Suche in Texten: Suffix-Bäume
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
Bestimmung des Next-Arrays im KMP-Algorithmus
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (11-1 –Selbstanordnende lineare Listen) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27-Selbstanordnende lineare Listen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 16 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix - Bäume.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (17 –Turingmaschinen) Prof. Dr. Th. Ottmann.
Katja Losemann Chris Schwiegelshohn
Christian Schindelhauer
Christian Schindelhauer
Christian Schindelhauer
Einführung in Berechenbarkeit, Formale Sprachen und Komplexitätstheorie Wintersemester 2005/ Vorlesung Dominic Dumrauf.
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.
SLR(1)-Parser Basiert auf LR(0)-Item-Mengen, wie LR(0)-Parser. Zusätzlich wird für Reduktionen bei Follow(X) als Vorschau- menge benutzt. LR(1)-Parser.
Vortrag zum Thema Brute - Force Algorithmus Vortragende
Mustersuche in Zeichenfolgen
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Effiziente Algorithmen
Effiziente Algorithmen
Kapitel 7: Ausgewählte Algorithmen 7.1 Externes Suchen
Effiziente Algorithmen
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation
Folie 1 Kapitel IV. Matrizen Inhalt: Matrizen als eigenständige mathematische Objekte Zusammenhang zwischen Matrizen und linearen Abbildungen Produkt von.
Christian Mansky Design - Fallstudien Christian Mansky
Algorithm Engineering „Zeichenkettensuche“
Wahrscheinlichkeitsrechnung
Suchen In Texten Von Adriano Feola & Marc Draschl.
Automaten, formale Sprachen und Berechenbarkeit II SoSe 2004 Prof. W. Brauer Teil 1: Wiederholung (Vor allem Folien von Priv.-Doz. Dr. Kindler vom WS 2001/02.
Arne Vater Wintersemester 2006/ Vorlesung
Parallelisierung für Multiprozessor-Maschinen
§22 Invertierbare Matrizen und Äquivalenz von Matrizen
HEINZ NIXDORF INSTITUT Universität Paderborn Fachbereich Mathematik/Informatik Algorithmische Probleme in Funknetzwerken VI Christian Schindelhauer
Kapitel 3: Erhaltungssätze
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
X. Übungsblatt – Aufgabe X a)Erstellen Sie den Huffman-Codierungsbaum für die folgende Zeichenkette: ABRAKADABRASIMSALABIM Vorgehensweise: 1.Tabelle mit.
Algorithmen für Geographische Informationssysteme

 Präsentation transkript:

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 + q + 1) == x(q + 1) do q = q +1; p = p; q = q; } goto loop Stringalgorithmus

Varianten Nur über Berechnung von p und q! Naiv: p = p + 1 und q = q + 1 Knuth-Morris-Prat berechnet p = p + shift x (q) und q = q - shift x (q), wobei shift x (q) = min{shift > 0 |[shift,q] x = [0,q-shift] x }

Aufwand von String Matching String-matching Algorithmen: Entweder: in linearer Zeit (Knuth-Morris) Oder: ohne Speicherplatzbedarf (naiv) Jetzt: Beides

Terminologie k: beliebig, fest und hinreichend groß z und w Strings w(i): i-ter Buchstabe von Wort w z ist Periode von w, wenn w Präfix von z z ist einfach, wenn für kein i>1 z i = z gilt z ist Präfix-Periode von w, wenn w einfach ist und z k ein Präfix von w ist,

(ab) 3 = ababab ist nicht einfach abababa ist dagegen einfach Beide Strings haben dieselben Perioden ab, abab, ababab und sogar abababa String w = (abababa) k abab besitzt mit k>=4 die Präfix-Periode abababa und mit k=3 auch ab Beispiele

Weitere Terminologie Gegeben String w und p <= |w| Funktion reach w (p): reach w (p) = max{q <= |w| | [0,p] w ist Periode von [0,q] w }

Beispiele String w = (abababa) k abab reach w (1) = 1 reach w (2) = 7 reach w (7) = |w|

Sei x ein String mit Länge: p 1 + p 2 und habe x Perioden der Länge p 1 und p 2, dann hat x eine Periode der Länge des GGT(p 1,p 2 ) Perioden Lemma

Verschiedene Präfix-Perioden desselben Strings, haben mindestens verschiedene Längen eines Faktor von (k-1). Es gilt: Sei w String mit Präfix-Periode mit Länge p 1 und einem einfachen Präfix der Länge p 2 > p 1 mit reach w (p 2 ) = k*p 2, dann ist p 2 > (k-1)p 1. Korollar

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 + q + 1) == x(q + 1) do q = q +1; p = p; q = q; } goto loop Stringalgorithmus

Neue Definition (p,q) = (p + shift x (q), q – shift x (q)), wenn shift x (q) q/k = (p + max(1, q/k), 0) sonst Fall 1 benötigt zusätzlichen Speicherplatz! Können wir den Fall 1 vermeiden?

Vorgehen Leider nicht ganz Ist k groß, dann sollte der erste Fall relativ selten vorkommen. Es lässt sich ein Zusammenhang zwischen der Häufigkeit von shift x (q) q/k und Präfix- Perioden des Suchmusters x erstellen.

Vorkommen von shift x (q) q/k Lemma 1: Wenn shift x (q)<=q/k, dann [0, shift x (q)] x Präfix-Periode von x. Lemma 2: Wenn [0, shift x (q)] x Präfix-Periode von x, dann shift = shift x (q) <= q/k k * shift <= q <= reach x (shift)

Suche nach einem festen Muster Dekompositions Theorem: Jedes Muster x kann in Strings u und v aufgeteilt werden, so dass x = uv und v hat maximal eine Präfix-Periode und |u| = O(shift v ( |v| )) Beweis: Klemmen wir uns

Idee des Algorithmus ist, nach Vorkommen von Suffix v zu suchen Fall 1: v hat keine Präfix-Periode Wegen Lemma 1 kann shift x (q) q/k nicht eintreten ( p, q ) = ( p + max ( 1, q/k, 0 )

Fall 2: v hat genau eine Präfix-Periode der Länge p 1. Wegen Lemma 2 gilt shift x (q) q/k genau dann wenn k p 1 q reach v (p 1 ) Also gilt: ( p, q ) = ( p + shift x (q), q - shift x (q) ) = ( p + p 1, q – p 1 )

Suche nach Suffix v: f(p,q) = a 1 * p + a 2 * q = O(|y| + |v|) Wähle a 1 und a 2 geschickt, so dass die Funktion linear steigt Suche nach u: Wegen des DekompositionsLemmas kann u in y nur |y| / shift(v) häufig vorkommen und somit in O(|y|). Suche daher naiv. Insgesamt: O(|v| + |y|) = O(|x| + |y|)

Speicherplatzbedarf: Da wir nur eine Präfix Periode haben konstant! FERTIG !