ws03/041 suche in texten: suffix-bäume prof. dr. s. albers prof. dr. th. ottmann
TRANSCRIPT
![Page 1: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/1.jpg)
WS03/04 1
Suche in Texten:Suffix-Bäume
Prof. Dr. S. Albers
Prof. Dr. Th. Ottmann
![Page 2: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/2.jpg)
2 WS03/04
Suche in Texten
Verschiedene Szenarios:
Dynamische Texte
• Texteditoren• Symbolmanipulatoren
Statische Texte
• Literaturdatenbanken• Bibliothekssysteme• Gen-Datenbanken• WWW-Verzeichnisse
![Page 3: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/3.jpg)
3 WS03/04
Eigenschaft von Suffix-Bäume
Suchindex
zu einem Text für Suche nach verschiedenen Mustern
Eigenschaften:
1. Teilwortsuche in Zeit O(| |).
2. Anfragen an selbst, z.B.:
Längstes Teilwort von , das an mind. 2 Stellen auftritt.
3. Präfix-Suche: Alle Stellen in mit Präfix .
![Page 4: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/4.jpg)
4 WS03/04
Eigenschaft von Suffix-Bäume
4. Bereichs-Suche: Alle Stellen in im Intervall [, ] mit lex , z.B.
abrakadabra, acacia [abc, acc],
abacus [abc, acc] .
5. Lineare Komplexität:
Speicherplatzbedarf und Konstruktionszeit O(| |)
![Page 5: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/5.jpg)
5 WS03/04
Tries
Trie: Baum zur Repräsentation von Schlüsseln.
Alphabet , Menge S von Schlüsseln, S *
Schlüssel Zeichenkette aus *
Kante eines Tries T: Beschriftung mit einzelnen Zeichen aus
benachbarte Kanten: verschiedene Zeichen
![Page 6: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/6.jpg)
6 WS03/04
Tries
a
a
a
c
b
b
c
b
b c
c
c
Beispiel:
![Page 7: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/7.jpg)
7 WS03/04
Tries
Blatt repräsentiert Schlüssel:
Entspricht Beschriftung der Kanten des Weges
von der Wurzel zu Blatt
! Schlüssel werden nicht in Knoten gespeichert !
![Page 8: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/8.jpg)
8 WS03/04
Suffix-Tries
Trie für alle Suffixe eines Wortes
Beispiel: = ababc
Suffixe: ababc = suf1
babc = suf2
abc = suf3
bc = suf4
c = suf5
a
a
a
c
b
b
c
b
b c
c
c
![Page 9: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/9.jpg)
9 WS03/04
Suffix-Tries
Innere Knoten eines Suffix-Tries = Teilwort von .
Jedes echte Teilwort von ist als innerer Knoten repräsentiert.
Sei = anbn : n2 + 2n + 1 verschied. Teilwörter = innere Knoten
Speicherplatzbedarf O(n2).
![Page 10: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/10.jpg)
10 WS03/04
Suffix-Tries
Ein Suffix-Trie T erfüllt bereits einige der geforderten Eigenschaften:
a
a
a
c
b
b
c
b
b c
c
c
1. Zeichenkettensuche nach : Folge dem Weg mit Kantenbeschriftung in T in Zeit O(| |). Blätter des Teilbaumes Vorkommen von
2. Längstes, doppelt auftretendes Wort: Innerer Knoten mit größter Tiefe, der mind. zwei Söhne hat.
3. Präfix-Suche: alle Vorkommen von Zeichenketten mit Präfix finden sich in dem Teilbaum unterhalb des inneren Knotens von in T.
![Page 11: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/11.jpg)
11 WS03/04
Suffix-Bäume
Suffix-Baum entsteht durch Kontraktion von unären Knoten aus
Suffix-Trie:
a
a
a
c
b
b
c
b
b c
c
c
ab
abc abc
b
c c
c
Suffix-Baum = kontraktierter Suffix-Trie
![Page 12: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/12.jpg)
12 WS03/04
Interne Repräsentation von Suffix-Bäumen
Sohn/Bruder-Repräsentation
Teilwort: Zahlenpaar (i,j)
ab
abc abc
b
c c
c
T
Beispiel: = ababc
![Page 13: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/13.jpg)
13 WS03/04
Interne Repräsentation von Suffix-Bäumen
()
(1,2) (2,2) (5,$)
(3,$) (5,$) (3,$) (5,$)
ab
abc abc
b c
c c
Beispiel = ababc
Knoten v = (v.w, v.o, v.sn, v.br)
Weitere Zeiger (Suffix-Zeiger) kommen später hinzu
![Page 14: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/14.jpg)
14 WS03/04
Eigenschaften von Suffix-Bäumen
(S1) Kein Suffix ist Präfix eines anderen Suffixes;
gilt, falls (letztes Zeichen von ) = $
Suche:
(T1) Kante nichtleeres Teilwort von .
(T2) Benachbarte Kanten: zugeordnete Teilworte beginnen
mit verschiedenen Zeichen.
![Page 15: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/15.jpg)
15 WS03/04
Eigenschaften von Suffix-Bäumen
Größe
(T3) Innerer Knoten ( Wurzel): mind. zwei Söhne.
(T4) Blatt (nicht-leeres ) Suffix von .
Sei n = | | 1
) ( atzSpeicherpl
Knoten inneren der Anzahl
:Blätter der Anzahl
n
n
nT
T
1
)3(
)4(
![Page 16: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/16.jpg)
16 WS03/04
Konstruktion von Suffix-Bäumen
Definition:
partieller Weg: Weg von der Wurzel zu einem Knoten von T
Weg: Ein partieller Weg, der bei einem Blatt endet.
Ort einer Zeichenkette : Knoten am Ende des mit
beschrifteten partiellen Weges (falls er existiert).
ab
abc abc
b
c c
c
T
![Page 17: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/17.jpg)
17 WS03/04
Konstruktion von Suffix-Bäumen
Erweiterung einer Zeichenkette : Zeichenkette mit Präfix
erweiterter Ort einer Zeichenkette : Ort der kürzesten Erweiterung
von , deren Ort definiert ist.
kontraktierter Ort einer Zeichenkette : Ort des längsten Präfixes von
, dessen Ort definiert ist.
ab
abc abc
b
c c
c
T
![Page 18: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/18.jpg)
18 WS03/04
Konstruktion von Suffix-Bäumen
Definitionen:
sufi: an Position i beginnendes Suffix von , also z.B.
suf1 = , sufn = $.
headi : längstes Präfix von sufi , das auch Präfix von sufj für
ein j < i ist.
Beispiel: = bbabaabc = baa (hat keinen Ort)
suf4 = baabc
head4 = ba
![Page 19: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/19.jpg)
19 WS03/04
Konstruktion von Suffix-Bäumen
a
abc
abc
c
b
aabc
b
baabc
a cbabaabc
c
= bbabaabc
![Page 20: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/20.jpg)
20 WS03/04
Naive Suffix-Baum-Konstruktion
Beginne mit dem leeren Baum T0
Der Baum Ti+1 entsteht aus Ti durch Einfügen des Suffixes sufi+1.
Algorithmus Suffix-Baum
Input: Eine Zeichenkette Output: Der Suffix-Baum T von
1 n := | |; T0 := ;
2 for i := 0 to n – 1do
3 füge sufi+1 in Ti ein, dies sei Ti+1 ;
4 end for
![Page 21: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/21.jpg)
21 WS03/04
Naive Suffix-Baum-Konstruktion
In Ti haben alle Suffixe sufj , j < i bereits einen Ort.
headi = längstes Präfix von sufi, dessen erweiterter Ort in Ti-1 existiert.
Definition:
taili := sufi – headi, d.h. also sufi = headitaili.
taili .
)1(S
![Page 22: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/22.jpg)
22 WS03/04
Naive Suffix-Baum-Konstruktion
Beispiel: = ababc
suf3 = abc head3 = ab tail3 = c
T0 =
T1 =
T2 =
ababc
ababc babc
![Page 23: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/23.jpg)
23 WS03/04
Naive Suffix-Baum-Konstruktion
Ti+1 kann aus Ti wie folgt konstruiert werden:
1. Man bestimmt den erweiterten Ort von headi+1 in Ti und teilt die
letzte zu diesem Ort führende Kante in zwei neue Kanten auf durch Einfügen eines neuen Knotens.
2. Man schaffe ein neues Blatt als Ort für sufi+1
x = erweiterter Ort von headi+1
x
v
headi+1
taili+1
![Page 24: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/24.jpg)
24 WS03/04
Naive Suffix-Baum-Konstruktion
Beispiel: = ababc
babc
c
babcababc
abc
ab
T3
T2
head3 = abtail3 = c
![Page 25: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/25.jpg)
25 WS03/04
Naive Suffix-Baum-Konstruktion
Algorithmus Suffix-Einfügen
Input: Der Baum Ti und der Suffix sufi+1
Output: Der Baum Ti+1
1 v := Wurzel von Ti
2 j := i
3 repeat
4 finde Sohn w von v mit w.u = j+1
5 k := w.u – 1;
6 while k < w.o and k+1 = j+1 do
7 k := k +1; j := j + 1
end while
![Page 26: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/26.jpg)
26 WS03/04
Naive Suffix-Baum-Konstruktion
8 if k = w.o then v := w
9 until k <w.o or w = nil
10 /* v ist konktraktierter Ort von headi+1 */
11 füge den Ort von headi+1 und taili+1 in Ti unter v ein
Laufzeit für Suffix-Einfügen: O( )
Gesamtlaufzeit für naive Suffix-Baum-Konstruktion: O( )
![Page 27: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/27.jpg)
27 WS03/04
Der Algorithmus M
(Mc Creight, 1976)
Falls erweiterter Ort von headi+1 in Ti gefunden: Erzeugen eines neuen
Knotens und Aufspalten einer Kante O(1) Zeit.+
Idee: Erweiterter Ort von headi+1 wird in konstanter amortisierter Zeit in Ti bestimmt. (Zusatzinformation erforderlich!)
![Page 28: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/28.jpg)
28 WS03/04
Analyse des Algorithmus M
Theorem 1
Algorithmus M liefert in Zeit O(| |) einen Suffix-Baum für
mit | | Blättern und höchstens | | - 1 inneren Knoten.
![Page 29: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/29.jpg)
29 WS03/04
Suffix-Baum Anwendung
Verwendung von Suffix-Baum T:
1 Suche nach Zeichenkette : Folge dem Weg mit Kantenbeschriftung in T in Zeit O(| |).Blätter des Teilbaumes Vorkommen von
2 Suche längstes, doppelt auftretendes Wort: Finde Ort eines Wortes mit größter gewichteter Tiefe, der innerer Knoten ist.
3 Suche nach Präfix: Alle Vorkommen von Zeichenkettenmit Präfix finden sich in dem Teilbaum unterhalb des „Ortes“ von in T.
![Page 30: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/30.jpg)
30 WS03/04
Suffix-Baum Anwendung
4 Bereichssuche nach [, ] :
Bereichsgrenzen
![Page 31: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/31.jpg)
31 WS03/04
Suffix-Baum Beispiel
T0 = T1 = bbabaabc
suf1 = bbabaabc suf2 = babaabc head2 = b
![Page 32: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/32.jpg)
32 WS03/04
Suffix-Baum Beispiel
T2 = b
abaabc babaabbc
T3 =
abaabc b
abaabc babaabbc
suf3 = abaabc suf4 = baabchead3 = head4 = ba
![Page 33: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/33.jpg)
33 WS03/04
Suffix-Baum Beispiel
T4 = abaabc b
babaabbca
abcbaabc Ort von head4
suf5 = aabchead5 = a
![Page 34: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/34.jpg)
34 WS03/04
Suffix-Baum Beispiel
babaabbca
abcbaabc
Ort von head5
abc
a bT5 =
suf6 = abc head6 = ab
baabc
![Page 35: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/35.jpg)
35 WS03/04
Suffix-Baum Beispiel
babaabbca
abcbaabc
Ort von head6
abc
a bT6 =
b
c aabc
suf7 = bc head7 = b
![Page 36: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/36.jpg)
36 WS03/04
Suffix-Baum Beispiel
babaabbca
abcbaabc
abc
a bT7 =
b
c aabc
c
suf8 = c
![Page 37: WS03/041 Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118baceb/html5/thumbnails/37.jpg)
37 WS03/04
Suffix-Baum Beispiel
babaabbca
abcbaabc
abc
a bT8 =
b
c aabc
c
c