Algorithmen und Datenstrukturen II: Suchen in Texten

Werbung
Algorithmen und Datenstrukturen II:
Suchen in Texten
Prof. Dr. Oliver Braun
Fakultät für Informatik und Mathematik
Hochschule München
Letzte Änderung: 29.06.2017 13:51
Inhaltsverzeichnis
Ein Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Das Suchproblem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Suche in dynamischen Texten
Das naive Verfahren zur Textsuche . . . . . . . . . . .
Naheliegende Verbesserung des naiven Verfahrens . . .
Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . .
Das Verfahren von Knuth-Morris-Pratt . . . . . . . . .
Allgemeine Situation beim Mismatch . . . . . . . . . .
Das Verfahren von Knuth-Morris-Pratt … . . . . . . . .
Das Verfahren von Boyer-Moore . . . . . . . . . . . . .
Minimale Verschiebung des Textzeigers . . . . . . . . .
Beispiele Boyer-Moore . . . . . . . . . . . . . . . . . .
Berechnung der Verschiebung bei einem Bad-Character
Verschiebung des Textzeigers . . . . . . . . . . . . . .
Fall 1: M − j + 1 > delta − 1(c) . . . . . . . . . . . . .
Beispiel für Fall 1 . . . . . . . . . . . . . . . . . . . . .
Fall 2: M − j + 1 ≤ delta − 1(c) . . . . . . . . . . . . .
Beispiel für Fall 2 . . . . . . . . . . . . . . . . . . . . .
Im schlimmsten Fall naiv . . . . . . . . . . . . . . . . .
Berechnung der Verschiebung bei einem Good-Suffix .
Formalisierung . . . . . . . . . . . . . . . . . . . . . .
Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . .
Berechnung der delta − 2-Tabelle für banana . . . . . .
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
2
3
3
3
3
4
4
4
5
5
5
6
6
7
7
8
8
8
9
9
10
10
Algorithmen und Datenstrukturen II: Suchen in Texten
Prof. Dr. Oliver Braun
Das Verfahren von Boyer-Moore . . . . . . . . . . . . . . . . . . . . . . . . . .
Signaturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Beispiel für Signaturen: Verfahren von Karp und Rabin . . . . . . . . . . . . .
Suchen in statischen Texten
Aufbereitung von Texten — Suffix-Bäume . . . . . . . . . .
Einschub: Tries . . . . . . . . . . . . . . . . . . . . . . . . .
Suffix-Tries . . . . . . . . . . . . . . . . . . . . . . . . . . .
Suffix-Bäume . . . . . . . . . . . . . . . . . . . . . . . . . .
Konstruktion von Suffix-Bäumen . . . . . . . . . . . . . . .
Naiver Algorithmus . . . . . . . . . . . . . . . . . . . . . . .
Begriffe zur Beschreibung des naiven Verfahrens . . . . . . .
Naives Verfahren zur Konstruktion des Suffix-Baumes . . . .
Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Naives Verfahren zur Konstruktion des Suffix-Baumes … . .
Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Effiziente Implementierung durch kompakte Repräsentation
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
10
11
11
11
11
12
12
13
14
14
14
15
15
16
16
17
Ein Text
• Texte spielen in vielen Anwendungen eine zentrale Rolle
– z.B. in Texteditoren, Literaturdatenbanken, Systemen zur Symbolmanipulation
• Texte sind nicht weiter strukturierte Folgen beliebiger Länge über einem endlichen
Alphabet
• das Alphabet kann Buchstaben, Ziffern und zahlreiche Sonderzeichen enthalten
• der zugrundeliegende Datentyp kann auf verschiedene Arten realisiert sein
– z.B. Array-of-Characters, verkettete Liste von Zeichen
• Zeichenkette soll nicht-negative, ganzzahlige Länge zugeordnet sein
• Zugriff auf das i. Zeichen für jedes i ≥ 1 soll möglich sein
Das Suchproblem
Gegeben sind eine Zeichenkette (Text) a1 ...aN von Zeichen aus einem endlichen Alphabet Σ und eine Zeichenkette, das Muster (Pattern), b1 ...bM , mit bi ∈ Σ, 1 ≤ i ≤ M
Gesucht sind ein oder alle Vorkommen von b1 ...bM und a1 ...aN , d.h. Indizes i mit 1 ≤
i ≤ (N − M + 1) und ai = b1 , ai+1 = b2 , ..., ai+M −1 = bM
• in der Regel ist N sehr viel größer als M
Letzte Änderung: 29.06.2017 13:51
2
Algorithmen und Datenstrukturen II: Suchen in Texten
Prof. Dr. Oliver Braun
• wir unterscheiden Suche in
– statischen Texten und in
– dynamischen Texten
Suche in dynamischen Texten
Das naive Verfahren zur Textsuche
• Idee: Muster wird, beginnend beim ersten Zeichen des Textes, der Reihe nach an
jeden Teilstring des Textes angelegt
• wird zeichenweise verglichen
• bei einem Mismatch wird vom nächsten Zeichen an weiter probiert
• das Muster B muss im worst-case (N − M + 1)-mal an den Text A angelegt werden
und dann jeweils ganz durchlaufen werden
• das bedeutet es müssen (N − M + 1) · M Vergleiche ausgeführt werden
• Laufzeit also von der Größenordnung Θ(N · M )
Naheliegende Verbesserung des naiven Verfahrens
• Muster wird nur bis zum ersten Mismatch durchlaufen und nicht (trotzdem) komplett
• Wahrscheinlichkeit ist am höchsten, dass das Muster an der ersten Stelle nicht
passt
• in der Praxis reichen dann oft nur noch O(M + N ) Vergleiche
• im worst case schlägt es immer erst beim letzten Zeichen fehl: Ω(N · M )
• naives Verfahren ist gedächtnislos
Beispiel
er sprach abrakadabra, es bewegte sich aber nichts
a
a
a ...
ab ...
abe
a ...
Letzte Änderung: 29.06.2017 13:51
3
Algorithmen und Datenstrukturen II: Suchen in Texten
Prof. Dr. Oliver Braun
a
aber
Das Verfahren von Knuth-Morris-Pratt
• Idee: Tritt an der j-ten Stelle ein Mismatch auf, haben die vorangegangenen j − 1
Stellen übereingestimmt
• mit dieser Information soll das Muster soweit wie möglich nach rechts verschoben
werden
• Beispiel
i
Text: ... 010110101
Muster:
010101
– wird das Muster um nur eine Stelle verschoben, tritt sofort wieder ein Mismatch auf
– offensichtlich kann es gleich um zwei Stellen verschoben werden
Allgemeine Situation beim Mismatch
1. Die letzten j − 1 gelesenen Zeichen im Text stimmen mit den ersten j − 1 Zeichen
im Muster überein.
2. Das gerade gelesene i-te Zeichen im Text ist verschieden vom j-ten Zeichen im
Muster.
Frage Mit welchem Zeichen im Muster kann man das i-te Textzeichen als nächstes
vergleichen, so dass man kein Vorkommen im Text übersieht?
Das Verfahren von Knuth-Morris-Pratt …
• vom Anfangsstück des Musters mit der Länge j − 1 ein längstes Endstück suchen,
das ebenfalls Anfangsstück des Musters ist
• hat Endstück die Länge l, dann nennen wir die Position l + 1 next[j]
• next[j] muss als nächstes mit Position i verglichen werden
• Beispiel:
– Text abababb, Muster ababb
– Mismatch beim 5. Zeichen, also Anfangsstück des Musters ist abab
– Endstück ab ist zugleich Anfangsstück
– d.h. Muster kann sofort zwei Stellen weiter verschoben werden
Letzte Änderung: 29.06.2017 13:51
4
Algorithmen und Datenstrukturen II: Suchen in Texten
Prof. Dr. Oliver Braun
Das Verfahren von Boyer-Moore
• Zeichen im Muster werden nicht von links nach rechts, sondern von rechts nach
links mit den Zeichen im Text verglichen
• das Muster wird zwar trotzdem der Reihe nach von links nach rechts an wachsende
Textpositionen angelegt, aber der Vergleich beginnt immer mit dem letzten Zeichen
des Textes
• tritt bis zum Vergleich des ersten Zeichens im Muster kein Mismatch auf, ist ein
Vorkommen gefunden
• tritt ein Mismatch auf, wird eine (möglichst große) Verschiebung des Musters
berechnet
Minimale Verschiebung des Textzeigers
• seien
– i der aktuelle Wert des Textzeigers
– j der aktuelle Wert des Musterzeigers
– M die Länge des Musters
• erfolgt ein Mismatch bei i und j kann das Muster um eine Position nach rechts
geschoben werden
• damit der Textzeiger auf das Zeichen zeigt das nach der Verschiebung mit dem
letzten Zeichen des verglichen wird, muss er um M − j + 1 Stellen nach rechts
verschoben werden, also i = i + M − j + 1
• Beispiel:
i
... Wettervorhersage ...
Alter
j
neuer Wert von i muss auf das v zeigen
Beispiele Boyer-Moore
• Beispiel 1:
er sprach...
aber
– als erstes wird s mit r verglichen ⇒ Mismatch
Letzte Änderung: 29.06.2017 13:51
5
Algorithmen und Datenstrukturen II: Suchen in Texten
Prof. Dr. Oliver Braun
– da s im gesamten Muster nicht vorkommt, kann das Muster gleich um die
Musterlänge verschoben werden
• Beispiel 2:
abrakadabra...
aber
– Vergleich a mit r � Mismatch
– da a im Muster vorkommt, kann man es nur so weit verschieben, bis erstmals
das Text- und das Musterzeichen untereinander stehen
Berechnung der Verschiebung bei einem Bad-Character
• für die Weite der Sprünge wird, nur abhängig vom Muster und vom Alphabet, aber
nicht vom Text, eine delta-1-Tabelle erstellt
• delta − 1-Funktion berechnet für jedes c ∈ Σ die Entfernung c vom letzten Zeichen
{
delta − 1(c) =
M,
M-j,
falls c in b1 ...bM nicht vorkommt
falls c = bj und c ̸= bk mit j < k ≤ M
• das Vorgehen heisst auch Vorkommens-Heuristik bzw. Bad-Character-Shift
Verschiebung des Textzeigers
• eigentlich wollen wir nicht das Muster verschieben, sondern den Textzeiger
möglichst weit nach rechts
• Textzeiger soll mindestens über die Position hinaus geschoben werden auf die er
gerade zeigt
• kann aus delta − 1-Wert berechnet werden
• sei im Folgenden
– c das den Mismatch verursachende Zeichen und
– i und j die aktuellen Positionen im Text bzw. im Muster
• bei einem Mismatch an Position j kann der Textzeiger mindestens so verschoben
werden, dass
• 2 Fälle beim Mismatch
– c kommt rechts vom Mismatch im Muster bereits vor
– c kommt nicht rechts vom Mismatch vor
Letzte Änderung: 29.06.2017 13:51
6
Algorithmen und Datenstrukturen II: Suchen in Texten
Prof. Dr. Oliver Braun
Fall 1: M − j + 1 > delta − 1(c)
• c kommt rechts vom Mismatch im Muster bereits vor
• wir wissen außerdem, dass die Zeichen im Muster rechts von c ungleich c sind
• also können wir den Textzeiger um den Abstand von c vom letzten Zeichen weiter
verschieben
• d.h. i = i + M − j + delta − 1(c) und j = M
Quelle: Ottmann & Widmayer, Algorithmen und Datenstrukturen
Beispiel für Fall 1
TODO: Beispiel passt nicht!!
i
... Datenstrukturen ...
Tinktur
j j'
• M −j+1=7−3+1=5
• delta − 1(u) = M − j ′ = 7 − 6 = 1
• also i = i + 7 − 3 + 1 = i + 5 und j = M
i
... Datenstrukturen ...
Tinktur
j
Letzte Änderung: 29.06.2017 13:51
7
Algorithmen und Datenstrukturen II: Suchen in Texten
Prof. Dr. Oliver Braun
Fall 2: M − j + 1 ≤ delta − 1(c)
• c kommt nicht rechts vom Mismatch vor (vielleicht sogar nicht im Muster)
• setze i = i + delta − 1(c) und j = M
Quelle: Ottmann & Widmayer, Algorithmen und Datenstrukturen
Beispiel für Fall 2
i
... Wasserstelle ...
Tankstelle
j
• M − j + 1 = 10 − 4 + 1 = 7
• delta − 1(r) = M = 10
• also i = i + 10 und j = M
i
... Wasserstelle ...
Tankstelle
j
Im schlimmsten Fall naiv
• im schlechtesten Fall nicht besser als das naive Verfahren
– Beispiel: Text besteht nur aus Nullen, Muster 10...0
Letzte Änderung: 29.06.2017 13:51
8
Algorithmen und Datenstrukturen II: Suchen in Texten
Prof. Dr. Oliver Braun
i
...0000000000000000000000000000000...
1000000000
j
* M − j + 1 = 10 − 1 + 1, delta − 1(0) = M − M = 0
⇒ i = i + 10
i
...0000000000000000000000000000000...
1000000000
j
• Verbesserung durch zweite Heuristik: Match-Heuristik
Berechnung der Verschiebung bei einem Good-Suffix
• ähnlich Knuth-Morris-Pratt
• Beispiel:
orange ananas banana
banana
• Annahme: die letzten m Zeichen stimmen überein und an Position j von rechts ist
erster Mismatch
• nennen wir die letzten m Zeichen das Submuster
• dann suchen wir von rechts her nach einem weiteren Vorkommen des Submusters
im Muster
• haben wir so ein Vorkommen gefunden, können wir das Muster so weit nach rechts
verschieben, dass das weitere Vorkommen dem entsprechenden Text gegenüber
steht
– im Beispiel können wir um 2 Positionen nach rechts schieben
orange ananas banana
banana
Formalisierung
• sei wrw(j) die Position an der das von rechts her nächste Vorkommen des Submusters beginnt
– j ist die Position des Mismatches
– das Submuster also bj+1 ...bM
Letzte Änderung: 29.06.2017 13:51
9
Algorithmen und Datenstrukturen II: Suchen in Texten
Prof. Dr. Oliver Braun
– Annahme: das dem weiteren Vorkommen vorangehende Zeichen ist verschieden von dem das am Mismatch beteiligt war
• die Funktion delta − 2 gibt an um welche Distanz der Zeiger i im Text bewegt
werden kann:
delta − 2(j) = M + 1 − wrw(j)
Beispiel
i
orange ananas banana
banana
j
• j = 3, wrw(3) = 2 und delta − 2(3) = 6 + 1 − 2 = 5
i
orange ananas banana
banana
j
Berechnung der delta − 2-Tabelle für banana
j
Suffix
5
4
3
2
1
a
na
ana
nana
anana
vorangehend weiteres Vorkommen wrw(j)
n
a
n
a
b
banana
**banana
banana
****banana
*****banana
2
-1
2
-3
-4
delta − 2(j)
5
8
5
10
11
• Anfügen von don’t care-Symbolen rechts, wenn kein Vorkommen im Muster
Position j: -4 -3 -2 -1
Muster: ... * * * *
Submuster:
n a n
0 1 2 3 4 5 6
* b a n a n a
a
Das Verfahren von Boyer-Moore
• Verknüpfung der beiden Heuristiken
Letzte Änderung: 29.06.2017 13:51
10
Algorithmen und Datenstrukturen II: Suchen in Texten
Prof. Dr. Oliver Braun
• i wird um max{delta − 1(ai ) + 1, delta − 2(j)} verschoben
• j wird M gesetzt
• Hoorspool hat gezeigt, dass die delta − 2-Tabelle in der Praxis kaum zur Schnelligkeit beiträgt
• in der Praxis kommen oft kurze Muster vor, bei denen gar keine mehrfach auftretenden Submuster enthalten sind
• man kann erwarten, dass das Verfahren für genügend kurze Muster und hinreichend
große Alphabete etwas O(N/M ) Schritte ausführt und fast immer um die gesamte
Musterlänge nach rechts verschoben werden kann
Signaturen
• weiteres Verfahren zur Mustersuche in einem Text
• Muster der Länge M , Text der Länge N
• von dem Muster wird ein Hashwert berechnet
• von allen Teilstrings des Textes der Länge N wird auch der Hashwert berechnet
• nur wenn der Hashwert gleich ist, kann ein Vorkommen gefunden worden sein
Beispiel für Signaturen: Verfahren von Karp und Rabin
• Muster über einem Alphabet der Größe d wird als d-adische Zahl interpretiert
• als Hashfunktion dient dann h(k) = k mod p für eine geeignet gewählte, große
Primzahl
• man kann zeigen, dass das Verfahren mit hoher Wahrscheinlichkeit nur O(M + N )
Schritte benötigt
Suchen in statischen Texten
Aufbereitung von Texten — Suffix-Bäume
• wenn häufig der selbe Text σ nach vielen verschiedenen Mustern durchsucht wird,
kann es sich lohnen für σ einen Suchindex aufzubauen
• ein Suffix-Baum ist ein in linearer Zeit konstruierbare Baum, der linearen Platz
benötigt und folgendes effizient ausführt:
– Teilwortsuche in Zeit O(|α|) mit Teilword α, d.h. unabhängig von der
Textlänge!
Letzte Änderung: 29.06.2017 13:51
11
Algorithmen und Datenstrukturen II: Suchen in Texten
Prof. Dr. Oliver Braun
– Präfixsuche: findet alle Stellen in σ an denen Worte mit dem Präfix α
vorkommen
– Bereichs-Suche: findet alle Stellen in σ, die Worte enthalten, die lexikographisch zwischen zwei Grenzen fallen
Beispiel: der Bereich [abc, acc] enthält abrakadarba, acacia, aber nicht abacus
• ein Suffix-Baum unterstützt auch Anfragen an σ selbst, z.B.
Was ist das längste wiederholt auftretende Teilwort von σ, das an mindestens 2
Stellen auftritt?
Einschub: Tries
• Tries (gesprochen wie das englische Wort try) sind Suchbäume und repräsentieren
eine Menge M von Schlüsseln
• Schlüssel sind Zeichenketten über einem endlichen Alphabet Σ
• jede Kante eines Tries T ist mit einem Zeichen aus Σ beschriftet
• benachbarte Kanten müssen mit verschiedenen Zeichen beschriftet sein
• maximaler Grad eines Knoten ist damit |Σ|
• einem einfachen Weg von der Wurzel zu einem Knoten v wird eine Zeichenkette
als Konkatenation der Beschriftungen zugeordnet
• damit repräsentiert jeder Knoten eine eindeutige Zeichenkette
• um zu testen, ob ein Wort α = a1 a2 ...an in M enthalten ist, stellt man fest, ob es
einen Weg von der Wurzel zu einem Blatt gibt, dessen Beschriftung gleich α ist
Suffix-Tries
• Suffix-Tries (auch Position-Trees) sind Tries die alle Suffixe einer Zeichenkette σ
repräsentieren
• Beispiel für σ = ababc
Letzte Änderung: 29.06.2017 13:51
12
Algorithmen und Datenstrukturen II: Suchen in Texten
Prof. Dr. Oliver Braun
Quelle: Ottmann & Widmayer, Algorithmen und Datenstrukturen
Suffix-Bäume
• Wege die nur aus unären Knoten bestehen, werden zu einer Kante zusammengezogen, Beispiel: Suffix-Trie zu σ = ababc
• damit erhält man einen Suffix-Baum (=kontrahierter Suffix-Trie)
• Beispiel für σ = ababc
Quelle: Ottmann & Widmayer, Algorithmen und Datenstrukturen
Letzte Änderung: 29.06.2017 13:51
13
Algorithmen und Datenstrukturen II: Suchen in Texten
Prof. Dr. Oliver Braun
Konstruktion von Suffix-Bäumen
• zunächst naiver Algorithmus
• das Verfahren setzt voraus, dass kein Suffix Prafix eines anderen Suffix ist
• d.h. jedem Suffix entspricht eindeutig ein Blatt
• dies ist automatisch gewährleistet, wenn das letzte Zeichen von σ nirgends sonst
in σ auftritt
• ggfs. wird ein neues Endezeichen $ ergänzt
Naiver Algorithmus
• Voraussetzung: Das letzte Zeichen von σ tritt nirgends sonst in σ auf
• sei n = |σ|
• damit der zu σ konstruierende Suffix-Baum T eine lineare Größe in n hat, fordert
man für T :
– jede Kante in T repräsentiert ein nicht-leeres Teilwort von σ
– die Teilworte, die benachbarten Kanten zugeordnet sind, beginnen mit verschiedenen Buchstaben
– jeder innere Knoten (außer der Wurzel) hat wenigstens zwei Nachfolger
– jedes Blatt repräsentiert ein nicht-leeres Suffix von σ
• damit Anzahl Blätter gleich n und Anzahl der inneren Knoten höchstens gleich
n−1
• Speicherbedarf also O(n)
Begriffe zur Beschreibung des naiven Verfahrens
• eine zusammenhängende Folge, bei der Wurzel beginnender Kanten, heisst partieller Weg
• endet ein partieller Weg bei einem Blatt, heisst er Weg
• der Knoten am Ende des mit α bezeichneten Weges heisst Ort einer Zeichenkette
α (falls er existiert)
• jede Zeichenkette, die α als Präfix hat, heisst Erweiterung von α
• der Ort der kürzesten Zeichenkette, die α als Präfix hat und deren Ort definiert
ist, heisst erweiterter Ort der Zeichenkette α
Letzte Änderung: 29.06.2017 13:51
14
Algorithmen und Datenstrukturen II: Suchen in Texten
Prof. Dr. Oliver Braun
• der Ort des längsten Präfix von α, dessen Ort definiert ist, heisst kontrahierter
Ort der Zeichenkette α
• mit sufi bezeichnen wir das an der Position i beginnende Suffix von σ, also suf1 =
σ und sufn = $
• mit headi bezeichnen wir das längste Präfix von sufi , das auch Präfix für ein sufj
für ein j < i ist
Naives Verfahren zur Konstruktion des Suffix-Baumes
• wir beginnen mit dem leeren Baum T0
• Ti+1 entsteht aus Ti durch Einfügen des Suffixes sufi+1
• in Ti haben alle Suffixe sufj , j < i bereits einen Ort
• headi ist das längste Präfix von sufi , dessen erweiterter Ort in Ti−1 existiert
• taili = sufi − headi , d.h. sufi = headi taili
• taili ̸= ϵ da letztes Zeichen nirgends sonst in σ auftreten darf
Beispiel
Quelle: Ottmann & Widmayer, Algorithmen und Datenstrukturen
Letzte Änderung: 29.06.2017 13:51
15
Algorithmen und Datenstrukturen II: Suchen in Texten
Prof. Dr. Oliver Braun
Naives Verfahren zur Konstruktion des Suffix-Baumes …
• Ti+1 kann aus Ti wie folgt konstruiert werden (headi+1 ̸= ϵ)
– bestimme den erweiterten Ort von headi+1 in Ti
– teile die letzte zu diesem Ort führende Kante in zwei neue auf (durch Einfügen
eines neuen Knotens)
– schaffe ein neues Blatt als Ort für sufi+1 = headi+1 taili+1
Beispiel
Quelle: Ottmann & Widmayer, Algorithmen und Datenstrukturen
Quelle: Ottmann & Widmayer, Algorithmen und Datenstrukturen
Letzte Änderung: 29.06.2017 13:51
16
Algorithmen und Datenstrukturen II: Suchen in Texten
Prof. Dr. Oliver Braun
Effiziente Implementierung durch kompakte Repräsentation
Quelle: Ottmann & Widmayer, Algorithmen und Datenstrukturen
Letzte Änderung: 29.06.2017 13:51
17
Herunterladen