Text Analytics. Referat: Improving Suffix Array Locality for Fast Pattern Matching on Disk
|
|
|
- Emil Lichtenberg
- vor 8 Jahren
- Abrufe
Transkript
1 Text Analytics Referat: Improving Suffix Array Locality for Fast Pattern Matching on Disk Nils Alberti & Jürgen Eicher, 12. Juni 2008
2 Einführung Stringmatching bisher: Analyse des Patterns zum schnellen Auffinden in einem unbekannten Text (Boyer- Moore, Keyword- Tree)
3 Einführung Stringmatching bisher: Analyse des Patterns zum schnellen Auffinden in einem unbekannten Text (Boyer- Moore, Keyword- Tree) Jetzt: Aufbereiten des Textes um zukünftige Pattern schnell zu finden (das Google- Problem)
4 Suffixrepräsentation Definition: Ein Suffix S i eines Strings der Länge n ist der Substring, der an Stelle i beginnt und an Stelle n endet. Ein String der Länge n hat also n Suffixe. Jeder Substring ist also auch Präfix eines Suffixes!
5 Suffixrepräsentation Text: suhrkamp Pattern: uhr suhrkamp suhrkamp suhrkamp suhrkamp suhrkamp suhrkamp suhrkamp suhrkamp
6 Suffixtree Versuch alle Suffixe kompakt zu repräsentieren: Idee: Alle Suffixe mit dem gleichen Präfix liegen im selben Teilbaum.
7 Suffixtree Definition: Für einen Suffixtree T für einen String S gilt: T hat eine Wurzel und n Blätter: Jedes Suffix ist durch genau ein Blatt repräsentiert.
8 Suffixtree Definition: Für einen Suffixtree T für einen String S gilt: T hat eine Wurzel und n Blätter: Jedes Suffix ist durch genau ein Blatt repräsentiert. Jedes Blatt ist mit dem Index dieses Suffix gelabelt
9 Suffixtree Definition: Für einen Suffixtree T für einen String S gilt: T hat eine Wurzel und n Blätter: Jedes Suffix ist durch genau ein Blatt repräsentiert. Jedes Blatt ist mit dem Index dieses Suffix gelabelt Jede Kante ist mit einem Substring von S gelabelt
10 Suffixtree Definition: Für einen Suffixtree T für einen String S gilt: T hat eine Wurzel und n Blätter: Jedes Suffix ist durch genau ein Blatt repräsentiert. Jedes Blatt ist mit dem Index dieses Suffix gelabelt Jede Kante ist mit einem Substring von S gelabelt Alle Label von Kanten, die vom selben Knoten ausgehen beginnen mit unterschiedlichen Zeichen
11 Suffixtree Definition: Für einen Suffixtree T für einen String S gilt: T hat eine Wurzel und n Blätter: Jedes Suffix ist durch genau ein Blatt repräsentiert. Jedes Blatt ist mit dem Index dieses Suffix gelabelt Jede Kante ist mit einem Substring von S gelabelt Alle Label von Kanten, die vom selben Knoten ausgehen beginnen mit unterschiedlichen Zeichen Jeder innere Knoten hat mindestens zwei Kinder
12 Suffixtree Definition: Für einen Suffixtree T für einen String S gilt: T hat eine Wurzel und n Blätter: Jedes Suffix ist durch genau ein Blatt repräsentiert. Jedes Blatt ist mit dem Index dieses Suffix gelabelt Jede Kante ist mit einem Substring von S gelabelt Alle Label von Kanten, die vom selben Knoten ausgehen beginnen mit unterschiedlichen Zeichen Jeder innere Knoten hat mindestens zwei Kinder Ein Pfad von der Wurzel zu einem Blatt mit Label i entspricht dem Suffix S[i...n]
13 Suffixtree... T hat eine Wurzel und n Blätter: Jedes Suffix ist durch genau ein Blatt repräsentiert.... was ist, wenn ein Suffix Präfix eines anderen ist?
14 Suffixtree... T hat eine Wurzel und n Blätter: Jedes Suffix ist durch genau ein Blatt repräsentiert.... was ist, wenn ein Suffix Präfix eines anderen ist? es endet irgendwo auf dem Pfad! damit wäre es kein Suffixtree mehr!
15 Suffixtree... T hat eine Wurzel und n Blätter: Jedes Suffix ist durch genau ein Blatt repräsentiert.... was ist, wenn ein Suffix Präfix eines anderen ist? es endet irgendwo auf dem Pfad! damit wäre es kein Suffixtree mehr! Lösung: Jedes Suffix auf ein nicht im Text vorkommendes Zeichen enden lassen.
16 Beispiel: aa -> aa$ Suffixtree aa aa$ a a$
17 MISSISSIPPI$ Suffixtree - Beispiel
18 MISSISSIPPI$ Suffixtree - Beispiel
19 MISSISSIPPI$ Suffixtree - Beispiel
20 MISSISSIPPI$ Suffixtree - Beispiel
21 MISSISSIPPI$ Suffixtree - Beispiel
22 MISSISSIPPI$ Suffixtree - Beispiel
23 MISSISSIPPI$ Suffixtree - Beispiel
24 MISSISSIPPI$ Suffixtree - Beispiel
25 MISSISSIPPI$ Suffixtree - Beispiel
26 MISSISSIPPI$ Suffixtree - Beispiel
27 MISSISSIPPI$ Suffixtree - Beispiel
28 MISSISSIPPI$ Suffixtree - Beispiel
29 MISSISSIPPI$ Suffixtree - Beispiel
30 MISSISSIPPI$ Suffixtree - Beispiel
31 MISSISSIPPI$ Suffixtree - Beispiel
32 MISSISSIPPI$ Suffixtree - Beispiel
33 MISSISSIPPI$ Suffixtree - Beispiel
34 MISSISSIPPI$ Suffixtree - Beispiel
35 MISSISSIPPI$ Suffixtree - Beispiel
36 MISSISSIPPI$ Suffixtree - Beispiel
37 MISSISSIPPI$ Suffixtree - Beispiel
38 MISSISSIPPI$ Suffixtree - Beispiel
39 MISSISSIPPI$ Suffixtree - Beispiel
40 MISSISSIPPI$ Suffixtree - Beispiel
41 MISSISSIPPI$ Suffixtree - Beispiel es fehlen noch die Label der Blätter!
42 MISSISSIPPI$ Suffixtree - Beispiel
43 Suffixtree - Suche Wie lange dauert jetzt die Suche?
44 Suffixtree - Suche Wie lange dauert jetzt die Suche? O( Pattern )?
45 Suffixtree - Suche Wie lange dauert jetzt die Suche? O( Pattern )? Fast! Wir müssen aber alle Vorkommen des Pattern finden. Dafür müssen wir alle Blätter im Unterbaum finden. Also O( Pattern + #Vorkommen)
46 Suffixtree - Problem Wir brauchen sehr viel Platz für die Baumstruktur(Pointer,...).
47 Suffixtree - Problem Wir brauchen sehr viel Platz für die Baumstruktur(Pointer,...). Gesucht ist eine Datenstruktur, die den Speicherbedarf des Strings nicht (wesentlich) vergrößert.
48 Suffixtree - Problem Wir brauchen sehr viel Platz für die Baumstruktur(Pointer,...). Gesucht ist eine Datenstruktur, die den Speicherbedarf des Strings nicht (wesentlich) vergrößert. Lösung: Suffixarray
49 Suffixarray Definition: Ein Suffixarray A für String S ist ein Integerarray der Länge S. A[i] gibt die Startposition in S des Suffix an, das nach lexikographischer Sortierung an Stelle i steht.
50 Suffixarray Definition: Ein Suffixarray A für String S ist ein Integerarray der Länge S. A[i] gibt die Startposition in S des Suffix an, das nach lexikographischer Sortierung an Stelle i steht. 1. Sortiere alle Suffixe lexikographisch 2. Liste und Suffixarray parallel durchlaufen 3. Zum i-ten Listeneintrag wird A[i] der Stringindex des Suffixes zugewiesen
51 Suffixarray - Beispiel Suffixe: bauzaun lexikograph. Sortierung aun auzaun bauzaun n un uzaun zaun Suffixarray A[1] = 5 A[2] = 2 A[3] = 1 A[4] = 7 A[5] = 6 A[6] = 3 A[7] = 4
52 Suffixarray - Beispiel Suffixe: bauzaun lexikograph. Sortierung aun auzaun bauzaun n un uzaun zaun Suffixarray A[1] = 5 A[2] = 2 A[3] = 1 A[4] = 7 A[5] = 6 A[6] = 3 A[7] = 4
53 Suffixarray - Beispiel bauzaun aun auzaun bauzaun n un uzaun zaun A[1] = 5 A[2] = 2 A[3] = 1 A[4] = 7 A[5] = 6 A[6] = 3 A[7] = 4 Wie suchen wir jetzt ein Pattern?
54 Suffixarray - Beispiel bauzaun aun auzaun bauzaun n un uzaun zaun A[1] = 5 A[2] = 2 A[3] = 1 A[4] = 7 A[5] = 6 A[6] = 3 A[7] = 4 Wie suchen wir jetzt ein Pattern? Binäre Suche!
55 Suffixarray - Beispiel Wir suchen jetzt un in bauzaun: bauzaun aun auzaun bauzaun n un uzaun zaun A[1] = 5 A[2] = 2 A[3] = 1 A[4] = 7 A[5] = 6 A[6] = 3 A[7] = 4
56 Suffixarray - Beispiel Wir suchen jetzt un in bauzaun: bauzaun aun auzaun bauzaun n un uzaun zaun A[1] = 5 A[2] = 2 A[3] = 1 A[4] = 7 A[5] = 6 A[6] = 3 A[7] = 4
57 Suffixarray - Beispiel Wir suchen jetzt un in bauzaun: bauzaun aun auzaun bauzaun n un uzaun zaun A[1] = 5 A[2] = 2 A[3] = 1 A[4] = 7 A[5] = 6 A[6] = 3 A[7] = 4
58 Suffixarray - Beispiel Wir suchen jetzt un in bauzaun: bauzaun aun auzaun bauzaun n un uzaun zaun A[1] = 5 A[2] = 2 A[3] = 1 A[4] = 7 A[5] = 6 A[6] = 3 A[7] = 4 n < lex un
59 Suffixarray - Beispiel Wir suchen jetzt un in bauzaun: bauzaun aun auzaun bauzaun n un uzaun zaun A[1] = 5 A[2] = 2 A[3] = 1 A[4] = 7 A[5] = 6 A[6] = 3 A[7] = 4 n < lex un
60 Suffixarray - Beispiel Wir suchen jetzt un in bauzaun: bauzaun aun auzaun bauzaun n un uzaun zaun A[1] = 5 A[2] = 2 A[3] = 1 A[4] = 7 A[5] = 6 A[6] = 3 A[7] = 4 un = lex un
61 Suffixarray - Erweiterung Überlegung: Suffixarray sehr groß und generiert aus kleinem Alphabet(z.B. ASCII) Dann haben Suffixe häufig lange identische Präfixe Beispiel: menschliche Genom
62 Suffixarray - Erweiterung Idee: zusätzliches Array gleicher Länge, das an Stelle j die Länge des gemeinsamen Präfix von SA[j] und SA[j-1] speichert.
63 Suffixarray - Erweiterung Beispiel: bauzaun aun auzaun bauzaun n un uzaun zaun A[1] = 5 A[2] = 2 A[3] = 1 A[4] = 7 A[5] = 6 A[6] = 3 A[7] = 4 LCP[1] = LCP[2] = 2 LCP[3] = 0 LCP[4] = 0 LCP[5] = 0 LCP[6] = 1 LCP[7] = 0
64 Suffixarray - Erweiterung LCP kann auch allgemeiner definiert werden, nicht nur für lexikographisch nebeneinanderstehende Suffixe: Definition: lcp(y,z) ist das längste gemeinsame Präfix zweier Strings y und z
65 Suffixarray - Erweiterung Quelle: Gabriele Koller
66 Suffixarray - Problem Wir haben selten genug Hauptspeicher -> Suffixarray liegt auf der Festplatte
67 Suffixarray - Problem Wir haben selten genug Hauptspeicher -> Suffixarray liegt auf der Festplatte wir greifen also O(log(n)) Mal bei einer binären Suche an verschiedenen Stellen auf die Festplatte zu
68 Suffixarray - Problem Wir haben selten genug Hauptspeicher -> Suffixarray liegt auf der Festplatte wir greifen also O(log(n)) Mal bei einer binären Suche an verschiedenen Stellen auf die Festplatte zu Ziel: Festplattenzugriffe so wenig wie möglich und wenn dann sequentielles Lesen
69 Suffixarray - Problem Wir haben selten genug Hauptspeicher -> Suffixarray liegt auf der Festplatte wir greifen also O(log(n)) Mal bei einer binären Suche an verschiedenen Stellen auf die Festplatte zu Ziel: Festplattenzugriffe so wenig wie möglich und wenn dann sequentielles Lesen
70 LOF-SA Datenstruktur Idee: kleinen Baum über das Array legen, dadurch Partition des Arrays Ein Pfad des Baumes wird traversiert und dann ein kleiner Bereich des Arrays auf der Festplatte gelesen.
71 LOF-Trie Trie versus Tree: Im Trie besteht das Label jeder Kante aus nur einem Zeichen.
72 LOF-Trie LOF-Trie: Variante des Suffix-Trie
73 LOF-Trie LOF-Trie: Variante des Suffix-Trie Jeder Knoten hat start- und end- Werte für den Bereich des Arrays, den er abdeckt.
74 LOF-Trie LOF-Trie: Variante des Suffix-Trie Jeder Knoten hat start- und end- Werte für den Bereich des Arrays, den er abdeckt. Es gibt einen bucket threshold b, wodurch die Größe des Baumes, bzw. dieser der Buckets gesteuert wird.
75 LOF-Trie LOF-Trie: Variante des Suffix-Trie Jeder Knoten hat start- und end- Werte für den Bereich des Arrays, den er abdeckt. Es gibt einen bucket threshold b, wodurch die Größe des Baumes, bzw. dieser der Buckets gesteuert wird. Der Baum wird ab einem Knoten v gepruned, für den gilt: occ(v)<= b < occ(parent(b))
76 LOF-Trie Jedes Blatt v verweist also auf einen Bucket der Größe höchstens b.
77 LOF-Trie Jedes Blatt v verweist also auf einen Bucket der Größe höchstens b. Sämtliche durch die Einträge des SA-Buckets induzierten Suffixe haben einen gemeinsames Präfix der Baumtiefe entsprechend.
78 LOF-Trie
79 Das LOF-Array - Tripel <LCP[i], SA[i], F[0 f-1]> SA[i] ist Anfangspos. des i-ten Suffix (lexikographische Sortierung) von T LCP[i] ist längster gemeinsamer Präfix von T[SA[i-1] n] und T[SA[i] n] F[0 f-1] ( fringe ) sind f Zeichen im Template nach dem LCP - Großes f reduziert (Festplatten-) Zugriffe auf T - Aber: b LOF-Array-Einträge pro Block
80 Das LOF-Array
81 Pattern-Matching - Zunächst: Präfix matchen im LOF-Trie Dieser ist so konstruiert, dass er komplett in den Arbeitsspeicher passt. - Falls nur Mismatches: fertig, kein Fund - Falls Pattern vollständig im Trie liegt: Letzter erreichter Knoten kennt Start und Ende des matchenden Intervalls im LOF-Array - Sonst: Match nur möglich im Intervall des LOF-Arrays zwischen Start und Ende des erreichten Terminals
82 SearchLOFArray(blockstart, blockend, P,match, m) 1: curr blockstart 2: match the length of the common prefix for this LOF bucket 3: while match m do 4: if LA[curr].L < match or curr = blockend then If the first condition, then already past location of longest match, without finding a match of m, and if the second condition, LOF block is exhausted. Either way, 5: return No match Otherwise, increase match length if appropriate. 6: match MatchEntryToPattern(match m, curr) 7: curr curr + 1 Scan through LCP values counting occurrences. 8: start curr - 1 9: while curr blockend and match LA[curr].L do 10: curr curr : return (start, curr - 1)
83 MatchEntryToPattern(match m, curr) 1: if f = 0 or LA[curr].L + f < match then Either there are no fringe characters or it is known that P matches all of them, so go straight to the text. 2: p compare(p[match...m-1], T [LA[curr].O + match...n]) 3: match match + p 4: else Check the pattern against the fringe characters. 5: p compare(p[match m-1], LA[curr].F [0...f-1]) 6: match match + p 7: if match = LA[curr].L + f then The pattern matches all the fringe characters, check x. 8: p compare(p[match m-1], T[LA[curr].O + match n]) 9: match match + p 10: return match
84 Laufzeit-Vergleich Vergleichssysteme: - TDD: disk-basierte Suffix-Tree-Implementation - TRELLIS: disk-basierte Suffix-Tree-Implementation, schnell aber speicherintensiv, Template komprimiert im Hauptspeicher, nur DNA - Suffix-Array, disk-basiert - Suffix-Array mit zusätzlichem kleinem Index (SPAT) Qualität der verwendeten Vergleichssysteme lässt sich nicht beurteilen.
85 Laufzeit-Vergleich Testdaten: - 8 verschiedene Human-DNA-Präfixe, 10M-2000M Basen - 233MB Genbank nicht-redundante Proteine - Wall Street Journal TREC corpus subcollection Sonderzeichen entfernt, Leerzeichen in Z umgewandelt - Je 1000 zufällig gewählte Template-Sequenzen unterschiedlicher Länge
86 Laufzeit-Vergleich Parameter-Wahl: - kleines b beschleunigt sequentielle Suche in Buckets - großes b verkleinert LOF-Trie, bis er in Hauptspeicher passt - kleines f verkleinert das LOF-Array - großes f reduziert Zugriff auf Template - Gewählt: b = 4096, f = 4
87 Laufzeit-Vergleich
88 Laufzeit-Vergleich
8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.
8. A & D - Heapsort Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. Genauer werden wir immer wieder benötigte Operationen durch Datenstrukturen unterstützen.
4.9.7 Konstruktion der Suffixbäume
.9.7 Konstruktion der Suffixbäume Beipiel: xabxa (siehe Abbildung.27) Man beginnt mit der Konstruktion eines Suffixbaumes für gesamten String und schreibt eine 1 am Blatt, weil der Suffix xabxa an der
PATRICIA Tree. New Indices for Text: PAT Trees and PAT Arrays. PAT-TREE - Einführung. Inhalt. PAT-Tree Definition
New Indices for Text: PAT Trees and PAT Arrays Ruprecht - Karls - Universität Heidelberg Lehrstuhl für Computerlinguistik HS Dozentin: Dr. Karin Haenelt Referenten: Maria Tzolova, FatihEkrem Genc Diese
Tutorium Algorithmen & Datenstrukturen
June 16, 2010 Binärer Baum Binärer Baum enthält keine Knoten (NIL) besteht aus drei disjunkten Knotenmengen: einem Wurzelknoten, einem binären Baum als linken Unterbaum und einem binären Baum als rechten
11.1 Grundlagen - Denitionen
11 Binärbäume 11.1 Grundlagen - Denitionen Denition: Ein Baum ist eine Menge, die durch eine sog. Nachfolgerrelation strukturiert ist. In einem Baum gilt: (I) (II) 1 Knoten w ohne VATER(w), das ist die
Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete
Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.4 Binäre Suche Aufgabenstellung: Rate eine Zahl zwischen 100 und 114! Algorithmus 4.1 INPUT: OUTPUT:
Inverted Files for Text Search Engines
Inverted Files for Text Search Engines Justin Zobel, Alistair Moffat PG 520 Intelligence Service Emel Günal 1 Inhalt Einführung Index - Inverted Files - Indexkonstruktion - Indexverwaltung Optimierung
Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6
Robert Elsässer u.v.a. Paderborn, 29. Mai 2008 Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6 Aufgabe 1 (6 Punkte): Zunächst sollte klar sein, daß ein vollständiger Binärer
Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit
Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält
Bioinformatik. Zeichenketten und Stringalgorithmen. Ulf Leser Wissensmanagement in der. Bioinformatik
Bioinformatik Zeichenketten und Stringalgorithmen Ulf Leser Wissensmanagement in der Bioinformatik Inhalt dieser Vorlesung Warum Stringmatching? Strings und Matching Naiver Algorithmus Ulf Leser: Bioinformatik
Algorithmen und Datenstrukturen (für ET/IT) Programm heute. Sommersemester Dr. Tobias Lasser
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 06 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 7 Fortgeschrittene Datenstrukturen 8 Such-Algorithmen
13. Bäume: effektives Suchen und Sortieren
Schwerpunkte Aufgabe und Vorteile von Bäumen 13. Bäume: effektives Suchen und Sortieren Java-Beispiele: Baum.java Traverse.java TraverseTest.java Sortieren mit Bäumen Ausgabealgorithmen: - Preorder - Postorder
2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung
2 Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung 2 Woche: Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung 24/ 44 Zwei Beispiele a 0
Bioinformatik. Suffixbäume auf Sekundärspeicher. Ulf Leser Wissensmanagement in der. Bioinformatik
Bioinformatik Suffixbäume auf Sekundärspeicher Ulf Leser Wissensmanagement in der Bioinformatik Ukkonen Überblick High-Level: Phasen und Extensionen Führt leider zu O(m 3 ) Verbesserungen Suffix-Links
Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany [email protected]. Stammbaum. Stammbaum. Stammbaum
lausthal Beispiele Stammbaum Informatik II. Zachmann lausthal University, ermany [email protected]. Zachmann Informatik - SS 06 Stammbaum Stammbaum / Parse tree, Rekursionsbaum Parse tree, Rekursionsbaum
Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).
8. Untere Schranken für Sortieren Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). Werden nun gemeinsame Eigenschaften dieser Algorithmen untersuchen. Fassen gemeinsame
13. Binäre Suchbäume
1. Binäre Suchbäume Binäre Suchbäume realiesieren Wörterbücher. Sie unterstützen die Operationen 1. Einfügen (Insert) 2. Entfernen (Delete). Suchen (Search) 4. Maximum/Minimum-Suche 5. Vorgänger (Predecessor),
14. Rot-Schwarz-Bäume
Bislang: Wörterbuchoperationen bei binären Suchbäume effizient durchführbar, falls Höhe des Baums klein. Rot-Schwarz-Bäume spezielle Suchbäume. Rot-Schwarz-Baum mit n Knoten hat Höhe höchstens 2 log(n+1).
Informatik-Seminar Thema 6: Bäume
Informatik-Seminar 2003 - Thema 6: Bäume Robin Brandt 14. November 2003 1 Robin Brandt Informatik-Seminar 2003 - Thema 6: Bäume Übersicht Definition Eigenschaften Operationen Idee Beispiel Datendefinition
Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder
Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element
! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -
! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck
Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:
HeapSort Allgemeines Sortieralgorithmen gehören zu den am häufigsten angewendeten Algorithmen in der Datenverarbeitung. Man hatte daher bereits früh ein großes Interesse an der Entwicklung möglichst effizienter
Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5
Robert Elsässer Paderborn, den 15. Mai 2008 u.v.a. Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 AUFGABE 1 (6 Punkte): Nehmen wir an, Anfang bezeichne in einer normalen
Verkettete Datenstrukturen: Bäume
Verkettete Datenstrukturen: Bäume 1 Graphen Gerichteter Graph: Menge von Knoten (= Elementen) + Menge von Kanten. Kante: Verbindung zwischen zwei Knoten k 1 k 2 = Paar von Knoten (k 1, k 2 ). Menge aller
3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1
3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)
Programmierung und Modellierung
Programmierung und Modellierung Terme, Suchbäume und Pattern Matching Martin Wirsing in Zusammenarbeit mit Moritz Hammer SS 2009 2 Inhalt Kap. 7 Benutzerdefinierte Datentypen 7. Binärer Suchbaum 8. Anwendung:
Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen
Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter
7. Sortieren Lernziele. 7. Sortieren
7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche
Gierige Algorithmen Interval Scheduling
Gierige Algorithmen Interval Scheduling IntervalScheduling(s,f). n length[s] 2. A {} 3. j 4. for i 2 to n do 5. if s[i] f[j] then 6. A A {i} 7. j i 8. return A Gierige Algorithmen Interval Scheduling Beweisidee:
Informatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 10 (3.6.2014) Binäre Suchbäume I Algorithmen und Komplexität Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen:
Kapitel 9 Suchalgorithmen
Kapitel 9 Suchalgorithmen Suchverfahren: Verfahren, das in einem Suchraum nach Mustern oder Objekten mit bestimmten Eigenschaften sucht. Vielfältige Anwendungsbereiche für Suchverfahren: u.a. Suchen in
Algorithmische Bioinformatik
Algorithmische Bioinformatik Suffixbäume Ulf Leser Wissensmanagement in der Bioinformatik Failure Links P={banane, nabe, abnahme, na, abgabe} banane banan 1 bana ban b ba ab abn abna abnah a n na abg 4
Datenstrukturen und Algorithmen
Datenstrukturen und Algorithmen VO 708.031 Bäume [email protected] 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische Grundprinzipien 3. Sortierverfahren 4. Halden
4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum
4. Lernen von Entscheidungsbäumen Klassifikation mit Entscheidungsbäumen Gegeben sei eine Menge von Objekten, die durch /Wert- Paare beschrieben sind. Jedes Objekt kann einer Klasse zugeordnet werden.
Kapitel 12: Schnelles Bestimmen der Frequent Itemsets
Einleitung In welchen Situationen ist Apriori teuer, und warum? Kapitel 12: Schnelles Bestimmen der Frequent Itemsets Data Warehousing und Mining 1 Data Warehousing und Mining 2 Schnelles Identifizieren
Algorithmische Bioinformatik
Algorithmische Bioinformatik Biologische Daten als Strings Ulf Leser Wissensmanagement in der Bioinformatik Ziele für heute Wert von Reduktionismus: Genome als Strings Reinschmecken in Stringmatching Erster
Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.
1. Aufgabe (6 Punkte): Java-Programmierung (Arrays)
Der folgende Mitschrieb wurde von Prof. Alexa am 16.07.2008 als Probeklausur in der MPGI2 Vorlesung gezeigt und wurde auf http://www.basicinside.de/2008/node/94 veröffentlicht. Die Abschrift ist unter
Klausur Algorithmen und Datenstrukturen
Technische Universität Braunschweig Sommersemester 2013 IBR - Abteilung Algorithmik Prof. Dr. Sándor Fekete Dr. Christiane Schmidt Stephan Friedrichs Klausur Algorithmen und Datenstrukturen 22.08.2013
Übrigens: um den Algorithmus im Unterricht einzuführen, sind keine Formeln notwendig! Warum reicht die normale ASCII-Codierung nicht aus?
Huffman-Code Dieser Text ist als Hintergrundinformation ausschliesslich für die Lehrperson gedacht. Der Text ist deshalb eher technisch gehalten. Er lehnt sich an das entsprechende Kapitel in "Turing Omnibus"
11. Elementare Datenstrukturen
11. Elementare Datenstrukturen Definition 11.1: Eine dynamische Menge ist gegeben durch eine oder mehrer Mengen von Objekten sowie Operationen auf diesen Mengen und den Objekten der Mengen. Dynamische
Datenbanken: Indexe. Motivation und Konzepte
Datenbanken: Indexe Motivation und Konzepte Motivation Warum sind Indexstrukturen überhaupt wünschenswert? Bei Anfrageverarbeitung werden Tupel aller beteiligter Relationen nacheinander in den Hauptspeicher
Bäume, Suchbäume und Hash-Tabellen
Im folgenden Fokus auf Datenstrukturen, welche den assoziativen Zugriff (über einen bestimmten Wert als Suchkriterium) optimieren Bäume: Abbildung bzw. Vorberechnung von Entscheidungen während der Suche
Kurs 1613 Einführung in die imperative Programmierung
Aufgabe 1 Gegeben sei die Prozedur BubbleSort: procedure BubbleSort(var iofeld:tfeld); { var hilf:integer; i:tindex; j:tindex; vertauscht:boolean; i:=1; repeat vertauscht := false; for j := 1 to N - i
Es sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften:
Binäre Suchbäume (a, b)-bäume (Folie 173, Seite 56 im Skript) Es sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften: 1 Jeder Knoten hat höchstens b Kinder. 2 Jeder
Vorlesung Informatik 2 Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 Bäume: Grundlagen und natürliche Suchbäume) Prof. Dr. Susanne Albers Bäume (1) Bäume sind verallgemeinerte Listen (jedes Knoten-Element kann mehr
B / B* - Bäume. Guido Hildebrandt Seminar Datenbanksysteme
B / B* - Bäume Guido Hildebrandt Seminar Datenbanksysteme 25.11.2010 Gliederung Einleitung Binärbaum B - Baum B* - Baum Varianten Zusammenfassung Quellen Gliederung Einleitung Binärbaum B - Baum B* - Baum
Einführung in die Informatik 2
Einführung in die Informatik 2 Suchen in Texten Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 [email protected] Sprechstunde: Freitag, 12:30-14:00 Uhr, o.n.v.
1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert
Inhalt Einführung 1. Arrays 1. Array unsortiert 2. Array sortiert 3. Heap 2. Listen 1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert 3. Bäume
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1
Kapitel 14 Bäume Bäume 1 Ziele Den Begriff des Baums in der Informatik kennenlernen Bäume als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf Bäumen verstehen und schreiben können
Referat zum Thema Huffman-Codes
Referat zum Thema Huffman-Codes Darko Ostricki Yüksel Kahraman 05.02.2004 1 Huffman-Codes Huffman-Codes ( David A. Huffman, 1951) sind Präfix-Codes und das beste - optimale - Verfahren für die Codierung
Dynamisches Huffman-Verfahren
Dynamisches Huffman-Verfahren - Adaptive Huffman Coding - von Michael Brückner 1. Einleitung 2. Der Huffman-Algorithmus 3. Übergang zu einem dynamischen Verfahren 4. Der FGK-Algorithmus 5. Überblick über
...imbeispiel: Die Konkatenation der Blätter des Ableitungsbaums t bezeichnen wir auch mit yield(t). liefert die Konkatenation: name int + int.
Die Konkatenation der Blätter des Ableitungsbaums t bezeichnen wir auch mit yield(t)....imbeispiel: E 0 E 1 + T 1 T 0 F 2 T 1 F 2 int F 1 int name liefert die Konkatenation: name int + int. 273 Die Grammatik
Punkt-in-Polygon-Suche Übersicht
Folie 1 von 43 Punkt-in-Polygon-Suche Übersicht! Praxisbeispiel/Problemstellung! Zählen von Schnittpunkten " Schnitt einer Halbgerade mit der Masche " Aufwandsbetrachtung! Streifenkarte " Vorgehen und
Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1
Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1 Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany [email protected] Das C++ Typsystem simple structured integral enum
Das Heiratsproblem. Definition Matching
Das Heiratsproblem Szenario: Gegeben: n Frauen und m > n Männer. Bekanntschaftsbeziehungen zwischen allen Männern und Frauen. Fragestellung: Wann gibt es für jede der Frauen einen Heiratspartner? Modellierung
Effiziente Algorithmen Übung 2
Effiziente Algorithmen Übung 2 Aufgabe 3 Circular Reversal Sort Gruppe E Martin Schliefnig, 0160919 Christoph Holper, 9927191 Ulrike Ritzinger, 0125779 1. Problemstellung Ein DNA Molekül muss nicht immer
12. Hashing. Hashing einfache Methode um Wörtebücher zu implementieren, d.h. Hashing unterstützt die Operationen Search, Insert, Delete.
Hashing einfache Methode um Wörtebücher zu implementieren, d.h. Hashing unterstützt die Operationen Search, Insert, Delete. Worst-case Zeit für Search: Θ(n). In der Praxis jedoch sehr gut. Unter gewissen
Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.
Kapitel 4 Graphenalgorithmen 4.1 Definitionen Definition 4.1.1. Der Graph G = (V, E) ist über die beiden Mengen V und E definiert, wobei V die Menge der Knoten und E die Menge der Kanten in dem Graph ist.
Randomisierte Algorithmen 2. Erste Beispiele
Randomisierte Algorithmen Randomisierte Algorithmen 2. Erste Beispiele Thomas Worsch Fakultät für Informatik Karlsruher Institut für Technologie Wintersemester 2016/2017 1 / 35 Randomisierter Identitätstest
Abschnitt: Algorithmendesign und Laufzeitanalyse
Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher
Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Suchbäume Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative
Eigenschaften von Kompressionsverfahren
6 Textkompression Eigenschaften von Kompressionsverfahren Das Ziel der Datenkompression ist es, eine gegebene Information (Datenquelle) auf eine kompaktere Weise zu repräsentieren. Dies geschieht, indem
Sortierte Folgen 250
Sortierte Folgen 250 Sortierte Folgen: he 1,...,e n i mit e 1 apple applee n kennzeichnende Funktion: M.locate(k):= addressof min{e 2 M : e k} Navigations Datenstruktur 2 3 5 7 11 13 17 19 00 Annahme:
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
3. Binäre Suchbäume 3.1 Natürliche binäre Suchbäume Definition 18 Ein natürlicher binärer Suchbaum über einem durch total geordneten Universum U ist ein als interner Suchbaum organisierter Binärbaum (also:
Textkompression: Burrows-Wheeler-Transformation
Proseminar Algorithmen der Bioinformatik WS 2010/11 Textkompression: Burrows-Wheeler-Transformation Johann Hawe Johann Hawe, WS 2010/11 1 Gliederung 1. Einleitung 2. BWT Kompressionstransformation 2.1
Grundlagen: Algorithmen und Datenstrukturen
Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 00
Kombinatorische Optimierung
Juniorprof. Dr. Henning Meyerhenke 1 Henning Meyerhenke: KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Vorlesung 4 Programm des
368 4 Algorithmen und Datenstrukturen
Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist
2 Lösungen "Peptide de novo Sequencing"
Lösungen "Peptide de novo Sequencing". Algorithm : PeptideSequencingOnlySux Input: a spectrum M with array of masses M = {m, m,, m n }, Σ, µ : Σ R >0 Output: the peptide string of the spectrum begin peptide
Quadtrees und Meshing
Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 24.06.2014 Motivation: Meshing von Platinenlayouts Zur Simulation der Hitzeentwicklung
Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem
Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem Andreas Moser Dietmar Ebner Christian Schauer Markus Bauer 9. Dezember 2003 1 Einführung Der in der Vorlesung gezeigte Algorithmus für das Steiner
4 Greedy-Algorithmen (gierige Algorithmen)
Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen werden oft für die exakte oder approximative Lösung von Optimierungsproblemen verwendet. Typischerweise konstruiert ein Greedy-Algorithmus eine
8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)
Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld
Perlkurs WS 14/15 Reguläre Ausdrücke I
Perlkurs WS 14/15 Reguläre Ausdrücke I 1 Reguläre Ausdrücke Reguläre Ausdrücke mächtigtes Werkzeug von Perl, um nach Mustern (Gruppen von Zeichen) innerhalb von Text zu suchen z.b. in Protein- und DNA-Sequenzen
Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9
Informatik I 2 Übung 9 Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Quellcode Strukturieren Wenn alle Funktionen in einer Datei zusammengefasst sind wird es schnell unübersichtlich Mehrere
Konstruktion sehr großer Suffixbäume
Konstruktion sehr großer Suffixbäume Steffen Andre, Michael Höhndorf Institut für Informatik, Humboldt Universität Berlin Gliederung 1 Einleitung 1.1 Suffixbäume 1.2 Probleme mit Suffixbäumen 1.3 Lösungsansätze
Kap. 4.2: Binäre Suchbäume
Kap. 4.2: Binäre Suchbäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 11. VO DAP2 SS 2009 26. Mai 2009 1 Zusätzliche Lernraumbetreuung Morteza Monemizadeh:
17. Oktober Ubucon 2010, Universität Göttingen. Eine Einführung in Tcl. Dominik Wagenführ. Einleitung. Grundlagen. Strings.
Ubucon 2010, Universität Göttingen 17. Oktober 2010 Seite 1/40 Übersicht 1 2 3 4 5 6 7 Seite 2/40 Tcl: Tool Command Language [1] in den 1980er von John K. Ousterhout entwickelt Interpretersprache für verschiede
2. Lernen von Entscheidungsbäumen
2. Lernen von Entscheidungsbäumen Entscheidungsbäume 2. Lernen von Entscheidungsbäumen Gegeben sei eine Menge von Objekten, die durch Attribut/Wert- Paare beschrieben sind. Jedes Objekt kann einer Klasse
Der Alpha-Beta-Algorithmus
Der Alpha-Beta-Algorithmus Maria Hartmann 19. Mai 2017 1 Einführung Wir wollen für bestimmte Spiele algorithmisch die optimale Spielstrategie finden, also die Strategie, die für den betrachteten Spieler
Dr. Monika Meiler. Inhalt
Inhalt 5 Referenzdatentypen - Felder... 5-2 5.1 Eindimensionale Felder - Vektoren... 5-3 5.1.1 Vereinbarung... 5-3 5.1.2 Referenzen sind keine Felder... 5-4 5.1.3 Kopieren eindimensionaler Felder... 5-6
Algorithmen und Datenstrukturen 2
Algorithmen und Datenstrukturen 2 Sommersemester 2006 6. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik [email protected] Datenkomprimierung Bei den meisten bisher betrachteten
Datenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen
Informatik II. PVK Part1 Severin Wischmann [email protected] n.ethz.ch/~wiseveri
Informatik II PVK Part1 Severin Wischmann [email protected] n.ethz.ch/~wiseveri KAUM JAVA Kaum Java Viel Zeit wird für Java-spezifisches Wissen benützt Wenig wichtig für Prüfung Letztjähriger Assistent
Tutoraufgabe 1 (2 3 4 Bäume):
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Übung F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe ( Bäume): a) Löschen Sie den Wert aus dem folgenden Baum und geben Sie den dabei
Kurs 1613 Einführung in die imperative Programmierung Musterlösung zur Nachklausur am
1 Aufgabe 1 Analysiert man das Verfahren anhand des angegebenen Beispiels, ist schnell zu erkennen, dass das erste Element von infeld2 nach outfeld an Index 2 kopiert wird, das zweite den Index 4 bekommt,
Datenstruktur, die viele Operationen dynamischer Mengen unterstützt
Algorithmen und Datenstrukturen 265 10 Binäre Suchbäume Suchbäume Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Kann als Wörterbuch, aber auch zu mehr eingesetzt werden (Prioritätsschlange)
DAP2 Praktikum Blatt 1
Fakultät für Informatik Lehrstuhl 11 / Algorithm Engineering Prof. Dr. Petra Mutzel, Carsten Gutwenger Sommersemester 2009 DAP2 Praktikum Blatt 1 Ausgabe: 21. April Abgabe: 22. 24. April Kurzaufgabe 1.1
