Algorithmen und Datenstrukturen II

Ähnliche Dokumente
Algorithmen und Datenstrukturen II

Gliederung. Algorithmen und Datenstrukturen II. Problem: Längste gemeinsame Teilsequenz. Problem: Längste gemeinsame Teilsequenz

Gliederung. Algorithmen und Datenstrukturen I. Binäre Bäume: ADT Heap. inäre Bäume: ADT Heap. Abstrakte Datentypen IV. D. Rösner

Gliederung. Algorithmen und Datenstrukturen I. Binäre Bäume: AVL-Bäume. inäre Bäume: AVL Bäume. Abstrakte Datentypen V: AVL Bäume. D.

Algorithmen und Datenstrukturen II

Repetitive Strukturen

Algorithmen und Datenstrukturen II

Text Analytics. Referat: Improving Suffix Array Locality for Fast Pattern Matching on Disk

TU München. Hauptseminar: WS 2002 / Einführung in Suffix - Bäume

Gliederung. Algorithmen und Datenstrukturen II. Graphen: All-pairs shortest paths. Graphen: All-pairs shortest paths. Graphen: Kürzeste Pfade III

Effiziente Algorithmen 2

Algorithmische Bioinformatik 1

4. Tries und kd-bäume

Algorithmen und Datenstrukturen II

Gliederung. Algorithmen und Datenstrukturen II. Java: Objektorientierung. Java: Objektorientierung. Objektorientierung in JAVA. D.

Konstruktion von Suffix Bäumen

Proseminar String Matching

Algorithmische Bioinformatik 1

Algorithmen und Datenstrukturen II

Gliederung. Algorithmen und Datenstrukturen I. Eine wichtige Frage. Algorithmus. Materialien zur Vorlesung. Begriffsbestimmung EUKLID Primzahltest

Gliederung. Algorithmen und Datenstrukturen II. ADT Graph. ADT Graph. Graphen in JAVA. Klasse Graph Suche Breitensuche Tiefensuche. D.

Konstruktion von Suffix Bäumen

Zeichenketten Benedikt Straßner. Programming Systems Group Martensstr Erlangen Germany

Suchen in Texten. Naives Suchen Verfahren von Knuth-Morris-Pratt Verfahren von Boyer-Moore Ähnlichkeitssuchen Editierdistanz

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8

Programmierparadigmen

Algorithmen und Datenstrukturen

Gliederung. Algorithmen und Datenstrukturen I. Listen in Haskell: Listen in Haskell: Listen in Haskell. Datentyp Liste Strings Listenkomprehension

String - Matching. Kapitel Definition

Gliederung. Algorithmen und Datenstrukturen I. öschen in Rot-Schwarz-Bäumen. Löschen in Rot-Schwarz-Bäumen

ADS: Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen I

Zeichenketten. Michael Fularczyk Michael Fularczyk Zeichenketten / 41

8.4 Suffixbäume. Anwendungen: Information Retrieval, Bioinformatik (Suche in Sequenzen) Veranschaulichung: DNA-Sequenzen

Kapitel 2. Suche nach endlich vielen Wörtern. R. Stiebe: Textalgorithmen, Winter 2005/06 113

Kapitel 12: Induktive

5.5 Prioritätswarteschlangen

Algorithmische Bioinformatik

Definition 14 Rot-Schwarz-Bäume sind externe Binärbäume (jeder Knoten hat 0 oder 2 Kinder) mit roten und schwarzen Kanten, so dass gilt:

11. Elementare Datenstrukturen

Zeichenketten. 10. Mai 2017 Simon Bachstein Simon Bachstein Hallo Welt -Seminar - LS 2 Zeichenketten 1

Zeichenketten. 29. April 2015 Benedikt Lorch. Benedikt Lorch Zeichenketten April

Informatik II, SS 2018

Suffixautomaten. Stringologie. Weitere mögliche Datenstrukturen, die uns Zugriff auf die Suffixe eines Suchtextes erlauben.

Informatik II Precomputation

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph

Einfache binäre Suchbäume können entarten, so dass sich die Tiefen ihrer Blattknoten stark unterscheiden

18. Natürliche Suchbäume

Universität Bremen. Textsuche. Thomas Röfer. Naive Suche Verfahren von Knuth-Morris-Pratt Verfahren von Boyer-Moore Ähnlichkeitssuche Editierdistanz

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung

Definition 15 Rot-Schwarz-Bäume sind externe Binärbäume (jeder Knoten hat 0 oder 2 Kinder) mit roten und schwarzen Kanten, so dass gilt:

Tutorium Algorithmen & Datenstrukturen

Algorithms & Data Structures 2

Trees. November 14, Algorithms & Datastructures 2 Exercises WT 2017

Indexieren und Suchen

3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr

Informatik II, SS 2018

Indexieren und Suchen

Übung Algorithmen und Datenstrukturen

Algorithmen auf Sequenzen

Algorithmische Bioinformatik

2.7 Bucket-Sort Bucket-Sort ist ein nicht-vergleichsbasiertes Sortierverfahren. Hier können z.b. n Schlüssel aus

Trees. November 13, Algorithms & Datastructures 2 Exercises WT 2017

Musterlösung Datenstrukturen und Algorithmen

Mehrwegbäume Motivation

Algorithmen und Datenstrukturen II. Suchen in Texten. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern

Wintersemester 2004/ Februar 2005

Datenstrukturen und Algorithmen D-INFK

Algorithmen und Datenstrukturen I

Lösungsvorschläge zur Hauptklausur 1661 Datenstrukturen I

Algorithmen und Datenstrukturen (für ET/IT)

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Entartete Suchbäume. Beispiel: Balancieren von Suchbaum. Wintersemester 2012/13

Effiziente Algorithmen und Komplexitätstheorie

ADS: Algorithmen und Datenstrukturen 1

elementare Datenstrukturen

Gliederung. Funktionale Programmierung. Pattern matching in Haskell. Pattern matching in ERLANG. Materialien zur Vorlesung

Algorithmen zur exakten Suche in Texten. Algorithmen und Datenstrukturen II 1

Algorithmentheorie. 15 Suchen in Texten (1)

18. Natürliche Suchbäume

Algorithmen und Datenstrukturen 2

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Gliederung. Informationsextraktion Materialien zur Vorlesung. Entwicklung eines regex für Firmennamen. Entwicklung eines regex für Firmennamen

Thomas Behr. 17. November 2011

Datenstrukturen und Algorithmen SS07

Teil 1: Suchen. Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume Ausgeglichene Bäume B-Bäume Digitale Suchbäume

Verkettete Datenstrukturen: Bäume

Suchen und Sortieren Sortieren. Heaps

Indexieren und Suchen

Knuth Morris Pratt Algorithmus

Satz 172 Jedes vergleichsbasierte Sortierverfahren benötigt im worst-case mindestens n ld n + O(n) Vergleiche und hat damit Laufzeit Ω(n log n).

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Algorithmen und Datenstrukturen. Bäume. M. Herpers, Y. Jung, P. Klingebiel

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Anwendungsbeispiel MinHeap

Algorithmen und Datenstrukturen

Transkript:

Algorithmen und Datenstrukturen II Algorithmen zur Textverarbeitung III: D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2009, 15. Juni 2009, c 2009 D.Rösner D. Rösner AuD II 2009... 1

Gliederung 1 Algorithmen auf Texten Einführung Standard-Trie Komprimierter Trie Suffix-Trie D. Rösner AuD II 2009... 2

Einführung Text wird vorverarbeitet (und nicht Muster wie bei Boyer-Moore bzw. KPM) besonders sinnvoll, wenn eine Reihe von Anfragen auf einem festen Text erfolgen Trie baum-basierte Datenstruktur zum Speichern von Strings, um schnellen Musterabgleich (engl. pattern matching) zu ermöglichen hauptsächliche Anwendung: im Information Retrieval daher auch der Name: Retrieval s.a. [GT06], Ch. 12.3 D. Rösner AuD II 2009... 4

Einführung Definition: Standard- Sei S eine Menge von s Strings aus dem Alphabet Σ so dass kein String in S Präfix eines anderen String. Ein Standard-Trie für S ist ein geordneter Baum T mit folgenden Eigenschaften: Jeder Knoten von T, außer der Wurzel, ist mit einem Zeichen von Σ markiert. Die Anordnung der Kinder eines internen Knoten von T ist durch eine kanonische Anordnung des Alphabets Σ bestimmt. T hat s externe Knoten, die jeweils mit einem String aus S assoziiert, so dass die Konkatenation der Marken der Knoten auf dem Pfad von der Wurzel zu einem externen Knoten ν von T den mit ν assoziierten String ergibt. s.a. [GT06], Ch. 12.3 D. Rösner AuD II 2009... 5

Standard-Trie d j M e i a a r e g n u t n s Abbildung: Standard-Trie zu den Wörtern aus dem Satz der Mann jagt die Maus D. Rösner AuD II 2009... 6

Standard-Trie Bemerkungen: Ein Trie T repräsentiert die Strings von S durch Pfade von der Wurzel zu den externen Knoten. Die Forderung, dass kein String in S Präfix eines anderen, stellt sicher, dass jeder String eindeutig mit einem externen Knoten assoziiert. Durch Hinzufügen eines Spezialzeichens, das nicht in Σ, ans Ende jedes Strings, ist diese Bedingung immer erfüllbar. Wenn d Größe des Alphabet, dann hat jeder interne Knoten zwischen 1 und d Kinder. Jeder Pfad von Wurzel von T zu einem internen Knoten v in Tiefe i entspricht dem i-zeichen-präfix X[0... i-1] eines Strings X aus S. s.a. [GT06], Ch. 12.3 D. Rösner AuD II 2009... 7

Standard-Trie d j M e i a a r e g n u [0] [14] t n s [9] [4] [18] Abbildung: Standard-Trie zu den Wörtern aus dem Satz der Mann jagt die Maus mit Information zum Vorkommen der Wörter D. Rösner AuD II 2009... 8

Standard-Trie Implementation eines Trie als Baum mit Zeichen in seinen Knoten. weitere Struktureigenschaften eines Standard- zu einer Menge S von s Strings der Gesamtlänge n aus einem Alphabet der Größe d: Die Höhe von T ist gleich der Länge des längsten Strings in S. Die Zahl der Knoten von T ist O(n). Schlechtester Fall: keine zwei Strings teilen einen gemeinsamen nichtleeren Präfix. s.a. [GT06], Ch. 12.3 D. Rösner AuD II 2009... 9

Standard-Trie Trie T auch zum Implementieren eines Wörterbuchs, wobei die Strings in S die Schlüssel. Die Suche nach einem String X erfolgt durch zeichenweises Abgleichen von der Wurzel ausgehend. Aufwand für einen String der Länge m ist O(dm) für d = Σ Begründung: besucht werden höchstens m+1 Knoten und in jedem Knoten wird O(d) Zeit (zur Auswahl des Folgeknotens) verbraucht. Weitere Verbesserung möglich, wenn die Folgeknoten so implementiert, dass der Zugriff in O(1) oder O(logd) erfolgen kann (z.b. durch Hashtable bzw. Look-up-table) s.a. [GT06], Ch. 12.3 D. Rösner AuD II 2009... 10

Standard-Trie besonders geeignet für sog. Wortabgleich (engl. word matching), d.h. Suche nach exaktem Vorkommen eines Wort in einem Text bei Verwendung eines benötigt der Abgleich beim word matching mit einem Muster der Länge m O(dm) Zeit unabhängig von der Größe des Texts (mit d = Σ ) auch geeignet für sog. Präfix-Abgleich (engl. prefix matching): Gegeben ist ein String X und es werden alle Strings in S gesucht, die X als Präfix enthalten. das Suchen nach andersartigen Vorkommen von Mustern im Text (z.b. Suche nach Vorkommen als Suffix oder nach Vorkommen, die Wörter überspannen) können mit nicht effizient erfolgen s.a. [GT06], Ch. 12.3 D. Rösner AuD II 2009... 11

Standard-Trie Aufbau eines Standard-Trie: kann inkrementell erfolgen, d.h. Wörter werden nacheinander in Trie eingefügt wenn ein String X noch nicht im Trie wird zunächst versucht, den mit X assoziierten Pfad zu verfolgen dieser geht bei einem internen Knoten ν nicht weiter, bevor Ende von X erreicht für die verbleibenden Zeichen in X wird neue Kette von Knotennachkommen von ν kreiert Aufwand für Einfügen : O(dm) Aufwand für Aufbau des gesamten Trie zu S: O(dn) mit n Gesamtlänge der Strings in S s.a. [GT06], Ch. 12.3 D. Rösner AuD II 2009... 12

Komprimierter Trie ein komprimierter Trie unterscheidet sich von einem Standard-Trie dadurch, dass jeder interne Knoten mindestens zwei Kindknoten besitzt. Aus einem Standard-Trie wird ein komprimierter Trie gewonnen, indem Ketten aufeinanderfolgender Knoten mit nur jeweils einem Kind zu einer Kante verschmolzen werden. s.a. [GT06], Ch. 12.3.2 D. Rösner AuD II 2009... 13

Komprimierter Trie d jagt Ma er ie nn us Abbildung: Komprimierter Trie zu den Wörtern aus dem Satz der Mann jagt die Maus D. Rösner AuD II 2009... 14

Komprimierter Trie Definitionen: Sei T ein Standard-Trie. Ein vom Wurzelknoten verschiedener interner Knoten ν heisst redundant, wenn ν nur ein Kind hat. Eine Kette von k 2 Kanten, (ν 0, ν 1 )(ν 1, ν 2 )...(ν k 1, ν k ), ist redundant wenn: ν i ist redundant für i = 1,..., k-1. ν 0 und ν k sind nicht redundant. s.a. [GT06], Ch. 12.3.2 D. Rösner AuD II 2009... 15

Komprimierter Trie Ein Standard-Trie T kann in einen komprimierten Trie umgewandelt werden, indem jede redundante Kette (ν 0,ν 1 )(ν 1,ν 2 )... (ν k 1,ν k ) von k 2 Kanten ersetzt wird durch eine einzige Kante (ν 0,ν k ), wobei ν k als Label den durch die Konkatenation der Zeichen aus den Knoten ν 1,...,ν k entstehenden String erhält. s.a. [GT06], Ch. 12.3.2 D. Rösner AuD II 2009... 16

Komprimierter Trie Ein komprimierter Trie, der eine Kollektion S von s Strings aus einem Alphabet der Grösse d speichert, hat folgende Eigenschaften: Jeder interne Knoten hat mindestens zwei und höchstens d Kinder. T hat s externe Knoten. Die Zahl der Knoten von T ist O(s). Bemerkung: Zahl der Knoten von T also nur noch von der Zahl s unterschiedlicher Strings, aber nicht mehr von ihrer Gesamtlänge n (wie bei Standard-Trie) abhängig. s.a. [GT06], Ch. 12.3.2, Prop. 12.7 D. Rösner AuD II 2009... 17

Suffix-Trie ein sog. Suffix-Trie liegt vor, wenn es sich bei den String in der Kollektion S um alle Suffixe eines Strings X handelt man spricht dann auch von Suffix-Baum (engl. suffix tree) oder Positionsbaum (engl. position tree) s.a. [GT06], Ch. 12.3.3 D. Rösner AuD II 2009... 18

Suffix-Trie e i mi nimize ze mize nimize ze nimize ze Abbildung: Suffix-Trie zum String minimize ; vgl. [GT06], Fig. 12.10 (a) D. Rösner AuD II 2009... 19

Suffix-Trie 7,7 1,1 0,1 2,7 6,7 4,7 2,7 6,7 2,7 6,7 Abbildung: Kompakte Version des Suffix-Trie zum String minimize ; Paar i,j verweist auf Substring X[i..j]; vgl. [GT06], Fig. 12.10 (b) D. Rösner AuD II 2009... 20

Suffix-Trie Musterabgleich mit einem Suffix-Trie Pseudocode: Algorithm suffixtriematch (T,P) Input: Kompakter Suffix-Trie T für einen Text X und Muster P Output: Index des Anfangs des ersten Teilstrings von X, der mit P übereinstimmt, oder Info, dass P nicht in X enthalten p P.length() {Länge des Pattern} j 0 {Start des Pattern-Suffix} ν T.root() repeat f true {kein Kind erfolgreich bearbeitet} for each child w of ν do... s. nächste Seite until f or T.isExternal(ν) return P kein Teilstring von X s.a. [GT06], Ch. 12.3.3 D. Rösner AuD II 2009... 21

Suffix-Trie Pseudocode (cont.): for each child w of ν do i start(ν) if (P[j] = T[i]) then x end(w)-i+1 if p x then if (P[j..j+p-1] = X[i..i+p-1]) then return i - j {match } else return P kein Teilstring von X else if (P[j..j+x-1] = X[i..i+x-1]) then p p - x {Länge des verbleibenden Pattern} j j + x {neuer Start des Pattern-Suffix} ν w f false s.a. [GT06], Ch. 12.3.3 break out of the for loop D. Rösner AuD II 2009... 22

Suffix-Trie wichtige Anwendung von Suffix-: in Web-Suchmaschinen s.a. [GT06], Ch. 12.3.4 D. Rösner AuD II 2009... 23

Literatur: I Michael T. Goodrich and Roberto Tamassia. Data Structures and Algorithms in Java. John Wiley & Sons, New York, 2006. ISBN-10 0-471-73884-0; ISBN-13 978-0-471-73884-8;4th edition. D. Rösner AuD II 2009... 24