Suffix Trees

Werbung
HS Angewandte Linguistische Datenverarbeitung
Leitung: Prof. J. Rolshoven
Suffix Trees
Katja Diederichs
Christian Fass
Simon Ritter
Suffix Trees
HS Angewandte Linguistische Datenverarbeitung WS 2010-11
1
Suffix Trees
Was ist ein Suffix Tree?
Suffix Tree ist eine Datenstruktur
Stellt die interne Struktur eines Strings mit allen
Substrings dar
Suffix Trees
HS Angewandte Linguistische Datenverarbeitung WS 2010-11
2
Suffix Trees
Vorteil von Suffix Trees
Lösungen für String-Probleme in linearer Zeit z. B.
Substring-Problem
Wenn Tree steht → Zeichenfolge beliebig
verlängerbar → Suchaufwand gleich
Nachteil von Suffix Trees
veränderte Zeichenfolge → neuer Tree
Suffix Trees
HS Angewandte Linguistische Datenverarbeitung WS 2010-11
3
Suffix Trees
Aufbau des Suffix Trees
Suffix Tree (T) für String (S)
der Länge (m) ist gerichteter
Wurzelbaum mit (m) Blättern
Bsp.: Banane → 6 Blätter und 6 Suffixe
Suffix Trees
HS Angewandte Linguistische Datenverarbeitung WS 2010-11
4
Suffix Trees
Effizienz
Algorithmen um Suchaufwand zu optimieren
Ukkonen (1995): Algorithmus mit Laufzeit O(n)
Suffix Trees
für
Bei einem Text (T) der Länge (m) kann der Suffix Tree
in einer Vorbereitungszeit von O(m) erstellt werden
Ein beliebiger String der Länge (n) kann in O(n) in (T)
gefunden oder sein Auftreten ausgeschlossen werden
Suffix Trees
HS Angewandte Linguistische Datenverarbeitung WS 2010-11
5
Suffix Trees
Effizienz
Ukkonens Algorithmus:
Laufzeit in Abhängigkeit zur Länge (n) des gesuchten
Strings
Laufzeit des Algorithmus ist linear
d.h. Laufzeit wächst ungefähr auf das Doppelte, wenn
sich (n) verdoppelt
Suffix Trees
HS Angewandte Linguistische Datenverarbeitung WS 2010-11
6
Suffix Trees
Anwendungsgebiete
Findet effiziente Lösungen bei der Verarbeitung von
Strings
→ in der Bioinformatik:
Suche z. B. sich wiederholender Abfolgen in DNASequenzen
→ im Information Retrieval:
Suche in... - WWW-Verzeichnissen,
- Bibliotheken, Datenbankrecherche
Suffix Trees
HS Angewandte Linguistische Datenverarbeitung WS 2010-11
7
Suffix Trees
Baumaufbau für den String „Banane“
Suffixe:
Banane
anane
nane
ane
ne
e
Suffix Trees
HS Angewandte Linguistische Datenverarbeitung WS 2010-11
8
Suffix Trees
Suffix Trees
HS Angewandte Linguistische Datenverarbeitung WS 2010-11
9
Suffix Trees
Suffix Trees
HS Angewandte Linguistische Datenverarbeitung WS 2010-11
10
Suffix Trees
Suffix Trees
HS Angewandte Linguistische Datenverarbeitung WS 2010-11
11
Suffix Trees
Suffix Trees
HS Angewandte Linguistische Datenverarbeitung WS 2010-11
12
Suffix Trees
Suffix Trees
HS Angewandte Linguistische Datenverarbeitung WS 2010-11
13
Suffix Trees
Suffix Trees
HS Angewandte Linguistische Datenverarbeitung WS 2010-11
14
Suffix Trees
Suffix Trees
HS Angewandte Linguistische Datenverarbeitung WS 2010-11
15
Suffix Trees
Suffix Trees
HS Angewandte Linguistische Datenverarbeitung WS 2010-11
16
Suffix Trees
Matching eines Substrings mit dem Suffix Tree
Szenario 1:
String S = "Banane"; Substring P = "ane"
1. An Wurzel: Entscheide, welche Kante
eingeschlagen wird. Da erstes Symbol von
P "a", folge Kante "an".
2. Vergleiche nächstes Symbol von P mit
nächstem Symbol auf Kante. ("n" == "n")
→ erreiche Knoten C.
3. Nächstes Symbol von P ist "e". Also
Folge Kante "e" und erreiche Blatt D.
Suffix Trees
HS Angewandte Linguistische Datenverarbeitung WS 2010-11
17
Suffix Trees
Matching eines Substrings mit dem Suffix Tree
Szenario 2:
String S = "Banane"; Substring P = "ann"
1. Wieder: Nimm Kante "an", da das erste
Symbol von P "a" ist.
2. Wieder: Vergleiche nächstes Symbol
von P mit nächstem Symbol auf Kante.
→ erreiche Knoten C.
Suffix Trees
HS Angewandte Linguistische Datenverarbeitung WS 2010-11
18
Suffix Trees
Matching eines Substrings mit dem Suffix Tree
Szenario 2:
3. Nächstes Symbol von P ist "n". Es gibt
keine Kante, die mit "n" beginnt!
→ Algorithmus terminiert und es bleibt ein
Zeichen übrig!
→ P ("ann") ist also weder Suffix noch
überhaupt Substring von S ("Banane").
Suffix Trees
HS Angewandte Linguistische Datenverarbeitung WS 2010-11
19
Suffix Trees
Überlegung zur Implementierung
Eine Möglichkeit: Array
Array für jeden Knoten, der kein Blatt ist
Zellen des Arrays werden mit den Anfangsbuchstaben der
Kantenbeschriftung indiziert
Zellen enthalten dann Zeiger vom Knoten zum Kind
Einfache Programmierung, aber hoher Speicherbedarf!
Suffix Trees
HS Angewandte Linguistische Datenverarbeitung WS 2010-11
20
Suffix Trees
Überlegung zur Implementierung
Andere Möglichkeit: Linked List
Liste enthält alle Anfangsbuchstaben der
Kantenbeschriftung der Zweige eines Knotens
bei Einfügung einer neuen Kante aus dem Knoten
→ neuer Buchstabe in die Liste
Laufzeit kann reduziert werden, wenn die Liste sortiert
gespeichert wird, denn falls ein Zeichen nicht in der Liste ist,
kann die Suche dann schneller abgebrochen werden
Suffix Trees
HS Angewandte Linguistische Datenverarbeitung WS 2010-11
21
Suffix Trees
Quellen
http://de.wikipedia.org/wiki/Suffixbaum
http://www.cise.ufl.edu/~sahni/dsaaj/enrich/c16/suffix.htm
http://www.allisons.org/ll/AlgDS/Tree/Suffix/
http://www.bio.ifi.lmu.de/webfm_send/2083
Suffix Trees
HS Angewandte Linguistische Datenverarbeitung WS 2010-11
22
Herunterladen