Suhe in Texten: Suffix-Bäume Prof. Dr. S. Alers Prof. Dr. Th. Ottmnn 1
Suhe in Texten Vershiedene Szenrios: Dynmishe Texte Texteditoren Symolmnipultoren Sttishe Texte Literturdtennken Biliothekssysteme Gen-Dtennken WWW-Verzeihnisse 2
Eigenshft von Suffix-Bäume Suhindex zu einem Text σ für Suhe nh vershiedenen Mustern α Eigenshften: 1. Teilwortsuhe in Zeit O( α ). 2. Anfrgen n σ selst, z.b.: Längstes Teilwort von σ, ds n mind. 2 Stellen uftritt. 3. Präfix-Suhe: Alle Stellen in σ mit Präfix α. 3
Eigenshft von Suffix-Bäume 4. Bereihs-Suhe: Alle Stellen in σ im Intervll [α, β] mit α lex β, z.b. rkdr, i [, ], us [, ]. 5. Linere Komplexität: Speiherpltzedrf und Konstruktionszeit O( σ ) 4
Tries Trie: Bum zur Repräsenttion von Shlüsseln. Alphet Σ, Menge S von Shlüsseln, S Σ* =ˆ Shlüssel Zeihenkette us Σ* Knte eines Tries T: Beshriftung mit einzelnen Zeihen us Σ enhrte Knten: vershiedene Zeihen 5
Tries Beispiel: 6
Tries Bltt repräsentiert Shlüssel: Entspriht Beshriftung der Knten des Weges von der Wurzel zu Bltt! Shlüssel werden niht in Knoten gespeihert! 7
Suffix-Tries Trie für lle Suffixe eines Wortes Beispiel: σ = Suffixe: = suf 1 = suf 2 = suf 3 = suf 4 = suf 5 8
Suffix-Tries Innere Knoten eines Suffix-Tries = Teilwort von σ. Jedes ehte Teilwort von σ ist ls innerer Knoten repräsentiert. Sei σ = n n : n 2 + 2n + 1 vershied. Teilwörter = innere Knoten Speiherpltzedrf O(n 2 ). 9
Suffix-Tries Ein Suffix-Trie T erfüllt ereits einige der geforderten Eigenshften: 1. Zeihenkettensuhe nh α : Folge dem Weg mit Knteneshriftung α in T in Zeit O( α ). Blätter des Teilumes Vorkommen von α 2. Längstes, doppelt uftretendes Wort: Innerer Knoten mit größter Tiefe, der mind. zwei Söhne ht. =ˆ 3. Präfix-Suhe: lle Vorkommen von Zeihenketten mit Präfix α finden sih in dem Teilum unterhl des inneren Knotens von α in T. 10
Suffix-Bäume Suffix-Bum entsteht durh Kontrktion von unären Knoten us Suffix-Trie: Suffix-Bum = kontrktierter Suffix-Trie 11
Interne Repräsenttion von Suffix-Bäumen Sohn/Bruder-Repräsenttion Teilwort: Zhlenpr (i,j) Beispiel: σ = T 12
Interne Repräsenttion von Suffix-Bäumen Beispiel σ = ( ) (1,2) (2,2) (5,$) (3,$) (5,$) (3,$) (5,$) Knoten v = (v.w, v.o, v.sn, v.r) Weitere Zeiger (Suffix-Zeiger) kommen später hinzu 13
Eigenshften von Suffix-Bäumen (S1) Kein Suffix ist Präfix eines nderen Suffixes; gilt, flls (letztes Zeihen von σ ) = $ Σ Suhe: =ˆ (T1) Knte nihtleeres Teilwort von σ. (T2) Benhrte Knten: zugeordnete Teilworte eginnen mit vershiedenen Zeihen. 14
Eigenshften von Suffix-Bäumen Größe (T3) Innerer Knoten ( Wurzel): mind. zwei Söhne. =ˆ (T4) Bltt (niht-leeres ) Suffix von σ. Sei n = σ 1 ( T 4) ( T 3) Anzhl der Anzhl der Blätter : n inneren Knoten n 1 Speiherpltz Ο( n) 15
Konstruktion von Suffix-Bäumen Definition: prtieller Weg: Weg von der Wurzel zu einem Knoten von T Weg: Ein prtieller Weg, der ei einem Bltt endet. Ort einer Zeihenkette α: Knoten m Ende des mit α eshrifteten prtiellen Weges (flls er existiert). T 16
Konstruktion von Suffix-Bäumen Erweiterung einer Zeihenkette α: Zeihenkette mit Präfix α erweiterter Ort einer Zeihenkette α: Ort der kürzesten Erweiterung von α, deren Ort definiert ist. kontrktierter Ort einer Zeihenkette α: Ort des längsten Präfixes von α, dessen Ort definiert ist. T 17
Konstruktion von Suffix-Bäumen Definitionen: suf i : n Position i eginnendes Suffix von σ, lso z.b. suf 1 = σ, suf n = $. hed i : längstes Präfix von suf i, ds uh Präfix von suf j für ein j < i ist. Beispiel: σ = α = (ht keinen Ort) suf 4 = hed 4 = 18
Konstruktion von Suffix-Bäumen σ = 19
Nive Suffix-Bum-Konstruktion Beginne mit dem leeren Bum T 0 Der Bum T i+1 entsteht us T i durh Einfügen des Suffixes suf i+1. Algorithmus Suffix-Bum Input: Eine Zeihenkette σ Output: Der Suffix-Bum T von σ 1 n := σ ; T 0 := ; 2 for i := 0 to n 1do 3 füge suf i+1 in T i ein, dies sei T i+1 ; 4 end for 20
Nive Suffix-Bum-Konstruktion In T i hen lle Suffixe suf j, j < i ereits einen Ort. hed i = längstes Präfix von suf i, dessen erweiterter Ort in T i-1 existiert. Definition: til i := suf i hed i, d.h. lso suf i = hed i til i. (S1) til i ε. 21
Nive Suffix-Bum-Konstruktion Beispiel: σ = suf 3 = hed 3 = til 3 = T 0 = T 1 = T 2 = 22
Nive Suffix-Bum-Konstruktion T i+1 knn us T i wie folgt konstruiert werden: 1. Mn estimmt den erweiterten Ort von hed i+1 in T i und teilt die letzte zu diesem Ort führende Knte in zwei neue Knten uf durh Einfügen eines neuen Knotens. 2. Mn shffe ein neues Bltt ls Ort für suf i+1 hed i+1 v x = erweiterter Ort von hed i+1 x til i+1 23
Nive Suffix-Bum-Konstruktion Beispiel: σ = T 3 T 2 hed 3 til 3 = = 24
Nive Suffix-Bum-Konstruktion Algorithmus Suffix-Einfügen Input: Der Bum T i und der Suffix suf i+1 Output: Der Bum T i+1 1 v := Wurzel von T i 2 j := i 3 repet 4 finde Sohn w von v mit σ w.u = σ j+1 5 k := w.u 1; 6 while k < w.o nd σ k+1 = σ j+1 do 7 k := k +1; j := j + 1 end while 25
Nive Suffix-Bum-Konstruktion 8 if k = w.o then v := w 9 until k <w.o or w = nil 10 /* v ist konktrktierter Ort von hed i+1 */ 11 füge den Ort von hed i+1 und til i+1 in T i unter v ein Lufzeit für Suffix-Einfügen: O( ) Gesmtlufzeit für nive Suffix-Bum-Konstruktion: O( ) 26
Der Algorithmus M (M Creight, 1976) Flls erweiterter Ort von hed i+1 in T i gefunden: Erzeugen eines neuen Knotens und Aufsplten einer Knte O(1) Zeit.+ Idee: Erweiterter Ort von hed i+1 wird in konstnter mortisierter Zeit in T i estimmt. (Zustzinformtion erforderlih!) 27
Anlyse des Algorithmus M Theorem 1 Algorithmus M liefert in Zeit O( σ ) einen Suffix-Bum für σ mit σ Blättern und höhstens σ - 1 inneren Knoten. 28
Suffix-Bum Anwendung Verwendung von Suffix-Bum T: 1 Suhe nh Zeihenkette α: Folge dem Weg mit Knteneshriftung α in T in Zeit O( α ). Blätter des Teilumes =ˆ Vorkommen von α 2 Suhe längstes, doppelt uftretendes Wort: Finde Ort eines Wortes mit größter gewihteter Tiefe, der innerer Knoten ist. 3 Suhe nh Präfix: Alle Vorkommen von Zeihenketten mit Präfix α finden sih in dem Teilum unterhl des Ortes von α in T. 29
Suffix-Bum Anwendung 4 Bereihssuhe nh [α, β] : Bereihsgrenzen 30
Suffix-Bum Beispiel T 0 = T 1 = suf 1 = suf 2 = hed 2 = 31
Suffix-Bum Beispiel T 2 = T 3 = suf 3 = hed 3 = ε suf 4 = hed 4 = 32
Suffix-Bum Beispiel T 4 = Ort von hed 4 suf 5 = hed 5 = 33
Suffix-Bum Beispiel T 5 = Ort von hed 5 suf 6 = hed 6 = 34
Suffix-Bum Beispiel T 6 = Ort von hed 6 suf 7 = hed 7 = 35
Suffix-Bum Beispiel T 7 = suf 8 = 36
Suffix-Bum Beispiel T 8 = 37