1 / 39

Spezialvorlesung Suchalgorithmen

Spezialvorlesung Suchalgorithmen. Thema: Zeichenkettensuche und Wörterbücher Stefan Edelkamp. Struktur des Buchs. Überblick. Teilstring-Wörterbücher Suffix-Tries und Suffixbäume Konstruktionsalgorithmus von McCreight Generalisierte Suffixbäume Teilmengen-Wörterbücher Tries Hash Tables

pahana
Download Presentation

Spezialvorlesung Suchalgorithmen

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. SpezialvorlesungSuchalgorithmen Thema: Zeichenkettensuche und Wörterbücher Stefan Edelkamp

  2. Struktur des Buchs

  3. Überblick • Teilstring-Wörterbücher • Suffix-Tries und Suffixbäume • Konstruktionsalgorithmus von McCreight • Generalisierte Suffixbäume • Teilmengen-Wörterbücher • Tries • Hash Tables • Unlimited Branching Tree

  4. Suffixbäume Ein String Wbesitzt genau |W| Endstücke, bestehend aus insgesamt |W| über 2 = O(|W|^2) Zeichen. • ergänze alle Worte W um ein spezielles Endsymbol $, und • füge Suffixe von dem erweiterten Wort W$ in einem Trie ein  Suffixtrie

  5. Charakterisierung Satz: Jeder Knoten im Suffixtree für W entspricht genau einem eindeutigem Teilstring. Beweis: Sicherlich entspricht jeder Knoten im Suffixtrie mindestens einem Teilstring von W, da er durch ein Anfangsstück eines Suffixes von W erreicht werden kann. Unterschiedliche Zeichenketten führen in einem Trie aber auch zu unterschiedlichen Knoten.

  6. Suffixbaum kompakte Darstellungsform eines Suffixtries, in dem jeder Knoten mit nur einem Nachfolgermit seinem Elter verschmolzen ist.  Die durch die Elimination von Knoten mit Grad zwei gewonnene Struktur wird Patricia-Baum genannt (Patricia:Akronym aus practical algorithm to retrieve information coded in alphanumeric)

  7. PlatzkomplexitätSuffixbaum • Jeder Knoten im Suffixbaum für W hat mehr als einen Nachfolger und W viele Blätter. • Die Kantenbeschriftungen werden als Intervall des zugrundeliegenden Strings an den Knoten verwaltet, auf dem die Kante einläuft O(|W|) Platz

  8. Definitionen Partieller Weg: Zusammenhängende, bei der Wurzel beginnende Folge von Kanten. Weg: partieller Weg, der bei einem Blatt endet. Ort einer Zeichenkettem: Knoten im Suffixbaum am Ende des mit m bezeichneten Weges (falls er existiert). Erweiterung einer Zeichenkettem: jede Zeichenkette, die als Präfix hat. Erweiterter Orteiner Zeichenkettem: Ort der kürzesten Erweiterung von m, deren Ort definiert ist. Kontraktierter Ort einer Zeichenkettem: Ort des längsten Präfixes von m, dessen Ort definiert ist.

  9. Aufteilung von Strings Suffix sufiist der an Position i beginnendes Suffix von W mit suf1 = W. Stringheadiist der längste Präfix von sufi, der auch Präfix von sufjfür ein j < iist und Stringtaili ist festgelegt als sufi − headi, also sufi = headitaili. Beispiel: Sei W = ababc, dann suf3 = abc, head3 = ab, und tail3 = c.

  10. Eigenschaften Satz: Jeder innere Knoten t im Suffixbaum für W entspricht dem größten gemeinsamen Präfix zweier Suffixe von W. Beweis: Der größte gemeinsame Präfixp von sufi und sufj von W ist Teilstring von sufi und sufj und bildet einen p beschreibenden Knoten t im Suffixtrie. Die sufi und sufj darstellenden Blätter befinden sich aufgrund der Präfixeigenschaft von p in dem Teilbaum, der durch t beschrieben wird. Angenommen, t wird durch Kontraktion gelöscht. Dann hat t nur einen Nachfolger t‘, der eine Erweiterung p‘ von p repräsentiert. Die Zeichenkette p‘ ist jedoch Präfix von sufi und sufj,  Widerspruch zu pgrößter gemeinsame Präfix.

  11. Suffixbaum KonstruktionNaives Verfahren In dem ersten Ansatz beginnen wir mit dem leeren Baum T0. Der Baum Ti+1 entsteht aus Ti durch Einfügen des Suffixes sufi+1.

  12. Konstruktionsidee Zur Einfügung von sufi wird Ti+1 kann aus Ti wie folgt konstruiert werden: • bestimme den erweiterten Ort von headi+1 in Tiund teile die letzte zu diesem Ort führende Kante durch Einfügen eines neuen Knotens in zwei neue Kanten auf. • schaffe ein neues Blatt als Ort für sufi+1. Offenbar sichert das eindeutige Endesymbol $, dass stets taili nicht leer ist.

  13. Beispiel • Es gibt Beispiele, für die der oben beschriebene Algorithmus O(n^2) viele Schritte benötigt, um einen Suffixbaum zu konstruieren.

  14. McCreight‘scherAlgorithmus …fußt auf dem sogenannten Suffixlink. Der Suffixlink von dem Ort einer Zeichenkette am, a Σ, mΣ* zeigt auf den Ort von m und wird als als Abkürzung bei der Baumkonstruktion verwendet werden. In Ti haben alle sufj, j < i bereits einen Ort headi ist der längste Präfix von sufi, dessen erweiterter Ort in Ti−1 existiert.

  15. Linarzeitalgorithmus • Wenn der erweiterte Ort von headi+1 in Tigefunden ist, kann das Erzeugen eines neuen Knotens und das Aufspalten einer Kante in konstanter Zeit geschehen. Der McCreight‘sche Algorithmus läuft in 2 Phasen. 1. Bestimme headi+1 in konstanter amortisierter Zeit in Ti 2. Füge zusätzliche Suffixlinks ein

  16. Lemma Wenn headi= amfür ein Symbol aund eine (evtl. leere) Zeichenkette mist, dann ist mein Präfix von headi+1. Beweis:Sei headi = am, dann existiert ein j < i, so dass a Präfix von sufiund sufj ist nach der Definition von headi. Also ist m ein Präfix sowohl von sufi+1 als auch von sufj+1.

  17. Invarianten Beachte Ort von m kann niemals im Teilbaum mit Wurzel beim Ort von am liegen, da in diesem Teilbaum nur Erweiterungen von am liegen. (I1) Alle inneren Knoten von Ti−1 haben einen korrekten Suffix-Zeiger in Ti. (I2) Bei der Konstruktion von Ti wird der kontraktierte Ort von headiin Ti−1 besucht. Offensichtlich gelten beide Bedingungen für i = 1. Ist i > 1, so folgt aus (I2), dass man die Konstruktion von Ti+1 aus Ti beim kontraktierten Ort von headi in Ti−1beginnen kann.

  18. Blick mit der Lupe Ist headinicht leer, so bezeichnet αi die Konkatenation der Kantenbeschriftungen des Weges zum kontraktierten Ort von headiohne den ersten Buchstaben ai.Ferner sei βi = headi − ai αi- Ist headinicht leer, haben wir in Ti:  headi+1 = αiβiγi+1.

  19. Schritt 1 des AlgorithmusEinfügen des Ortes von headi+1

  20. Schritt 2 des Algorithmus Einfügen des Suffix-Zeigers für den Ort von headi. In einer Implementierung werden natürlich Schritt 1 und 2 in einander verflochten.

  21. Beispiel W=bbbbbababbbaabbbbbc Konstruktion von T14 as T13 Durch Einfügen von suf14=bbbbbc

  22. Korrektheit Satz: Falls der Ort von αiβi in Ti nicht existiert, dann ist headi+1 = αiβi , d.h. γi+1ist leer

  23. Beweis (Fortführung)

  24. Laufzeitanalyse Der Algorithmus von McCreight liefert in Zeit O(|W|) einen Suffixbaum für W.

  25. Analyse Rescanning (Fortführung)

  26. Analyse Scanning

  27. Beispiel für Konstruktion

  28. Beispiel (Fortführung)

  29. Generalisierte Suffixbäume Patricia–Baum S für alle Suffixe von m1$1,…,mk$k (mögliche Ersetzung $idurch $).  Anzahl der Knoten durch die Summe der Stringlängenbeschränkt.

  30. Einfügen eines Strings

  31. Löschen eines Strings • Nutzt „Zwillingsknotenstruktur“

  32. Komplexität Sei Sder generalisierten Suffixbaum nach einer beliebigen Anzahl von Einfüge- und Löschoperationen gespeichert sind und Ddie Summe der Längen aller gespeicherter Strings.  Speicherplatz in O(D)  Zeit O(|m|)für jede Einzeloperation auf m

  33. Teilmengen-Wörterbücher Sei D eine Menge von n Teilmengen von U. Das Subset (Containment) Query Problem fragt für eine gegebene Anfragemenge q  D ob es ein p  D gibt mit q  p (p  q). Ein Teilmengen-Wörterbuch ist eine Datenstrukture die Einfügen von Teilmengen von D erlaubt, und Subset und Containment Queries unterstützt.

  34. Partial Match Problem Sei * ein „don’t care“ Zeichen, dass jedem Zeichen eines gegebnen Alphabets entspricht. Gegeben eine Menge D von n Vektoren über einem Alphabet Σ, fragt das Partial Match nach einer Datenstruktur, die für jede Anfrage q Σ {*} feststellt, ob es einen Eintrag p in D gibt, so dass q auf des Wort p passt.

  35. Äquivalenz Das Partial-Match Problem ist äquivalent zu dem Subset Query Problem Beweis:

  36. Tries für Partial Match

  37. Hash-Table für Partial Match Alle möglichen Elemente werden gehashed

  38. Unlimited Branching Tree für Subset und Containment Query

  39. Operationen auf UBTs

More Related