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.
Claudio Moraga; Gisbert Dittrich
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
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
Prof.Dr.S. Albers Prof. Dr. Th. Ottmann
Kompressionsverfahren für Texte
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
Prof. Dr. S. Albers Prof. Dr. Th. Ottmann
Konstruktion von Suffix Bäumen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 – Sortieren vorsortierter Daten) Prof. Th. Ottmann.
Prof. Dr. S. Albers 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 (20 - AVL-Bäume: Entfernen, Bruder-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
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix - Bäume.
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
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
Information und Kommunikation
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.
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.
 Präsentation transkript:

Suche in Texten: Suffix-Bäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann WS03/04

Suche in Texten Verschiedene Szenarios: Dynamische Texte Texteditoren Symbolmanipulatoren Statische Texte Literaturdatenbanken Bibliothekssysteme Gen-Datenbanken WWW-Verzeichnisse 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 . 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(| |) 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 WS03/04

Tries Beispiel: a c b 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 ! 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 c b 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). WS03/04

Suffix-Tries Ein Suffix-Trie T erfüllt bereits einige der geforderten Eigenschaften: 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. a c b WS03/04

Suffix-Bäume Suffix-Baum entsteht durch Kontraktion von unären Knoten aus Suffix-Trie: ab abc b c a c b c b a a c b Suffix-Baum = kontraktierter Suffix-Trie b c c WS03/04

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

Interne Repräsentation von Suffix-Bäumen Beispiel  = ababc () ab b c (1,2) (2,2) (5,$) abc abc (3,$) (5,$) (3,$) (5,$) c c Knoten v = (v.w, v.o, v.sn, v.br) Weitere Zeiger (Suffix-Zeiger) kommen später hinzu 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. 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 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 b c T 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 b c T 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 WS03/04

Konstruktion von Suffix-Bäumen  = bbabaabc a b c babaabc b a c abc c aabc abc baabc 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 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  . WS03/04

Naive Suffix-Baum-Konstruktion Beispiel:  = ababc suf3 = abc head3 = ab tail3 = c T0 = T1 = T2 = ababc ababc babc 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 headi+1 v taili+1 x = erweiterter Ort von headi+1 x WS03/04

Naive Suffix-Baum-Konstruktion Beispiel:  = ababc T3 T2 ab ababc babc babc abc c head3 = ab tail3 = c 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 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( ) 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!) 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. 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 Zeichenketten mit Präfix  finden sich in dem Teilbaum unterhalb des „Ortes“ von  in T. WS03/04

Suffix-Baum Anwendung 4 Bereichssuche nach [, ] : Bereichsgrenzen WS03/04

Suffix-Baum Beispiel T0 = T1 = bbabaabc suf1 = bbabaabc suf2 = babaabc head2 = b WS03/04

Suffix-Baum Beispiel T2 = T3 = b abaabc b abaabc babaabbc suf3 = abaabc suf4 = baabc head3 =  head4 = ba WS03/04

Suffix-Baum Beispiel T4 = abaabc b babaabbc a abc baabc Ort von head4 suf5 = aabc head5 = a WS03/04

Suffix-Baum Beispiel T5 = a b babaabbc abc a baabc abc baabc Ort von head5 suf6 = abc head6 = ab WS03/04

Suffix-Baum Beispiel T6 = a b babaabbc abc a b aabc abc c baabc Ort von head6 suf7 = bc head7 = b WS03/04

Suffix-Baum Beispiel T7 = a b babaabbc abc b a c aabc abc c baabc suf8 = c WS03/04

Suffix-Baum Beispiel T8 = a b c babaabbc abc b a c aabc abc c baabc WS03/04