Zeichenketten. Hallo Welt für Fortgeschrittene Daniel Wust Informatik 2 Programmiersysteme Martensstraße Erlangen

Save this PDF as:
 WORD  PNG  TXT  JPG

Größe: px
Ab Seite anzeigen:

Download "Zeichenketten. Hallo Welt für Fortgeschrittene Daniel Wust Informatik 2 Programmiersysteme Martensstraße Erlangen"

Transkript

1 Zeichenketten Hallo Welt für Fortgeschrittene Daniel Wust Informatik 2 Programmiersysteme Martensstraße Erlangen

2 Inhalt Zeichenketten ASCII Regionsspezifische Erweiterungen Unicode Speicherung Suchalgorithmen Naive Suche Knuth-Morris-Pratt-Algorithmus Bayer-Moore-Algorithmus Rabin-Karp-Algorithmus Manacher-Algorithmus Trie Bibliotheksfunktionen Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 2

3 Zeichenketten Hallo Welt Здравствуй, мир ハローワールド Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 3

4 Zeichenketten Zeichenketten repräsentieren eine Folge von Zeichen aus einem definierten Zeichensatz Σ sei eine nicht-leere, endliche Menge Eine Zeichenkette über Σ ist eine endliche Folge von Elementen auf Σ Die Menge Σ heißt in diesem Zusammenhang Alphabet, die Elemente heißen Zeichen Die Anzahl der Folgeglieder heißt Länge der Zeichenkette Die leere Folge wird mit ε bezeichnet Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 4

5 Zeichenketten: ASCII Verschiedene Möglichkeiten zur Kodierung ASCII: American Standard Code for Information Interchange 1967 veröffentlicht Jedem Zeichen ein Bitmuster aus 7 Bit zugeordnet 2 7 = 128 verschiedene Zeichen Enthält sowohl druckbare Zeichen (z.b. lateinisches Alphabet, Ziffern) als auch nicht druckbare Steuerzeichen Problem: Darstellung landesspezifischer Schriftzeichen Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 5

6 Zeichenketten: Regionsspezifische Erweiterungen Verschiedene regions- und herstellerspezifische Erweiterungen des ASCII-Zeichensatzes (ISO-8859-X, Windows-1252, SJIS, Big5, EUC, usw.) 8 Bit oder mehrere Byte breite Codewörter zuverlässige Erkennung des Zeichensatzes schwierig Zeichensalat (Mojibake) Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 6

7 Zeichenketten: Unicode Internationaler, gemeinsamer Standard um langfristig jedes sinntragende Zeichen kodieren zu können Erste Version 1991 erschienen, jedoch zunächst keine große Verbreitung Aktuell Version 6.2 mit Zeichen Kritik: Han-Vereinheitlichung asiatischer Schriftzeichen Mehrere Verfahren zur Speicherung und Übertragung UTF Byte pro Zeichen UTF-16 2 oder 4 Byte pro Zeichen UTF-32 4 Byte pro Zeichen Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 7

8 Zeichenketten: Unicode Speicherung und Übertragung von Text meist in UTF-8 Java/.NET Framework nutzen UTF-16 für char- oder string- Datentypen C/C++ definiert in wchar.h den Datentyp wchar_t Meistens 2 Byte, genaue Spezifikation ist abhängig von der jeweiligen Implementierung eingeschränkte Portabilität Seit C/C gibt es die Datentypen char16_t und char32_t mit fester Länge. Alternative: Qt Framework! Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 8

9 Zeichenketten: Speicherung Null-terminiertes Array Zeichen werden sequentiell in einem Array gespeichert Ende wird durch Null-Character '\0' signalisiert Typisch in C/C++ Array mit Länge Zeichen werden sequentiell in einem Array gespeichert Länge der Zeichenkette wird am Anfang des Array gespeichert Intern in Java Verkettete Liste Jedem Zeichen wird ein Zeiger auf das nächste Zeichen hinzugefügt Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 9

10 Zeichenketten: Speicherung Aufwand Länge ermitteln Zugriff auf beliebiges Zeichen Einfügen und Löschen von Zeichen Null-terminiertes Array O(n) O(1) O(n) Array mit Länge O(1) O(1) O(n) Verkettete Liste O(n) O(n) O(1) Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 10

11 Suchalgorithmen Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 11

12 Suchalgorithmen Zwei Gruppen von Algorithmen String Matching: Suche nach exaktem Muster Pattern Matching: Suche nach ähnlichem Muster Zwei Problemstellungen Mehrere Texte nach einem vorgegebenen Muster durchsuchen Einen vorgegebenen Text nach mehreren Mustern durchsuchen Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 12

13 Suchalgorithmen: Naive Suche Suchfenster über den Text schieben Jede Position des Suchfensters mit dem darunterliegenden Text vergleichen Bei Übereinstimmung aller Zeichen wurde das Muster gefunden Bei Nichtübereinstimmung das Suchfenster um eine Stelle nach rechts verschieben Algorithmus endet, wenn der gesamte Text abgesucht wurde Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 13

14 Suchalgorithmen: Naive Suche i=0 s F A S S F A S T p F A S T j=0 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 14

15 Suchalgorithmen: Naive Suche i=0 s F A S S F A S T p F A S T j=0 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 15

16 Suchalgorithmen: Naive Suche i=1 s F A S S F A S T p F A S T j=1 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 16

17 Suchalgorithmen: Naive Suche i=2 s F A S S F A S T p F A S T j=2 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 17

18 Suchalgorithmen: Naive Suche i=3 s F A S S F A S T p F A S T j=3 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 18

19 Suchalgorithmen: Naive Suche i=1 s F A S S F A S T p F A S T j=0 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 19

20 Suchalgorithmen: Naive Suche i=1 s F A S S F A S T p F A S T j=0 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 20

21 Suchalgorithmen: Naive Suche i=2 s F A S S F A S T p F A S T j=0 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 21

22 Suchalgorithmen: Naive Suche i=2 s F A S S F A S T p F A S T j=0 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 22

23 Suchalgorithmen: Naive Suche i=3 s F A S S F A S T p F A S T j=0 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 23

24 Suchalgorithmen: Naive Suche i=3 s F A S S F A S T p F A S T j=0 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 24

25 Suchalgorithmen: Naive Suche i=4 s F A S S F A S T p F A S T j=0 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 25

26 Suchalgorithmen: Naive Suche i=4 s F A S S F A S T p F A S T j=0 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 26

27 Suchalgorithmen: Naive Suche i=5 s F A S S F A S T p F A S T j=1 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 27

28 Suchalgorithmen: Naive Suche i=6 s F A S S F A S T p F A S T j=2 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 28

29 Suchalgorithmen: Naive Suche i=7 s F A S S F A S T p F A S T gefunden j=3 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 29

30 Suchalgorithmen: Naive Suche Vorteile Einfach zu implementieren Kein zusätzlicher Speicheraufwand Keine Vorverarbeitung des Suchmusters nötig Nachteile Position im zu durchsuchenden Text muss zurückgesetzt werden Vorherige Vergleiche werden nicht weiterverwendet Im schlechtesten Fall Aufwand von O(n m) Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 30

31 Knuth-Morris-Pratt-Algorithmus Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 31

32 Suchalgorithmen: Knuth-Morris-Pratt-Algorithmus 1977 wird der Algorithmus von Donald Knuth, Ronald Pratt und James Morris veröffentlicht Ähnlicher Ansatz wie bei naiver Suche Jedoch zunächst das Muster analysieren und die gewonnen Ergebnisse über die Struktur in einem Array speichern Möglichkeit Suchfenster um mehr als eine Position weiterzuschieben Bereits verglichene Zeichen müssen nicht erneut überprüft werden Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 32

33 Suchalgorithmen: Knuth-Morris-Pratt-Algorithmus Bei Nichtübereinstimmung Muster so weit wie möglich schieben 0 i n-1 s w w a p w w b 0 j m-1 Schiebedistanz w w b 0 m-1 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 33

34 Suchalgorithmen: Knuth-Morris-Pratt-Algorithmus Um die Schiebedistanz zu berechnen Präfixtabelle nötig Eine Kopie des Musters an sich selbst vorbeischieben und nach Präfixen von sich selbst durchsuchen Ergebnis in Array der Länge m + 1 speichern Erstes Element mit 1 initialisiert Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 34

35 Suchalgorithmen: Knuth-Morris-Pratt-Algorithmus A B D A B C A j b[j] Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 35

36 Suchalgorithmen: Knuth-Morris-Pratt-Algorithmus A B D A B C A B j b[j] Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 36

37 Suchalgorithmen: Knuth-Morris-Pratt-Algorithmus A B D A B C A B D j b[j] Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 37

38 Suchalgorithmen: Knuth-Morris-Pratt-Algorithmus A B D A B C A B D A j b[j] Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 38

39 Suchalgorithmen: Knuth-Morris-Pratt-Algorithmus A B D A B C A B D A B j b[j] Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 39

40 Suchalgorithmen: Knuth-Morris-Pratt-Algorithmus A B D A B C A B D A B C j b[j] Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 40

41 Suchalgorithmen: Knuth-Morris-Pratt-Algorithmus i=0 s A B D A B D A B C A p A B D A B C j=0 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 41

42 Suchalgorithmen: Knuth-Morris-Pratt-Algorithmus i=4 s A B D A B D A B C A p A B D A B C j=4 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 42

43 Suchalgorithmen: Knuth-Morris-Pratt-Algorithmus i=5 s A B D A B D A B C A p A B D A B C j=5 Zeichen von Positionen 0-4 haben übereingestimmt An Position 5 keine Übereinstimmung Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 43

44 Suchalgorithmen: Knuth-Morris-Pratt-Algorithmus i=5 s A B D A B D A B C A p A B D A B C j=5 Muster um 3 Positionen weiterschieben Schiebedistanz j b[j] Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 44

45 Suchalgorithmen: Knuth-Morris-Pratt-Algorithmus i=5 s A B D A B D A B C A p A B D A B C j=2 Vergleich an Position 5 fortsetzen Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 45

46 Suchalgorithmen: Knuth-Morris-Pratt-Algorithmus i=8 s A B D A B D A B C A p A B D A B C gefunden j=5 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 46

47 Suchalgorithmen: Knuth-Morris-Pratt-Algorithmus Aufwand Aufwand Tabellenberechnung Speicheraufwand Suchphase Gesamt O(m) O(m) O(n) Worst Case: O(n + m) Average Case: O(n) Best Case: O(n) Vorteile garantiert lineare Laufzeit starke Verbesserung bei sich selbstwiederholenden Mustern Nachteile Vorbereitungsphase notwendig Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 47

48 Boyer-Moore-Algorithmus Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 48

49 Suchalgorithmen: Boyer-Moore-Algorithmus Im Gegensatz zur naiven Suche und zum KMP- Algorithmus wird das Muster von rechts nach links verglichen Bei Nichtübereinstimmung wird mit Hilfe zweier Strategien ermittelt, wie weit das Muster verschoben werden kann Bad-Character Anhand des ungleichen Zeichens Good-Suffix Anhand übereinstimmender Zeichen Bei unterschiedlichen Ergebnissen wird das Maximum der beiden Vorschläge gewählt Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 49

50 Suchalgorithmen: Boyer-Moore-Algorithmus Bad Character Muster von rechts nach links vergleichen Bei Nichtübereinstimmung ist Schiebedistanz abhängig davon, ob das Zeichen noch einmal im Muster vorkommt Kommt vor Muster bis zum am weitesten rechts liegenden Vorkommen des Zeichens verschieben Falls Verschiebung nach links vorgeschlagen, eine Position nach rechts verschieben Sonst Muster komplett nach rechts verschieben Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 50

51 Suchalgorithmen: Boyer-Moore-Algorithmus Bad Character B i t t e N i c h t F r u e h U m A c h t A c h t Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 51

52 Suchalgorithmen: Boyer-Moore-Algorithmus Bad Character B i t t e N i c h t F r u e h U m A c h t A c h t t kommt im Muster vor, jedoch rechts von der Nichtübereinstimmung eine Stelle nach rechts verschieben Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 52

53 Suchalgorithmen: Boyer-Moore-Algorithmus Bad Character B i t t e N i c h t F r u e h U m A c h t A c h t A c h t Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 53

54 Suchalgorithmen: Boyer-Moore-Algorithmus Bad Character B i t t e N i c h t F r u e h U m A c h t A c h t A c h t Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 54

55 Suchalgorithmen: Boyer-Moore-Algorithmus Bad Character B i t t e N i c h t F r u e h U m A c h t A c h t A c h t e kommt im Muster nicht vor komplett verschieben Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 55

56 Suchalgorithmen: Boyer-Moore-Algorithmus Bad Character B i t t e N i c h t F r u e h U m A c h t A c h t A c h t A c h t Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 56

57 Suchalgorithmen: Boyer-Moore-Algorithmus Bad Character B i t t e N i c h t F r u e h U m A c h t A c h t A c h t A c h t h kommt im Muster vor bis h verschieben Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 57

58 Suchalgorithmen: Boyer-Moore-Algorithmus Bad Character B i t t e N i c h t F r u e h U m A c h t A c h t A c h t A c h t A c h t Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 58

59 Suchalgorithmen: Boyer-Moore-Algorithmus Bad Character B i t t e N i c h t F r u e h U m A c h t A c h t A c h t A c h t A c h t i kommt im Muster nicht vor komplett verschieben Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 59

60 Suchalgorithmen: Boyer-Moore-Algorithmus Bad Character B i t t e N i c h t F r u e h U m A c h t A c h t A c h t A c h t A c h t A c h t Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 60

61 Suchalgorithmen: Boyer-Moore-Algorithmus Bad Character B i t t e N i c h t F r u e h U m A c h t A c h t A c h t A c h t A c h t A c h t e kommt im Muster nicht vor komplett verschieben Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 61

62 Suchalgorithmen: Boyer-Moore-Algorithmus Bad Character B i t t e N i c h t F r u e h U m A c h t A c h t A c h t A c h t A c h t A c h t A c h t Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 62

63 Suchalgorithmen: Boyer-Moore-Algorithmus Bad Character B i t t e N i c h t F r u e h U m A c h t A c h t A c h t A c h t A c h t A c h t A c h t A kommt im Muster vor bis A verschieben Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 63

64 Suchalgorithmen: Boyer-Moore-Algorithmus Bad Character B i t t e N i c h t F r u e h U m A c h t A c h t A c h t A c h t A c h t A c h t A c h t A c h t Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 64

65 Suchalgorithmen: Boyer-Moore-Algorithmus Bad Character B i t t e N i c h t F r u e h U m A c h t A c h t A c h t A c h t A c h t A c h t A c h t A c h t gefunden Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 65

66 Suchalgorithmen: Boyer-Moore-Algorithmus Bad Character Anhand der Sprungtabelle wird ermittelt, wie weit das Muster geschoben werden muss i char jmp G U T E N T A G U T E N * G Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 66

67 Suchalgorithmen: Boyer-Moore-Algorithmus Good Suffix Wie bei KMP, jedoch Vergleich von rechts nach links mit Suffix statt Präfix Schiebedistanz abhängig davon, ob das Muster noch einmal im Text vorkommt Kommt vor: Muster bis zum am weitesten rechts liegenden Vorkommen des Suffix verschieben Sonst: Muster komplett nach rechts verschieben Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 67

68 Suchalgorithmen: Boyer-Moore-Algorithmus Good Suffix Bei Nichtübereinstimmung Muster bis zum am weitesten rechts stehenden Suffix verschieben 0 i n-1 s a w p w b w 0 j m-1 Schiebedistanz w b w 0 m-1 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 68

69 Suchalgorithmen: Boyer-Moore-Algorithmus Good Suffix A A A B A C D A C B B A C D A C Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 69

70 Suchalgorithmen: Boyer-Moore-Algorithmus Good Suffix A A A B A C D A C B B A C D A C Bis zum am weitesten rechts liegenden Suffix verschieben Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 70

71 Suchalgorithmen: Boyer-Moore-Algorithmus Good Suffix A A A B A C D A C B B A C D A C Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 71

72 Suchalgorithmen: Boyer-Moore-Algorithmus Good Suffix A A A B A C D A C B B A C D A C gefunden Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 72

73 Suchalgorithmen: Boyer-Moore-Algorithmus Aufwand Aufwand Tabellenberechnung Speicheraufwand Gesamt O(m) O(m) Worst Case: O(n m) Average Case: O(n) Best Case: O(n/m) Vorteile In der Praxis schnellster String-Matching Algorithmus Geeignet für Texte mit vielen Symbolen Oft Verschiebungen um die gesamte Musterlänge möglich Nachteile Im Worst-Case-Fall schlechter als KMP Bei kleinem Alphabet nur geringe Schiebedistanzen Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 73

74 Rabin-Karp-Algorithmus Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 74

75 Suchalgorithmen: Rabin-Karp-Algorithmus Ähnelt der naiven Suche dahingehend, dass das Muster schrittweise mit jedem Textfenster verglichen wird Statt das Muster zeichenweise mit dem Text zu vergleichen, werden Hashwerte mit der Länge des Musters verglichen bei Übereinstimmung der Hashwerte ist finale Prüfung auf Zeichenebene erforderlich, da Kollisionen möglich Möglichkeit mehrere Muster effizient zu überprüfen Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 75

76 Suchalgorithmen: Rabin-Karp-Algorithmus p s Problem: Effiziente Berechnung der Hashwerte Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 76

77 Suchalgorithmen: Rabin-Karp-Algorithmus Rolling Hash: Hashwert werden sukzessive unter Zuhilfenahme von vorherigem Hashwert und aktuellem Zeichen berechnet Dabei wird die Zeichenkette als eine Zahl zur Basis D betrachtet und in eine Dezimalzahl k umgewandelt Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 77

78 Suchalgorithmen: Rabin-Karp-Algorithmus Der Schlüssel eines Textes T an der Stelle i lässt sich mit dem Horner-Schema berechnen: k(t) i = T i D m 1 + T i + 1 D m T i + m 1 Die Stelle i+1 berechnet sich dann wie folgt: k T i+1 = (k i+1 T i D m 1 ) D + T[i + m] Problem: Die Schlüssel werden sehr groß Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 78

79 Suchalgorithmen: Rabin-Karp-Algorithmus Der Hashwert berechnet sich aus dem Schlüssel und einer möglichst großen Primzahl q: h T = k T mod q Distributivgesetz bei Rechnung mit Modulo a mod q + b mod q = a + b mod q a mod q b mod q = a b mod q Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 79

80 Suchalgorithmen: Rabin-Karp-Algorithmus p mod 13 D := 10 q := 13 s mod ( ) (mod 13) (7 3 3) (mod 13) (mod 13) 8 (mod 13) Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 80

81 Suchalgorithmen: Rabin-Karp-Algorithmus Aufwand Aufwand Vorbereitung Gesamt O(m) Worst Case: O(n m) Average Case: O(n) Best Case: O(n) Vorteile Geeignet für Suche nach mehreren Wörtern in einem Text Nachteile Schlechtes Worst-Case-Verhalten Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 81

82 Suchalgorithmen: Zusammenfassung Knuth-Morris-Pratt-Algorithmus: Garantiert lineare Laufzeit Gute Eignung bei kleinem Alphabet (z.b. DNA-Sequenzen) Boyer-Moore-Algorithmus: Gute Eignung bei großem Alphabet (z.b. natürliche Sprache) Häufige Anwendung in der Praxis, trotz schlechtem Worst- Case-Verhalten Rabin-Karp-Algorithmus: Suche nach mehreren Mustern in einem Text Nur so gut wie seine Hashfunktion Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 82

83 Was gibt es sonst noch? Mit Hilfe von neuronalen Netzen Suche in O 1 Theoretisch mit FPGAs realisierbar O(n m) Prozessoren" A B D C B A B A B D C B A B D A Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 83

84 Manacher-Algorithmus Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 84

85 Manacher-Algorithmus Algorithmus zur Ermittlung aller Palindrome, als auch des längsten Palindroms in einem Text Linearer Zeitaufwand Strategie Zunächst '#' zwischen Zeichen setzen Palindrom beidseitig so weit wie möglich erweitern Am rechten Rand nach neuem Palindrom suchen, welches das alte beinhaltet Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 85

86 Manacher-Algorithmus 1. R := 0 Bestätigter Radius um aktuelles Zentrum 2. C := 0 Aktuelles Zentrum 3. for i := 0 to text 4. i_mirror := (2 * C) i Position von i, gespiegelt am Zentrum 5. if (R > i) Position liegt innerhalb des Radius: 6. P[i] := min(r-i, P[i_mirror]) Minimum von Abstand zum Radius/Länge des Palindroms an gespiegelter Position 7. else Position liegt außerhalb des Radius: 8. P[i] := 0 9. while (text[i P[i]] == text[i 1 P[i]]) Palindrom sukzessive erweitern 10. P[i] := P[i] + 1 bereits bestätigte Positionen werden übersprungen 11. if (i + P[i] > R) 12. C := i 13. R := i + P[I] i' i # G # A # L # A # G # E # Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 86 C R

87 Manacher-Algorithmus Vorbereitung: Zunächst '#' zwischen Zeichen setzen G A L A G E R R E G A L # G # A # L # A # G # E # R # R # E # G # A # L # Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 87

88 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 88

89 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # 0 C R (R > i) p[i] := 0 Nicht weiter expandierbar (i + p[i] > R) C und R unverändert Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 89

90 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # 0 C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 90

91 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # 0 0 C R (R > i) p[i] := 0 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 91

92 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # 0 1 C R Expandierbar p[i] inkrementieren Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 92

93 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # 0 1 C R (i + p[i] > R) C := i R := i + p[i] Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 93

94 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # 0 1 C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 94

95 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R (R > i) p[i] := 0 Nicht weiter expandierbar (i + p[i] > R) C und R unverändert Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 95

96 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 96

97 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R (R > i) p[i] := 0 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 97

98 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Expandierbar p[i] inkrementieren Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 98

99 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R (i + p[i] > R) C := i R := i + p[i] Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 99

100 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 100

101 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R (R > i) p[i] := 0 Nicht weiter expandierbar (i + p[i] > R) C und R unverändert Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 101

102 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 102

103 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R (R > i) p[i] := 0 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 103

104 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Expandierbar p[i] inkrementieren Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 104

105 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R (i + p[i] > R) C := i R := i + p[i] Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 105

106 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 106

107 Manacher-Algorithmus i' i # G # A # L # A # G # E # R # R # E # G # A # L # C R (R > i) p[i] := min(p[i'], R-i) Nicht weiter expandierbar (i + p[i] > R) C und R unverändert Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 107

108 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 108

109 Manacher-Algorithmus i' i # G # A # L # A # G # E # R # R # E # G # A # L # C R (R > i) p[i] := min(p[i'], R-i) Nicht weiter expandierbar (i + p[i] > R) C und R unverändert Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 109

110 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 110

111 Manacher-Algorithmus i' i # G # A # L # A # G # E # R # R # E # G # A # L # C R (R > i) p[i] := min(p[i'], R-i) Nicht weiter expandierbar (i + p[i] > R) C und R unverändert Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 111

112 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 112

113 Manacher-Algorithmus i' i # G # A # L # A # G # E # R # R # E # G # A # L # C R (R > i) p[i] := min(p[i'], R-i) Nicht weiter expandierbar (i + p[i] > R) C und R unverändert Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 113

114 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 114

115 Manacher-Algorithmus i' i # G # A # L # A # G # E # R # R # E # G # A # L # C R (R > i) p[i] := min(p[i'], R-i) Nicht weiter expandierbar (i + p[i] > R) C und R unverändert Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 115

116 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 116

117 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R (R > i) p[i] := 0 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 117

118 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Expandierbar p[i] inkrementieren Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 118

119 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R (i + p[i] > R) C := i R := i + p[i] Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 119

120 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 120

121 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R (R > i) p[i] := 0 Nicht weiter expandierbar (i + p[i] > R) C und R unverändert Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 121

122 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 122

123 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R (R > i) p[i] := 0 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 123

124 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Expandierbar p[i] inkrementieren Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 124

125 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R (i + p[i] > R) C := i R := i + p[i] Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 125

126 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 126

127 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R (R > i) p[i] := 0 Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 127

128 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Expandierbar p[i] inkrementieren Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 128

129 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R (i + p[i] > R) C := i R := i + p[i] Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 129

130 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 130

131 Manacher-Algorithmus i' i # G # A # L # A # G # E # R # R # E # G # A # L # C R (R > i) p[i] := min(p[i'], R-i) Nicht weiter expandierbar (i + p[i] > R) C und R unverändert Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 131

132 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 132

133 Manacher-Algorithmus i' i # G # A # L # A # G # E # R # R # E # G # A # L # C R (R > i) p[i] := min(p[i'], R-i) Nicht weiter expandierbar (i + p[i] > R) C und R unverändert Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 133

134 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 134

135 Manacher-Algorithmus i' i # G # A # L # A # G # E # R # R # E # G # A # L # C R (R > i) p[i] := min(p[i'], R-i) Nicht weiter expandierbar (i + p[i] > R) C und R unverändert Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 135

136 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 136

137 Manacher-Algorithmus i' i # G # A # L # A # G # E # R # R # E # G # A # L # C R (R > i) p[i] := min(p[i'], R-i) Nicht weiter expandierbar (i + p[i] > R) C und R unverändert Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 137

138 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 138

139 Manacher-Algorithmus i' i # G # A # L # A # G # E # R # R # E # G # A # L # C R (R > i) p[i] := min(p[i'], R-i) Nicht weiter expandierbar (i + p[i] > R) C und R unverändert Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 139

140 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 140

141 Manacher-Algorithmus i' i # G # A # L # A # G # E # R # R # E # G # A # L # C R (R > i) p[i] := min(p[i'], R-i) Nicht weiter expandierbar (i + p[i] > R) C und R unverändert Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 141

142 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 142

143 Manacher-Algorithmus i' i # G # A # L # A # G # E # R # R # E # G # A # L # C R (R > i) p[i] := min(p[i'], R-i) Nicht weiter expandierbar (i + p[i] > R) C und R unverändert Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 143

144 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 144

145 Manacher-Algorithmus i' i # G # A # L # A # G # E # R # R # E # G # A # L # C R (R > i) p[i] := min(p[i'], R-i) Nicht weiter expandierbar (i + p[i] > R) C und R unverändert Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 145

146 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 146

147 Manacher-Algorithmus i' i # G # A # L # A # G # E # R # R # E # G # A # L # C R (R > i) p[i] := min(p[i'], R-i) Nicht weiter expandierbar (i + p[i] > R) C und R unverändert Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 147

148 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 148

149 Manacher-Algorithmus i' i # G # A # L # A # G # E # R # R # E # G # A # L # C R (R > i) p[i] := min(p[i'], R-i) Nicht weiter expandierbar (i + p[i] > R) C und R unverändert Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 149

150 Manacher-Algorithmus i # G # A # L # A # G # E # R # R # E # G # A # L # C R p[i] nach größtem Wert durchsuchen um größtes Palindrom zu finden Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 150

151 Manacher-Algorithmus Theoretische Bedeutung Suche nach Palindromen in der Molekulargenetik erfordert Algorithmus, der mit Lücken umgehen kann Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 151

152 Trie Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 152

153 Trie Die Bezeichnung Trie [ˈtriː] leitet sich sowohl von retrieval (engl. Auffindung, Wiederfindung) als auch vom Wort tree ab Baumstruktur zum Speichern von Wörtern Eignet sich dazu effizient nach mehreren Zeichenketten zu suchen Nutzung z.b. bei Autovervollständigungssystemen Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 153

154 Trie Aufbau Kante Zeichen Blatt Terminalsymbol Knoten Zeichenkette Pfad von Wurzel zum Blatt Schlüssel Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 154

155 Trie Kann als Patricia-Trie (Practical Algorithm to Retrieve Information Coded in Alphanumeric) noch kompakter dargestellt werden Zeichen, bei denen keine Verzweigung entsteht, werden übersprungen und an einer Kante zusammengefasst Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 155

156 Bibliotheksfunktionen Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 156

157 Funktionen C Suche: char *strstr (const char *haystack, const char *needle) Länge: size_t strlen(const char *s) C++ Suche: size_t string::find(string str) Länge: size_t string::length() Boost Boyer-Moore-Algorithmus Boyer-Moore-Horspool-Algorithmus Knuth-Morris-Pratt-Algorithmus Java Suche: int String.indexOf(String str) Länge: int String.length() Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 157

158 Funktionen Zeichen Text 37 Zeichen Muster Zeichen Alphabet Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 158

159 Fazit Suchalgorithmus ist abhängig vom Anwendungsfall Einfachsuche Mehrfachsuche Kleiner Text Großer Text Kleines Suchalphabet Großes Suchalphabet Bibliotheksfunktionen sind bei kurzen Texten oft schneller als selbstimplementierte Funktionen! Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 159

160 Quellen Hallo-Welt-Vorlesungsfolien (2006, 2007, 2011) Morris Pratt_algorithm Moore_string_search_algorithm Karp_algorithm Abgerufen am IEEE Transactions on Systems, Man, and Cybernetics Vol. 22, No. 2, 1992: Yoshiyasu Takefuji, Toshimitsu Tanaka, and Kuo Chun Lee - A Parallel String Search Algorithm Hallo Welt für Fortgeschrittene Zeichenketten Daniel Wust Folie 160

Zeichenketten. Michael Fularczyk Michael Fularczyk Zeichenketten / 41

Zeichenketten. Michael Fularczyk Michael Fularczyk Zeichenketten / 41 Zeichenketten Michael Fularczyk 17.05.2011 Michael Fularczyk Zeichenketten 17.05.2011 1 / 41 Inhalt Zeichenketten Zeichensätze Darstellung Suchverfahren naive Stringsuche Knuth-Morris-Pratt Boyer-Moore

Mehr

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

Zeichenketten. 29. April 2015 Benedikt Lorch. Benedikt Lorch Zeichenketten April Vorlage Zeichenketten 29. April 2015 Benedikt Lorch Benedikt Lorch Zeichenketten 17. 29. April 2015 1 Motivation String Matching in the DNA Alphabet 1 Σ DNA = {A, G, C, T} DNA Text: 1 982 672 Zeichen Suchstring:

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 20 (13.7.2016) String Matching (Textsuche) Algorithmen und Komplexität Textsuche / String Matching Gegeben: Zwei Zeichenketten (Strings)

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Teil 4 Suchen in Texten Version vom: 15. November 2016 1 / 39 Vorlesung 8 15. November

Mehr

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

Algorithmen und Datenstrukturen II. Suchen in Texten. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München Algorithmen und Datenstrukturen II Suchen in Texten Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 27.03.2018 06:32 Inhaltsverzeichnis Ein Text.......................................

Mehr

Hallo Welt für Fortgeschrittene

Hallo Welt für Fortgeschrittene Hallo Welt für Fortgeschrittene Zeichenketten von Christopher Saloman Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Übersicht 1. Was sind Zeichenketten und wofür braucht man sie? 2. Suchen

Mehr

Algorithmische Bioinformatik 1

Algorithmische Bioinformatik 1 Algorithmische Bioinformatik 1 Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2009 Übersicht Algorithmen

Mehr

Effiziente Algorithmen 2

Effiziente Algorithmen 2 Effiziente Algorithmen 2 Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2009 Übersicht Algorithmen

Mehr

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

Suchen in Texten. Naives Suchen Verfahren von Knuth-Morris-Pratt Verfahren von Boyer-Moore Ähnlichkeitssuchen Editierdistanz Suchen in Texten Naives Suchen Verfahren von Knuth-Morris-Pratt Verfahren von Boyer-Moore Ähnlichkeitssuchen Editierdistanz Textsuche Gegeben ist ein Zeichensatz (Alphabet) Σ. Für einen Text T Σ n und

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

ADS: Algorithmen und Datenstrukturen 1

ADS: Algorithmen und Datenstrukturen 1 ADS: Algorithmen und Datenstrukturen 1 Teil 12 Uwe Quasthoff Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 16. Januar 2018 [Letzte Aktualisierung: 15/01/2018, 15:02]

Mehr

Boyer Moore Algorithmus

Boyer Moore Algorithmus LMU, CIS, SoSe 2006 Veranstaltung: Programmierung von Stringmatchingalgorithmen in C Kursleiter: Max Hadersbeck Referenten: Galina Hinova Stefan Partusch Andreas Neumann Die Erfinder J Strother Moore J.

Mehr

Praktikum Algorithmische Anwendungen WS 2006/07 Ausarbeitung: Schnelle Stringsuchalgorithmen Boyer-Moore und Knuth-Morris-Pratt

Praktikum Algorithmische Anwendungen WS 2006/07 Ausarbeitung: Schnelle Stringsuchalgorithmen Boyer-Moore und Knuth-Morris-Pratt Praktikum Algorithmische Anwendungen WS 2006/07 Ausarbeitung: Schnelle Stringsuchalgorithmen Boyer-Moore und Knuth-Morris-Pratt Team A Rot Daniel Baldes (Nr. 11041002, ai688@gm.fh-koeln.de) Holger Pontius

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens 1 Suchen Bisher: Sequentielle Suche Binäre Suche Interpolationssuche Jetzt: Suchen in Zeichenfolgen 2 1 Suchen in Zeichenfolgen Das Problem:

Mehr

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

8.4 Suffixbäume. Anwendungen: Information Retrieval, Bioinformatik (Suche in Sequenzen) Veranschaulichung: DNA-Sequenzen 8.4 Suffixbäume Ziel: Datenstruktur, die effiziente Operationen auf (langen) Zeichenketten unterstützt: - Suche Teilzeichenkette (Substring) - Präfix - längste sich wiederholende Zeichenkette -... Anwendungen:

Mehr

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

Universität Bremen. Textsuche. Thomas Röfer. Naive Suche Verfahren von Knuth-Morris-Pratt Verfahren von Boyer-Moore Ähnlichkeitssuche Editierdistanz Textsuche Thomas Röfer Naive Suche Verfahren von Knuth-Morris-Pratt Verfahren von Boyer-Moore Ähnlichkeitssuche Editierdistanz Rückblick Graphenalgorithmen Scan-Line-Prinzip Adjazenzmatrix Adjazenzlisten

Mehr

String - Matching. Kapitel Definition

String - Matching. Kapitel Definition Kapitel 1 String - Matching 1.1 Definition String - Matching ( übersetzt in etwa Zeichenkettenanpassung ) ist die Suche eines Musters ( Pattern ) in einem Text. Es findet beispielsweise Anwendung bei der

Mehr

2.2 Der Algorithmus von Knuth, Morris und Pratt

2.2 Der Algorithmus von Knuth, Morris und Pratt Suchen in Texten 2.1 Grundlagen Ein Alphabet ist eine endliche Menge von Symbolen. Bsp.: Σ a, b, c,..., z, Σ 0, 1, Σ A, C, G, T. Wörter über Σ sind endliche Folgen von Symbolen aus Σ. Wörter werden manchmal

Mehr

Zeichenketten. Hauptseminar Hallo Welt! für Fortgeschrittene. SS 2006 10. Mai 2006 Tobias Hager. Tobias.Hager@e-technik.stud.uni-erlangen.

Zeichenketten. Hauptseminar Hallo Welt! für Fortgeschrittene. SS 2006 10. Mai 2006 Tobias Hager. Tobias.Hager@e-technik.stud.uni-erlangen. Zeichenketten Hauptseminar Hallo Welt! für Fortgeschrittene SS 2006 10. Mai 2006 Tobias.Hager@e-technik.stud.uni-erlangen.de Friedrich-Alexander Universität Erlangen-Nürnberg Gliederung 2 1. Motivation

Mehr

Mathematisches Praktikum - SoSe 2015

Mathematisches Praktikum - SoSe 2015 Mathematisches Praktikum - SoSe 2015 Prof. Dr. Wolfgang Dahmen Felix Gruber, Igor Voulis Aufgabe 4 Bearbeitungszeit: drei Wochen (bis Freitag, 5. Juni 2015) Mathematischer Hintergrund: String-Matching-Algorithmen,

Mehr

Algorithmen auf Zeichenketten

Algorithmen auf Zeichenketten Algorithmen auf Zeichenketten Rabin-Karp Algorithmus Christoph Hermes hermes@hausmilbe.de Zeichenketten: Rabin-Karp Algorithmus p. 1/19 Ausblick auf den Vortrag theoretische Grundlagen... Zeichenketten:

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 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00 Uhr, o.n.v.

Mehr

Mathematisches Praktikum - SoSe 2014

Mathematisches Praktikum - SoSe 2014 Mathematisches Praktikum - SoSe 2014 Prof. Dr. Wolfgang Dahmen Felix Gruber, M. Sc., Christian Löbbert, M. Sc., Yuanjun Zhang, M. Sc., Klaus Kaiser, M. Sc. Aufgabe 3 Bearbeitungszeit: zwei Wochen (bis

Mehr

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen II 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,

Mehr

Algorithmen zur exakten Suche in Texten

Algorithmen zur exakten Suche in Texten Kapitel 4 Algorithmen zur exakten Suche in Texten In diesem Kapitel wird ein Problem aus der Sequenzanalyse näher betrachtet, die exakte Textsuche: Gegeben ein Text und ein Muster, finde alle Vorkommen

Mehr

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen II Algorithmen und Datenstrukturen II AG Praktische Informatik Technische Fakultät Vorlesung Sommer 2009 Teil I Algorithmen zur exakten Suche in Texten Die Klasse String Zeichenketten sind in Java Objekte.

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Kap. 19: Suffixbäume Faculty of Technology robert@techfak.uni-bielefeld.de Vorlesung, U. Bielefeld, Sommer 2011 Bekannte Verfahren zur exakten Suche in Zeichenreihen Exakte

Mehr

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

TU München. Hauptseminar: WS 2002 / Einführung in Suffix - Bäume TU München Hauptseminar: WS 2002 / 2003 Einführung in Suffix - Bäume Bearbeiterin: Shasha Meng Betreuerin: Barbara König Inhalt 1. Einleitung 1.1 Motivation 1.2 Eine kurze Geschichte 2. Tries 2.1 Basisdefinition

Mehr

Proseminar String Matching

Proseminar String Matching Proseminar Textsuche Proseminar String Matching PD Dr. habil. Hanjo Täubig Lehrstuhl für Theoretische Informatik (Prof. Dr. Susanne Albers) Institut für Informatik Technische Universität München Wintersemester

Mehr

Algorithmische Bioinformatik 1

Algorithmische Bioinformatik 1 Algorithmische Bioinformatik 1 Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2009 Übersicht Algorithmen

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2006 8. Vorlesung Peter Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Suche in Texten Einführung Suche in dynamischen

Mehr

Algorithmische Bioinformatik 1

Algorithmische Bioinformatik 1 Algorithmische Bioinformatik 1 Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2009 Übersicht Algorithmen

Mehr

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

Kapitel 2. Suche nach endlich vielen Wörtern. R. Stiebe: Textalgorithmen, Winter 2005/06 113 Kapitel 2 Suche nach endlich vielen Wörtern R. Stiebe: Textalgorithmen, Winter 2005/06 113 Übersicht Aufgabenstellung Gegeben: Text T und eine endliche Menge von Wörtern P = {P 1,..., P r }; Gesucht: alle

Mehr

Teil VII. Hashverfahren

Teil VII. Hashverfahren Teil VII Hashverfahren Überblick 1 Hashverfahren: Prinzip 2 Hashfunktionen 3 Kollisionsstrategien 4 Aufwand 5 Hashen in Java Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 1 Hashverfahren:

Mehr

1.8 Shift-And-Algorithmus

1.8 Shift-And-Algorithmus .8 Shift-And-Algorithmus nutzt durch Bitoperationen mögliche Parallelisierung Theoretischer Hintergrund: Nichtdeterministischer endlicher Automat Laufzeit: Θ(n), falls die Länge des Suchwortes nicht größer

Mehr

Einführung in die Programmiertechnik

Einführung in die Programmiertechnik Einführung in die Programmiertechnik Darstellung von Text Plain Text Abstraktion: Text wird durch eine Folge von Symbolen (Buchstaben, Zahlen, Interpunktion) dargestellt Verzicht auf Informationen über

Mehr

Projektdokumentation String-Searching KMP-Algorithmus Boyer-Moore-Algorithmus

Projektdokumentation String-Searching KMP-Algorithmus Boyer-Moore-Algorithmus Algorithmische Anwendungen Wintersemester 2005/06 Projektdokumentation String-Searching KMP-Algorithmus Boyer-Moore-Algorithmus Stand: 25.01.2006 Gruppe: A-Lila Hicham Settah Dieter Galinowski Inhalt:

Mehr

Berühmte Informatiker

Berühmte Informatiker Berühmte Informatiker Teil 10: J. Backus & D. E. Knuth 1924-1938- * 03.12.1924 in Philadelphia John Backus Vorzeitiger Abbruch des Studiums der Chemie (1942) und der Medizin (1945) Während der Arbeit als

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2006 9. Vorlesung Peter Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Invertierte Listen Nutzung vor allem zur Textsuche

Mehr

String-Matching-Algorithmen. von. Thomas Kramer

String-Matching-Algorithmen. von. Thomas Kramer String-Matching-Algorithmen von Thomas Kramer 20.11.2011 1. Problemstellung und Allgemeines String-Matching-Algorithmen sind Algorithmen, die das Finden von Textfragmenten innerhalb einer Zeichenkette

Mehr

Grundlagen Theoretischer Informatik I SoSe 2011 in Trier. Henning Fernau Universität Trier

Grundlagen Theoretischer Informatik I SoSe 2011 in Trier. Henning Fernau Universität Trier Grundlagen Theoretischer Informatik I SoSe 2011 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1 Grundlagen Theoretischer Informatik I Gesamtübersicht Organisatorisches; Einführung Logik

Mehr

Indexieren und Suchen

Indexieren und Suchen Universität Potsdam Institut für Informatik Lehrstuhl Maschinelles Lernen Indexieren und Suchen Tobias Scheffer Index-Datenstrukturen, Suchalgorithmen Invertierte Indizes Suffix-Bäume und -Arrays Signaturdateien

Mehr

Informatik II Prüfungsvorbereitungskurs

Informatik II Prüfungsvorbereitungskurs Informatik II Prüfungsvorbereitungskurs Tag 4, 23.6.2016 Giuseppe Accaputo g@accaputo.ch 1 Programm für heute Repetition Datenstrukturen Unter anderem Fragen von gestern Point-in-Polygon Algorithmus Shortest

Mehr

Textsuche. Textsuche

Textsuche. Textsuche Textsuche Stringologie Online-Algorithmen Peter Leupold Das allgemeine Problem der Text- oder Mustersuche besteht darin ein (Such-) Muster (pattern) x der Länge m in einem (Such-) Text (text) y der Länge

Mehr

Kapitel 12: Induktive

Kapitel 12: Induktive Kapitel 12: Induktive Datenstrukturen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter

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

Exakte Suche nach einem Wort

Exakte Suche nach einem Wort Kapitel Exakte Suche nach einem Wort Wir betrachten die folgende grundlegende Aufgabenstellung: Gegeben sind ein Suchwort (pattern) P und ein Text T über einem Alphabet Σ mit P = m, T = n, Σ = σ. Gesucht

Mehr

Übersicht. Volltextindex Boolesches Retrieval Termoperationen Indexieren mit Apache Lucene

Übersicht. Volltextindex Boolesches Retrieval Termoperationen Indexieren mit Apache Lucene Übersicht Volltextindex Boolesches Retrieval Termoperationen Indexieren mit Apache Lucene 5.0.07 1 IR-System Peter Kolb 5.0.07 Volltextindex Dokumentenmenge durchsuchbar machen Suche nach Wörtern Volltextindex:

Mehr

5. Mustererkennung. Anwendungsbeispiele: suche Zeichenfolge in Text suche Bitmuster in Pixelbild. gegeben: endliches Alphabet Σ. Muster p Σ m, m IN

5. Mustererkennung. Anwendungsbeispiele: suche Zeichenfolge in Text suche Bitmuster in Pixelbild. gegeben: endliches Alphabet Σ. Muster p Σ m, m IN 5. Mustererkennung Anwendungsbeispiele: suche Zeichenfolge in Text suche Bitmuster in Pixelbild gegeben: endliches Alphabet Σ Text t Σ n, n IN Muster p Σ m, m IN gesucht: erste (bzw. jede) Position von

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 7 (21.5.2014) Binäre Suche, Hashtabellen I Algorithmen und Komplexität Abstrakte Datentypen : Dictionary Dictionary: (auch: Maps, assoziative

Mehr

Strings. Stringsuche, Boyer-Moore, Textkompression, Huffman Codes.

Strings. Stringsuche, Boyer-Moore, Textkompression, Huffman Codes. Strings Stringsuche, Boyer-Moore, Textkompression, Huffman Codes. Suche Substring Häufiges Problem Relevante Beispiele: Suche ein Schlagwort in einem Buch Alphabet: A-Za-z0-9 Suche Virussignatur auf der

Mehr

Kapitel 5. Textalgorithmen. 5.1 Grundbegriffe

Kapitel 5. Textalgorithmen. 5.1 Grundbegriffe Kapitel 5 Textalgorithmen 5.1 Grundbegriffe Wir beschäftigen uns hauptsächlich mit Textsuche (und Varianten). Gegeben: Alphabet Σ (mindestens zwei Buchstaben). Text S = s 1... s n Σ in Array S[1..n]. Muster

Mehr

Sortieren und Suchen. Jens Wächtler Hallo Welt! -Seminar LS 2

Sortieren und Suchen. Jens Wächtler Hallo Welt! -Seminar LS 2 Sortieren und Suchen Jens Wächtler 17.05.2017 Hallo Welt! -Seminar LS 2 Überblick Sortieren kurze Wiederholung Binäre & Ternäre Suche Binäre Suche in einer Liste Bisektionsverfahren (Nullstellensuche)

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Teil Hash-Verfahren Version vom: 18. November 2016 1 / 28 Vorlesung 9 18. November 2016

Mehr

Hallo Welt für Fortgeschrittene

Hallo Welt für Fortgeschrittene Hallo Welt für Fortgeschrittene Zahlentheorie, Arithmetik und Algebra II Benjamin Fischer Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Gliederung Lineare Rekursion BigInteger Chinesischer

Mehr

INFORMATIK FÜR BIOLOGEN

INFORMATIK FÜR BIOLOGEN Technische Universität Dresden 15012015 Institut für Theoretische Informatik Professur für Automatentheorie INFORMATIK FÜR BIOLOGEN Musterklausur WS 2014/15 Studiengang Biologie und Molekulare Biotechnologie

Mehr

13. Hashing. AVL-Bäume: Frage: Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n)

13. Hashing. AVL-Bäume: Frage: Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n) AVL-Bäume: Ausgabe aller Elemente in O(n) Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n) Frage: Kann man Einfügen, Löschen und Suchen in O(1) Zeit? 1 Hashing einfache Methode

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 6 (7.5.2018) Dictionaries, Binäre Suche, Hashtabellen I / Yannic Maus Algorithmen und Komplexität Abstrakte Datentypen : Dictionary Dictionary:

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 02 Codierung, Entscheidungsgehalt, Strings, Arrays Clemens Lang T2 4. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/14 Organisatorisches Ein weiteres Don t

Mehr

Algorithmen auf Sequenzen

Algorithmen auf Sequenzen Algorithmen auf Sequenzen Vorlesung von Prof. Dr. Sven Rahmann im Sommersemester 2008 Kapitel 4 Reguläre Ausdrücke Webseite zur Vorlesung http://ls11-www.cs.tu-dortmund.de/people/rahmann/teaching/ss2008/algorithmenaufsequenzen

Mehr

Kapitel 1. Exakte Suche nach einem Wort. R. Stiebe: Textalgorithmen, WS 2003/04 11

Kapitel 1. Exakte Suche nach einem Wort. R. Stiebe: Textalgorithmen, WS 2003/04 11 Kapitel 1 Exakte Suche nach einem Wort R. Stiebe: Textalgorithmen, WS 2003/04 11 Überblick Aufgabenstellung Gegeben: Text T Σ, Suchwort Σ mit T = n, = m, Σ = σ Gesucht: alle Vorkommen von in T Es gibt

Mehr

Willkommen zur Vorlesung. Algorithmen und Datenstrukturen

Willkommen zur Vorlesung. Algorithmen und Datenstrukturen Willkommen zur Vorlesung Algorithmen und Datenstrukturen Mein Name: Andreas Berndt Zum Dozenten Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen Derzeitige Sprachen:

Mehr

Inhaltsverzeichnis. Einführende Bemerkungen 11. Das Fach Informatik 11 Zielsetzung der Vorlesung Grundbegriffe

Inhaltsverzeichnis. Einführende Bemerkungen 11. Das Fach Informatik 11 Zielsetzung der Vorlesung Grundbegriffe Inhaltsverzeichnis Einführende Bemerkungen 11 Das Fach Informatik 11 Zielsetzung der Vorlesung 12 1. Grundbegriffe 1 3 1.1 1.2 1.3 1.4 1.5 1.6 1.7 Information und Nachricht 1.1.1 Information 1.1.2 Nachricht

Mehr

Algorithmen auf Sequenzen Vorbereitung zur Prüfung

Algorithmen auf Sequenzen Vorbereitung zur Prüfung Algorithmen auf Sequenzen Vorbereitung zur Prüfung Dominik Kopczynski Lehrstuhl für Algorithm Engineering (LS11) Fakultät für Informatik TU Dortmund Überblick Zusammenfassung aller Themen Fragen, die in

Mehr

DIGITALE BÄUME TRIES. Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm

DIGITALE BÄUME TRIES. Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm DIGITALE BÄUME TRIES Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm Übersicht 1 0. Einführung 1. Algorithmen 2. Eigenschaften von Programmiersprachen 3. Algorithmenparadigmen 4. Suchen & Sortieren

Mehr

4. Suche in Texten. Suche in (weitgehend) statischen Texten -> Indexierung 4-1. Einführung

4. Suche in Texten. Suche in (weitgehend) statischen Texten -> Indexierung 4-1. Einführung Einführung 4. Suche in Texten Suche in dynamischen Texten (ohne Indexierung) - Naiver Algorithmus (Brute Force) - Knuth-Morris-Pratt (KMP) - Algorithmus - Boyer-Moore (BM) - Algorithmus - Signaturen Suche

Mehr

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

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen Bäume sind verallgemeinerte Listen Datenstrukturen Teil 2 Bäume Jeder Knoten kann mehrere Nachfolger haben Sie sind weiter spezielle Graphen Graphen bestehen aus Knoten und Kanten Kanten können gerichtet

Mehr

Algorithmen und Datenstrukturen 1 Kapitel 6 Algorithmen auf Zeichenreihen

Algorithmen und Datenstrukturen 1 Kapitel 6 Algorithmen auf Zeichenreihen Algorithmen und Datenstrukturen 1 Kapitel 6 Algorithmen auf Zeichenreihen Technische Fakultät robert@techfak.uni-bielefeld.de Vorlesung, U. Bielefeld, Winter 2006/2007 February 5, 2007 Kapitel 6: Algorithmen

Mehr

Indexstrukturen für Zeichendaten und Texte

Indexstrukturen für Zeichendaten und Texte Indexstrukturen für Zeichendaten und Texte Felix Hain HTWK Leipzig 29.06.15 Gliederung 29.06.15 Felix Hain 2 1 B + -Baum 1.1 Präfix-B + -Baum 1.2 B + -Baum für BLOBs 2 Digitale Bäume 2.1 Trie 2.2 Patricia

Mehr

Motivation und Überblick

Motivation und Überblick Motivation und Überblick Drei große Bereiche der Vorlesung: Darstellung von Zahlen in Rechnern Verarbeitung von Binärdaten auf der Ebene digitaler Schaltungen Programmierung auf Maschinenebene und relativ

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (12 Hashverfahren: Verkettung der Überläufer) Prof. Dr. Susanne Albers Möglichkeiten der Kollisionsbehandlung Kollisionsbehandlung: Die Behandlung

Mehr

Lernmodul 7 Algorithmus von Dijkstra

Lernmodul 7 Algorithmus von Dijkstra Folie 1 von 30 Lernmodul 7 Algorithmus von Dijkstra Quelle: http://www.map24.de Folie 2 von 30 Algorithmus von Dijkstra Übersicht Kürzester Weg von A nach B in einem Graphen Problemstellung: Suche einer

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung Algorithmen und Datenstrukturen Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus sind viele Teile direkt aus der Vorlesung

Mehr

7. Organisation von Informationen

7. Organisation von Informationen Computeranwendung in der Chemie Informatik für Chemiker(innen) 7. Organisation von Informationen Jens Döbler 2003 "Computer in der Chemie", WS 2003-04, Humboldt-Universität VL7 Folie 1 Grundlagen Programme

Mehr

Was ist ein assoziativer Speicher?

Was ist ein assoziativer Speicher? Überblick 17. Datenstrukturen 17.1 Einleitung 17.2 Listen 17.3 Assoziative Speicher 17.4 Bäume 17.5 Mengen 17.6 Das Collections-Framework in Java 17.7 Zusammenfassung 17 Datenstrukturen 3 Assoziative Speicher

Mehr

Algorithmische Bioinformatik

Algorithmische Bioinformatik Algorithmische Bioinformatik Suffixarrays Ulf Leser Wissensmanagement in der Bioinformatik Inhalt dieser Vorlesung Suffixarrays Suche Konstruktionsalgorithmus nach Manber / Myers Enhanced Suffix Arrays

Mehr

Bioinformatik Für Biophysiker

Bioinformatik Für Biophysiker Bioinformatik Für Biophysiker Sommersemester 2009 Silke Trißl / Ulf Leser Wissensmanagement in der Bioinformatik Wissensmanagement in der Bioinformatik Schwerpunkte Algorithmen der Bioinformatik Management

Mehr

Einführung in die Programmiertechnik

Einführung in die Programmiertechnik 2008 Martin v. Löwis Einführung in die Programmiertechnik Darstellung von Text 2008 Martin v. Löwis 2 Plain Text Abstraktion: Text wird durch eine Folge von Symbolen (Buchstaben, Zahlen, Interpunktion)

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

8. Hashing Lernziele. 8. Hashing

8. Hashing Lernziele. 8. Hashing 8. Hashing Lernziele 8. Hashing Lernziele: Hashverfahren verstehen und einsetzen können, Vor- und Nachteile von Hashing gegenüber Suchbäumen benennen können, verschiedene Verfahren zur Auflösung von Kollisionen

Mehr

Abschnitt 2: Daten und Algorithmen

Abschnitt 2: Daten und Algorithmen Abschnitt 2: Daten und Algorithmen 2. Daten und Algorithmen 2.1 Zeichenreihen 2.2 Datendarstellung durch Zeichenreihen 2.3 Syntaxdefinitionen 2.4 Algorithmen 2 Daten und Algorithmen Einf. Progr. (WS 08/09)

Mehr

Algorithmische Bioinformatik

Algorithmische Bioinformatik Algorithmische Bioinformatik Suffixbäume Ulf Leser Wissensmanagement in der Bioinformatik Ziele Perspektivenwechsel: Von Online zu Offline-Stringmatching Verständnis von Suffix-Bäumen als Datenstruktur

Mehr

ADS: Algorithmen und Datenstrukturen 1

ADS: Algorithmen und Datenstrukturen 1 ADS: Algorithmen und Datenstrukturen 1 Teil 13+ɛ Prof. Peter F. Stadler & Dr. Christian Höner zu Siederdissen Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität

Mehr

Datenstrukturen. einfach verkettete Liste

Datenstrukturen. einfach verkettete Liste einfach verkettete Liste speichert Daten in einer linearen Liste, in der jedes Element auf das nächste Element zeigt Jeder Knoten der Liste enthält beliebige Daten und einen Zeiger auf den nächsten Knoten

Mehr

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

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 ETH Zürich Institut für Theoretische Informatik Prof. Dr. Angelika Steger Florian Meier, Ralph Keusch HS 2017 Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 Lösungsvorschlag zu Aufgabe 1

Mehr

Tag 2 Repetitorium Informatik (Java)

Tag 2 Repetitorium Informatik (Java) Tag 2 Repetitorium Informatik (Java) Dozent: Daniela Novac Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Zeichen und

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

7. Übung zur Vorlesung Grundlagen der Informatik

7. Übung zur Vorlesung Grundlagen der Informatik 7. Übung zur Vorlesung Grundlagen der Informatik 13.Interne Darstellung von Daten In der Vorlesung wurde bereits darauf hingewiesen, dass ein Rechner intern lediglich die Zustände 0 (kein Signal liegt

Mehr

Präfx Trie zur Stringverarbeitung. Cheng Ying Sabine Laubichler Vasker Pokhrel

Präfx Trie zur Stringverarbeitung. Cheng Ying Sabine Laubichler Vasker Pokhrel Präfx Trie zur Stringverarbeitung Cheng Ying Sabine Laubichler Vasker Pokhrel Übersicht: Einführung Eigenschaften von Tries Verwendung von Tries Allgemeine Defnition von Patricia Tries Eigenschaften von

Mehr

4.4 Anwendungen von Suffixbäumen und Suffix-Arrays

4.4 Anwendungen von Suffixbäumen und Suffix-Arrays 4.4 Anwendungen von Suffixbäumen und Suffix-Arrays exakte Suche in unveränderlichen Texten (schon besprochen) inexakte Suche in unveränderlichen Texten Finden von Regelmäßigkeiten (z.b. längste Wiederholungen)

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

Grundlagen der theoretischen Informatik

Grundlagen der theoretischen Informatik Grundlagen der theoretischen Informatik Kurt Sieber Fakultät IV, Department ETI Universität Siegen SS 2013 Vorlesung vom 09.04.2013 Inhalt der Vorlesung Teil I: Automaten und formale Sprachen (Kurt Sieber)

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

Repräsentation von Daten Binärcodierung von rationalen Zahlen und Zeichen

Repräsentation von Daten Binärcodierung von rationalen Zahlen und Zeichen Kapitel 4: Repräsentation von Daten Binärcodierung von rationalen Zahlen und Zeichen Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht Codierung von rationalen Zahlen Konvertierung

Mehr

Java Einführung Objekt-Datentypen und Strings. Kapitel 8 und 9

Java Einführung Objekt-Datentypen und Strings. Kapitel 8 und 9 Java Einführung Objekt-Datentypen und Strings Kapitel 8 und 9 Inhalt Was sind Objekt-Datentypen Sonderheiten bei Zuweisung und Vergleich Zeichenketten (Strings) Zeichencodes Char, Char-Arrays und Strings

Mehr

Textkompression. Komprimierung von Daten. Runlength Komprimierung (2) Runlength Komprimierung (1) Herkömmliche Kodierung. Runlength Komprimierung (3)

Textkompression. Komprimierung von Daten. Runlength Komprimierung (2) Runlength Komprimierung (1) Herkömmliche Kodierung. Runlength Komprimierung (3) Komprimierung von Daten Textkompression Effiziente Algorithmen VU 2.0 WS 2008/09 Bin Hu Ziel: Platz und Zeit sparen Kompression durch - Effiziente Kodierung - Verminderung der Redundanzen (verlustfrei)

Mehr

Kapitel 3: Sortierverfahren Gliederung

Kapitel 3: Sortierverfahren Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

Mehr

Hallo Welt für Fortgeschrittene

Hallo Welt für Fortgeschrittene Hallo Welt für Fortgeschrittene Geometrie II Tiago Joao Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Inhalt Koordinatenkompression Beispiel: SafeJourney Typische compress-funktion Bereichssuche

Mehr

Informatik II: Algorithmen & Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden!

Informatik II: Algorithmen & Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden! Albert-Ludwigs-Universität Institut für Informatik Prof. Dr. F. Kuhn Informatik II: Algorithmen & Datenstrukturen Montag, 29. August, 2014, 14:00 17:00 Name:...........................................................

Mehr