1 / 17

Time- space -Optimal String Matching nach Zvi Galil und Joel Seiferas

Time- space -Optimal String Matching nach Zvi Galil und Joel Seiferas. Chris Schwiegelshohn Katja Losemann. Stringalgorithmus. Geg.: Suchtext y und Muster x p Position im Suchtext und q Position im Muster Init : p=0 und q=0

frisco
Download Presentation

Time- space -Optimal String Matching nach Zvi Galil und Joel Seiferas

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Time-space-Optimal String Matchingnach ZviGalilund Joel Seiferas Chris Schwiegelshohn Katja Losemann

  2. Stringalgorithmus • 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‘; } gotoloop

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

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

  5. 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 zk ein Präfix von w ist,

  6. Beispiele • (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-Periodeabababa und mit k=3 auch ab

  7. Weitere Terminologie • Gegeben String w und p <= |w| • Funktion reachw(p): • reachw(p) = max{q‘ <= |w| | [0,p] wist Periode von [0,q‘]w}

  8. Beispiele • String w = (abababa) k ∘ abab • reachw(1) = 1 • reachw(2) = 7 • reachw(7) = |w|

  9. Stringalgorithmus 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‘; } gotoloop

  10. Neue Definition • (p‘,q‘) = (p + shiftx(q), q – shiftx(q)), wenn shiftx (q) ≤ q/k = (p + max(1, ⌈q/k⌉), 0) sonst • Fall 1 benötigt zusätzlichen Speicherplatz! • Können wir den Fall 1 vermeiden?

  11. 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 shiftx (q) ≤ q/k und Präfix-Perioden des Suchmusters x erstellen.

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

  13. 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(shiftv( |v| )) • Beweis: Klemmen wir uns

  14. Die große Zusammenführung 1 • Idee des Algorithmusist, nachVorkommen von Suffix vzusuchen • Fall 1: v hat keinePräfix-Periode ⇒ Wegen Lemma 1 kannshiftx (q) ≤ q/k nicht eintreten ⇒ ( p‘ , q‘ ) = ( p + max ( 1 , ⌈q/k⌉ , 0 )

  15. Die große Zusammenführung 2 • Fall 2: v hat genaueinePräfix-PeriodederLänge p1. • Wegen Lemma 2 gilt shiftx (q) ≤ q/k genau dann wenn k ⋅ p1≤ q ≤ reachv(p1) • Also gilt: ( p‘ , q‘ ) = ( p + shiftx(q) , q - shiftx(q) ) = ( p + p1, q – p1 )

  16. Laufzeit und Analyse • Suchenach Suffix v: • f(p,q) = a1 * p + a2 * q = O(|y| + |v|) • Wähle a1 und a2geschickt, so dass die Funktion linear steigt • Suchenach u: • Wegen des DekompositionsLemmaskann u in y nur |y| / shift(v) häufigvorkommen und somit in O(|y|). Suchedahernaiv. • Insgesamt: O(|v| + |y|) = O(|x| + |y|)

  17. Laufzeit und Analyse • Speicherplatzbedarf: • Da wir nur eine Präfix Periode haben konstant! • FERTIG !

More Related