Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

WS 2006-07 Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix - Bäume.

Ähnliche Präsentationen


Präsentation zum Thema: "WS 2006-07 Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix - Bäume."—  Präsentation transkript:

1 WS 2006-07 Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix - Bäume

2 2WS 2006-07 Suche in Texten Verschiedene Szenarien: Statische Texte Literaturdatenbanken Bibliothekssysteme Gen-Datenbanken WWW-Verzeichnisse Dynamische Texte Texteditoren Symbolmanipulatoren

3 3WS 2006-07 Eigenschaft von Suffix-Bäumen 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.

4 4WS 2006-07 Eigenschaft von Suffix-Bäumen 4. Bereichssuche: Alle Stellen in im Intervall [, ] mit lex, z.B. abrakadabra, acacia [abc, acc], abacus [abc, acc]. 5. Lineare Komplexität: Speicherplatzbedarf und Konstruktionszeit O(| |)

5 5WS 2006-07 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

6 6WS 2006-07 Tries a a a c b b c b b c c c Beispiel:

7 7WS 2006-07 Tries Blatt repräsentiert Schlüssel: Entspricht Beschriftung der Kanten des Weges von der Wurzel zum Blatt. ! Schlüssel werden nicht in Knoten gespeichert !

8 8WS 2006-07 Suffix-Tries Trie für alle Suffixe eines Wortes Beispiel: = ababc Suffixe: ababc = suf 1 babc = suf 2 abc = suf 3 bc = suf 4 c = suf 5 a a a c b b c b b c c c

9 9WS 2006-07 Suffix-Tries Innere Knoten eines Suffix-Tries = Teilwort von. Jedes echte Teilwort von ist als innerer Knoten repräsentiert. Sei = a n b n : n 2 + 2n + 1 verschied. Teilwörter = innere Knoten Speicherplatzbedarf O(n 2 ).

10 10WS 2006-07 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.

11 11WS 2006-07 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 b c c c Suffix-Baum = kontrahierter Suffix-Trie

12 12WS 2006-07 Interne Repräsentation von Suffix-Bäumen Sohn/Bruder-Repräsentation Teilwort: Zahlenpaar (i,j) ab abc b c c c T Beispiel: = ababc

13 13WS 2006-07 Interne Repräsentation von Suffix-Bäumen ( ) (1,2)(2,2)(5,$) (3,$)(5,$)(3,$)(5,$) ab abc b c c c Beispiel = ababc Knoten v = (v.u, v.o, v.sn, v.br) Weitere Zeiger (Suffix-Zeiger) kommen später hinzu.

14 14WS 2006-07 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.

15 15WS 2006-07 Eigenschaften von Suffix-Bäumen Größe (T3)Innerer Knoten ( Wurzel): mind. zwei Söhne. (T4)Blatt (nicht-leeres ) Suffix von. Sei n = | | 1

16 16WS 2006-07 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 b c c c T

17 17WS 2006-07 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. kontrahierter Ort einer Zeichenkette : Ort des längsten Präfixes von, dessen Ort definiert ist. ab abc b c c c T

18 18WS 2006-07 Konstruktion von Suffix-Bäumen Definitionen: suf i : an Position i beginnendes Suffix von, also z.B. suf 1 =, suf n = $. head i : längstes Präfix von suf i, das auch Präfix von suf j für ein j < i ist. Beispiel: = bbabaabc = baa (hat keinen Ort) suf 4 = baabc head 4 = ba

19 19WS 2006-07 Konstruktion von Suffix-Bäumen a abc c b aabc b baabc ac babaabc c = bbabaabc

20 20WS 2006-07 Naive Suffix-Baum-Konstruktion Beginne mit dem leeren Baum T 0 Der Baum T i+1 entsteht aus T i durch Einfügen des Suffixes suf i+1. Algorithmus Suffix-Baum Input: Eine Zeichenkette Output: Der Suffix-Baum T von 1 n := | |; T 0 := ; 2 for i := 0 to n – 1do 3füge suf i+1 in T i ein, dies sei T i+1 ; 4 end for

21 21WS 2006-07 Naive Suffix-Baum-Konstruktion In T i haben alle Suffixe suf j, j i bereits einen Ort. head i+1 = längstes Präfix von suf i+1, dessen erweiterter Ort in T i existiert. Definition: tail i+1 := suf i+1 – head i+1, d.h. also suf i+1 = head i+1 tail i +1. tail i+1.

22 22WS 2006-07 Naive Suffix-Baum-Konstruktion Beispiel: = ababc suf 3 = abc head 3 = ab tail 3 = c T 0 = T 1 = T 2 = ababc babc

23 23WS 2006-07 Naive Suffix-Baum-Konstruktion T i+1 kann aus T i wie folgt konstruiert werden: 1.Man bestimmt den erweiterten Ort von head i+1 in T i 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 suf i+1 x = erweiterter Ort von head i+1 x v head i+1 tail i+1

24 24WS 2006-07 Naive Suffix-Baum-Konstruktion Beispiel: = ababc babc c ababc abc ab T3T3 T2T2 head 3 = ab tail 3 = c

25 25WS 2006-07 Naive Suffix-Baum-Konstruktion Algorithmus Suffix-Einfügen Input: Der Baum T i und der Suffix suf i+1 Output: Der Baum T i+1 1v := Wurzel von T i 2j := i 3repeat 4finde Sohn w von v mit w.u = j+1 5k := w.u – 1; 6while k < w.o and k+1 = j+1 do 7 k := k +1; j := j + 1 end while

26 26WS 2006-07 Naive Suffix-Baum-Konstruktion 8if k = w.o then v := w 9 until k <w.o or w = nil 10 /* v ist konktrahierter Ort von head i+1 */ 11 füge den Ort von head i+1 und tail i+1 in T i unter v ein Laufzeit für Suffix-Einfügen: O( ) Gesamtlaufzeit für naive Suffix-Baum-Konstruktion: O( )

27 27WS 2006-07 Der Algorithmus M (Mc Creight, 1976) Idee: Erweiterter Ort von head i+1 wird in konstanter amortisierter Zeit in T i bestimmt. (Zusatzinformation erforderlich!) Falls erweiterter Ort von head i+1 in T i gefunden: Erzeugen eines neuen Knotens und Aufspalten einer Kante O(1) Zeit. Theorem 1 Algorithmus M liefert in Zeit O(| |) einen Suffix-Baum für mit | | Blättern und höchstens | | - 1 inneren Knoten.

28 28WS 2006-07 Suffix-Links Definition: Sei x? ein beliebiger String, wobei x ein einzelnes Zeichen darstellt und ? einen (möglicherweise leeren) Teilstring. Für jeden inneren Knoten v mit Kennzeichnung x? gilt: Falls es einen weiteren Knoten s(v) mit Pfad-Markierung ? gibt, so gibt es einen Zeiger von v auf s(v), der als Suffix-Link bezeichnet wird. ? ? x s(v) v

29 29WS 2006-07 Suffix-Links Die Idee ist, Nutzen aus den Suffix-Links zu ziehen, um die Erweiterungs- punkte effizienter, d.h. in amortisiert konstanter Zeit, zu finden, ohne bei jeder expliziten Erweiterung an der Wurzel beginnen zu müssen. ? ? x s(v) v

30 30WS 2006-07 Suffix-Baum Beispiel T 0 = T 1 = bbabaabc suf 1 = bbabaabcsuf 2 = babaabc head 2 = b

31 31WS 2006-07 Suffix-Baum Beispiel T 2 = b abaabc babaabc T 3 = abaabc b abaabc babaabc suf 3 = abaabc suf 4 = baabc head 3 = head 4 = ba

32 32WS 2006-07 Suffix-Baum Beispiel T4 =T4 = abaabc b babaabc a abc baabcOrt von head 4 suf 5 = aabc head 5 = a

33 33WS 2006-07 Suffix-Baum Beispiel babaabc a abc baabc Ort von head 5 abc a b T 5 = suf 6 = abc head 6 = ab baabc

34 34WS 2006-07 Suffix-Baum Beispiel babaabc a abc baabc Ort von head 6 abc a b T 6 = b c aabc suf 7 = bc head 7 = b

35 35WS 2006-07 Suffix-Baum Beispiel babaabc a abc baabc abc a b T7 =T7 = b c aabc c suf 8 = c

36 36WS 2006-07 Suffix-Baum Beispiel babaabc a abc baabc abc a b T 8 = b c aabc c c

37 37WS 2006-07 Suffix-Baum Anwendung Verwendung von Suffix-Baum T: 1Suche nach Zeichenkette : Folge dem Weg mit Kantenbeschriftung in T in Zeit O(| |). Blätter des Teilbaumes Vorkommen von 2Suche längstes, doppelt auftretendes Wort: Finde Ort eines Wortes mit größter gewichteter Tiefe, der innerer Knoten ist. 3Suche nach Präfix: Alle Vorkommen von Zeichenketten mit Präfix finden sich in dem Teilbaum unterhalb des Ortes von in T.

38 38WS 2006-07 Suffix-Baum Anwendung 4Bereichssuche nach [, ] : Bereichsgrenzen


Herunterladen ppt "WS 2006-07 Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix - Bäume."

Ähnliche Präsentationen


Google-Anzeigen