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