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

Slides:



Advertisements
Ähnliche Präsentationen
8. Termin Teil B: Wiederholung Begriffe Baum
Advertisements

Algorithmentheorie 08 – Dynamische Programmierung (1)
Algorithmentheorie 08 – Dynamische Programmierung (4) Editierdistanz Approximative Zeichenkettensuche Sequence Alignment Prof. Dr. Th. Ottmann WS
Randomisierte Algorithmen Präfix Suche und Konsistentes Hashing
Punkt-in-Polygon-Verfahren III (R/R+-Baum)
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann.
Software-Engineering II Eingebettete Systeme, Softwarequalität, Projektmanagement Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt.
Das LCA – Problem in Suffixbäumen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (22 – B-Bäume)
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten KMP, BM.
B-Bäume.
Kapitel 6: Klassifizierung von Sortiertechniken
7. Natürliche Binärbäume
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Marco Barz Seminar über Algorithmen SoSe2007
Algorithmentheorie 04 –Hashing
Konstruktion von Suffix Bäumen
Suche in Texten: Suffix-Bäume
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Dynamische Programmierung (2) Matrixkettenprodukt
Algorithmentheorie 02 – Polynomprodukt und Fast Fourier Transformation
Konstruktion von Suffix Bäumen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 – Sortieren vorsortierter Daten) Prof. Th. Ottmann.
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
Bestimmung des Next-Arrays im KMP-Algorithmus
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (02 – Endliche Automaten) Prof. Dr. Th. Ottmann.
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix –Tree –Konstruktion Ukkonen Algorithmus.
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (3) Konstruktion optimaler Suchbäume Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 - Bäume: Durchlaufreihenfolgen, Analyse nat. Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - Balancierte Bäume, AVL-Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (07 - Skiplisten) Prof. Th. Ottmann.
Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts
Union-Find-Strukturen
Algorithmen und Datenstrukturen
WS03/041 Binomial Queues Prof. Dr. S. Albers Prof.Dr.Th Ottmann.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (17 –Turingmaschinen) Prof. Dr. Th. Ottmann.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Huffmans Kompressionsverfahren
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Bäume-
Wir suchen ‘ mit m = m    ‘ c  ‘ mod 26
Heaps und Priority Queues
Hauptseminar Automaten und Formale Sprachen
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Ralf KüstersDagstuhl 2008/11/30 2 Ralf KüstersDagstuhl 2008/11/30 3.
7.1 Externes Suchen Bisherige Algorithmen: geeignet, wenn alle Daten im Hauptspeicher. Große Datenmengen: oft auf externen Speichermedien, z.B. Festplatte.
Effiziente Algorithmen
Diskrete Mathematik II
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Information und Kommunikation
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Auslegung eines Vorschubantriebes
Suchen In Texten Von Adriano Feola & Marc Draschl.
Graphen und Bäume.
Automaten, formale Sprachen und Berechenbarkeit II SoSe 2004 Prof. W. Brauer Teil 1: Wiederholung (Vor allem Folien von Priv.-Doz. Dr. Kindler vom WS 2001/02.
Christian Schindelhauer Wintersemester 2006/07 2. Vorlesung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung April 2000 AVL-Bäume.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
WS03/041 Dynamische Programmierung (3) Konstruktion optimaler Suchbäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren.
Algorithm Engineering „Suffix-Bäume und Suffix-Arrays“ Stefan Edelkamp.
Binärbäume.
Punkt-in-Landkarte II
 Präsentation transkript:

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

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

3WS 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.

4WS 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(| |)

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

6WS Tries a a a c b b c b b c c c Beispiel:

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

8WS 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

9WS 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 ).

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

11WS 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

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

13WS 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.

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

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

16WS 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

17WS 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

18WS 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

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

20WS 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

21WS 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.

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

23WS 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

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

25WS 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

26WS 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( )

27WS 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.

28WS 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

29WS 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

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

31WS 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

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

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

34WS 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

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

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

37WS 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.

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