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

Größe: px
Ab Seite anzeigen:

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

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. 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.

Mehr

4.9.7 Konstruktion der Suffixbäume

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

Mehr

PATRICIA Tree. New Indices for Text: PAT Trees and PAT Arrays. PAT-TREE - Einführung. Inhalt. PAT-Tree Definition

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

Mehr

Tutorium Algorithmen & Datenstrukturen

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

Mehr

11.1 Grundlagen - Denitionen

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

Mehr

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 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:

Mehr

Inverted Files for Text Search Engines

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

Mehr

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

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

Mehr

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

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

Mehr

Bioinformatik. Zeichenketten und Stringalgorithmen. Ulf Leser Wissensmanagement in der. Bioinformatik

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

Mehr

Algorithmen und Datenstrukturen (für ET/IT) Programm heute. Sommersemester Dr. Tobias Lasser

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

Mehr

13. Bäume: effektives Suchen und Sortieren

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

Mehr

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 2 Woche: Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung 24/ 44 Zwei Beispiele a 0

Mehr

Bioinformatik. Suffixbäume auf Sekundärspeicher. Ulf Leser Wissensmanagement in der. Bioinformatik

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

Mehr

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany [email protected]. Stammbaum. Stammbaum. Stammbaum

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. 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

Mehr

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

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

Mehr

13. Binäre Suchbäume

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),

Mehr

14. Rot-Schwarz-Bäume

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).

Mehr

Informatik-Seminar Thema 6: Bäume

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

Mehr

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

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

Mehr

! 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 - ! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck

Mehr

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:

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

Mehr

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

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

Mehr

Verkettete Datenstrukturen: Bäume

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

Mehr

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

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)

Mehr

Programmierung und Modellierung

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:

Mehr

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

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

Mehr

7. Sortieren Lernziele. 7. Sortieren

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

Mehr

Gierige Algorithmen Interval Scheduling

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:

Mehr

Informatik II, SS 2014

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:

Mehr

Kapitel 9 Suchalgorithmen

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

Mehr

Algorithmische Bioinformatik

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

Mehr

Datenstrukturen und Algorithmen

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

Mehr

4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum

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.

Mehr

Kapitel 12: Schnelles Bestimmen der Frequent Itemsets

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

Mehr

Algorithmische Bioinformatik

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

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

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.

Mehr

1. Aufgabe (6 Punkte): Java-Programmierung (Arrays)

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

Mehr

Klausur Algorithmen und Datenstrukturen

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

Mehr

Übrigens: um den Algorithmus im Unterricht einzuführen, sind keine Formeln notwendig! Warum reicht die normale ASCII-Codierung nicht aus?

Ü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"

Mehr

11. Elementare Datenstrukturen

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

Mehr

Datenbanken: Indexe. Motivation und Konzepte

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

Mehr

Bäume, Suchbäume und Hash-Tabellen

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

Mehr

Kurs 1613 Einführung in die imperative Programmierung

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

Mehr

Es sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften:

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

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

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

Mehr

B / B* - Bäume. Guido Hildebrandt Seminar Datenbanksysteme

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

Mehr

Einführung in die Informatik 2

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.

Mehr

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

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

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1

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

Mehr

Referat zum Thema Huffman-Codes

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

Mehr

Dynamisches Huffman-Verfahren

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

Mehr

...imbeispiel: Die Konkatenation der Blätter des Ableitungsbaums t bezeichnen wir auch mit yield(t). liefert die Konkatenation: name int + int.

...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

Mehr

Punkt-in-Polygon-Suche Übersicht

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

Mehr

Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1

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

Mehr

Das Heiratsproblem. Definition Matching

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

Mehr

Effiziente Algorithmen Übung 2

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

Mehr

12. Hashing. Hashing einfache Methode um Wörtebücher zu implementieren, d.h. Hashing unterstützt die Operationen Search, Insert, Delete.

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

Mehr

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

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.

Mehr

Randomisierte Algorithmen 2. Erste Beispiele

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

Mehr

Abschnitt: Algorithmendesign und Laufzeitanalyse

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

Mehr

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

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

Mehr

Eigenschaften von Kompressionsverfahren

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

Mehr

Sortierte Folgen 250

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:

Mehr

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. 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:

Mehr

Textkompression: Burrows-Wheeler-Transformation

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

Mehr

Grundlagen: Algorithmen und Datenstrukturen

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

Mehr

Kombinatorische Optimierung

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

Mehr

368 4 Algorithmen und Datenstrukturen

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

Mehr

2 Lösungen "Peptide de novo Sequencing"

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

Mehr

Quadtrees und Meshing

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

Mehr

Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem

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

Mehr

4 Greedy-Algorithmen (gierige Algorithmen)

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

Mehr

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)

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

Mehr

Perlkurs WS 14/15 Reguläre Ausdrücke I

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

Mehr

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9

Ü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

Mehr

Konstruktion sehr großer Suffixbäume

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

Mehr

Kap. 4.2: Binäre Suchbäume

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:

Mehr

17. Oktober Ubucon 2010, Universität Göttingen. Eine Einführung in Tcl. Dominik Wagenführ. Einleitung. Grundlagen. Strings.

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

Mehr

2. Lernen von Entscheidungsbäumen

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

Mehr

Der Alpha-Beta-Algorithmus

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

Mehr

Dr. Monika Meiler. Inhalt

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

Mehr

Algorithmen und Datenstrukturen 2

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

Mehr

Datenstrukturen & Algorithmen

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

Mehr

Informatik II. PVK Part1 Severin Wischmann [email protected] n.ethz.ch/~wiseveri

Informatik II. PVK Part1 Severin Wischmann wiseveri@student.ethz.ch 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

Mehr

Tutoraufgabe 1 (2 3 4 Bäume):

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

Mehr

Kurs 1613 Einführung in die imperative Programmierung Musterlösung zur Nachklausur am

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,

Mehr

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

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)

Mehr

DAP2 Praktikum Blatt 1

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

Mehr