Algorithmen und Datenstrukturen 1 Kapitel 6

Größe: px
Ab Seite anzeigen:

Download "Algorithmen und Datenstrukturen 1 Kapitel 6"

Transkript

1 Algorithmen und Datenstrukturen 1 Kapitel 6 Technische Fakultät robert@techfak.uni-bielefeld.de Vorlesung, U. Bielefeld, Winter 2008/2009

2 Kapitel 6: Algorithmen auf Zeichenreihen Anwendungsgebiete Verarbeitung von Zeichenreihen ist wichtiges Teilgebiet der Informatik, z.b. Erstellen, Durchsuchen, Archivieren von Dokumenten Text-Kompression & Datenkompression (auf allen digitalen Übertragungswegen) Genomforschung: Genome, Gene; Proteindatenbanken Internet-Suchmaschinen

3 Fragestellungen Suchen (Muster P in Text T ) Vergleichen (Text S gegen Text T ) Clustering und Klassifizierung von Mengen von Zeichenreihen

4 Logische Varianten Exakte Suche oder Vergleich (Ja/Nein; alle Auftreten/ein Auftreten) Approximative Suche oder Vergleich (kleine Abweichungen erlaubt bester Treffer gesucht) Paarweiser vs. multipler Vergleich Einfache vs. multiple Mustersuche

5 Technische Varianten z.b. bei Mustersuche 1 beide P und T variabel: naive Verfahren 2 P bekannt, T variabel: generiere spezielles Suchverfahren ( Matcher ) für M in wechselnden Texten T 3 P variabel, T (relativ) stabil: generiere Index-Struktur zum schnellen Durchsuchen für wechselnde P

6 z.b. beim Vergleichen 4 beide Texte etwa gleich groß Vergleich über volle Länge 5 beste lokale Ähnlichkeit. (Was ist die ähnlichste Tonfolge in zwei Musikstücken?) 6 kleiner Abschnitt in langem Text. (Z.B. wird Giegerich in der Bibel nicht erwähnt. Was ist die dazu ähnlichste Zeichenreihe, die darin vorkommt?)

7 z.b. bei großen/komprimierten Texten 7 online-verfahren: Text wird nur einmal gelesen, von links nach rechts 8 residente Verfahren: ganzer Text muss gleichzeitig verfügbar sein für Zugriffe in beliebiger Folge

8 Mehr Beispiele zu Text-Editor: Finde alle Auftreten eines Wortes; ersetze durch ein anderes 2 Übersetzung von Programmiersprachen: Erkennung der lexikalischen Grundsymbole der Sprache in Programmen (Lexikalische Analyse als 1. Stufe der Syntaxanalyse) 3 Suche nach Stichworten im Werk von Shakespeare; Suche nach DNS-Muster ( ACGTAACCTTA ) im menschlichen Genom (3.3 GB)

9 4 Textvergleich abgeschriebener (?) Hausaufgaben; Vergleich zweier orthologer Gene (ortholog: verwandt durch Abstammung) 5 Aussortieren von Zerfallsprodukten der RNS; (sie sind Teile längerer Sequenzen; siehe auch 3) 6 Suche nach Raubkopien von Musikstücken 7 Komprimieren/Dekomprimieren auf Übertragungswegen; Verschalten von Programmen als Unix pipes ; Listlessness bei funktionalen Programmen 8 Komplexere Suchmusteranfragen, z. B. verteilte Repeats im menschlichen Genom

10 Effizienz-Betrachtungen Hier eine allgemeine Vorausbetrachtung zur Effizienz noch haben wir keine Algorithmen gesehen. Sei P = m, T = n. Untergrenze der worst-case Effizienz: O(m + n) bzw. denn alle Zeichen im Muster/Text müssen mindestens einmal gelesen werden. O(m n) ist trivial erreichbar bei Vorverarbeitung von Muster oder Text muss Generierungsaufwand gegen verbesserten Suchaufwand abgewogen werden (amortisierte Effizienz)

11 Untergrenze für das Finden von P nach Vorverarbeitung von T ist O(m) das wäre unabhängig von der Größe des Textes! Eine Besonderheit wird wichtig bei sehr großen Texten: Größe des Index kann kritisch werden. Das Lokalitätsverhalten der Indexkonstruktion und der Suche spielt eine Rolle in Rechnern mit Cache-Architektur (Thrashing)

12 Konstante Faktoren Der Vergleich zweier Zeichen ist charakteristische Operation Ansonsten wird kaum etwas gerechnet Konstante Faktoren sind generell gering, asymptotische Laufzeit ist hartes Kriterium Ausnahme: Thrashing-Phänomene

13 6.2 Grundlegende Definitionen Die Suche nach allen (exakten) Vorkommen eines Musters in einem Text ist ein Problem, das häufig auftritt (z.b. in Editoren, Datenbanken etc.). Wir vereinbaren folgende Konventionen: Alphabet Σ endlicher Zeichenvorrat Muster P = P[0..m 1] Σ m Text T = T [0..n 1] Σ n P[j] = Zeichen an der Position j P[b..e] = Teilwort von P von bis den Positionen b und e Beispiel P = abcde, P[0] = a, P[3] = d, P[2..4] = cde.

14 Notation: leeres Wort: ɛ Länge eines Wortes x: x Konkatenation zweier Wörter x und y: xy

15 Präfix und Suffix Sei x = uvw, mit u, v, w. Dann heißt u Präfix von x, v Teilwort von x und w Suffix von x. Beachte: abc hat Präfixe ɛ, a, ab, abc und die Suffixe abc, bc, c, ɛ.

16 Das Problem der exakten Suche Definition Ein Muster P kommt mit der Verschiebung s im Text T vor, falls 0 s n m und T [s..s + m 1] = P[0..m 1] gilt. In diesem Fall nennen wir s eine gültige Verschiebung. Das Problem der exakten Textsuche ist, alle gültigen Verschiebungen zu finden. Man kann auch sagen: Finde alle Suffixe von T, die P als Präfix haben. Beispiel T = bielefeld oh bielefeld P = feld Gültige Verschiebungen: s = 5 und s = 18.

17 Die naive Lösung des Problems sieht so aus: naive1 p t = [i i <- [0..length t - 1], p == take (length p) (drop i t)] Diese Lösung ist offensichtlich NICHT effizient sie führt zum Aufwand O(n 2 + 2nm) wegen der Aufrufe von drop.

18 Besser ist die Variante naive2 p t = [i (i,w) <- zip [0..] (suffixes t), p == take m w] where m = length p suffixes [] = [[]] suffixes (x:xs) = (x:xs) : suffixes xs Hier ist der worst-case Aufwand O(m n)

19 Am Beispiel T = abrakadabraxasa und P = abraxas erkennt man das ineffiziente Vorgehen, insbesondere wenn Text und Muster immer komplett verglichen werden: a b r a k a d a b r a x a s a a b r a x a s a b r a x a s a b r a x a s a b r a x a s a b r a x a s a b r a x a s a b r a x a s a b r a x a s a b r a x a s

20 Selbst wenn Text und Muster zeichenweise von links nach rechts und nur bis zum ersten Mismatch 1 verglichen werden, ist die worst-case Zeiteffizienz des naiven Algorithmus O ( n m ), z.b. wird für T = a n, P = a m der Vergleich p =... n m + 1 mal ausgeführt und in jedem Test in werden m Zeichen verglichen. Wie kann man den naiven Algorithmus verbessern? Idee 1: Überspringe ein Teilwort w von T, falls klar ist, dass w P (BM-Algorithmus 1977). Idee 2: Merke Informationen über bisherige Vergleiche und nutze diese, um neue, unnötige Vergleiche zu vermeiden (KMP-Algorithmus 1977). 1 Die zwei Zeichen stimmen nicht überein.

21 6.3 Der Boyer-Moore-Algorithmus Der BM-Algorithmus legt wie der naive Algorithmus das Muster zunächst linksbündig an den Text, vergleicht die Zeichen des Musters dann aber von rechts nach links mit den entsprechenden Zeichen des Textes. Beim ersten Mismatch benutzt er zwei Heuristiken, um eine Verschiebung des Musters nach rechts zu bestimmen. Beispiel: T = RHABARBERBARBARA P = BARBIER

22 Die bad-character Heuristik Falls beim Vergleich von P[0..m 1] und T [s..s + m 1] (von rechts nach links) ein Mismatch P[j] T [s + j] für ein j mit 0 j m 1 festgestellt wird, so schlägt die bad-character Heuristik BCH(T [s + j]) eine Verschiebung des Musters um j k Positionen vor, wobei k der größte Index (0 k m 1) ist mit T [s + j] = P[k]. Wenn kein k mit T [s + j] = P[k] existiert, so sei k = 1. BCH wird vor Beginn der Suche berechnet!!

23 [ ] { } BCH T [s + j] = max k P[k] = T [s + j] 0 km 1 Berechne: a { } BCH[a] = max k P[k] = a 0 km 1

24 Einfacher gesagt: T [s + j] ist der bad character. Wir verschieben das Muster so, dass das rechteste Auftreten des bad character im Muster, also P[k], unter T [s + j] liegt. Problem: Wenn k > j, würde das Muster nach links verschoben!

25 Die good-suffix Heuristik Falls beim Vergleich von P[0..m 1] und T [s..s + m 1] (von rechts nach links) ein Mismatch P[j] T [s + j] für ein j mit 0 j m 1 festgestellt wird, so wird das Muster so weit nach rechts geschoben, bis das bekannte Suffix T [s + j + 1..s + m 1] wieder auf ein Teilwort des Musters passt. Im Boyer-Moore-Algorithmus wird das Muster um das Maximum von beiden vorgeschlagenen Verschiebungen verschoben. Es kann gezeigt werden, dass die Laufzeitkomplexität dann im worst case O(n + m) ist.

26 Vorverarbeitungsschritte: Die Verschiebespannen beider Heuristiken werden vorab durch Analyse von P ermittelt und tabelliert Bad character Heuristik: BCH: [ 1..m 1] BCH(a) = k gdw. k ist rechtestes Auftreten von a in P; oder k = 1 Good suffix Heuristik: GSH: [0..m 1] [ 1..m 1] GSH(j) = max r : P[r..r + (m 1) (j + 1)] = P[j + 1..m 1] oder r = 1

27 Beispiel Die bad-character Heuristik schlägt eine Verschiebung von j k = (m 3) 5 = (12 3) 5 = 4 Positionen vor; dies ist im Fall (b) illustriert. Aus der Darstellung (c) wird ersichtlich, dass die good-suffix Heuristik eine Verschiebung von 3 Positionen vorschlägt. Also wird das Muster um max{4, 3} = 4 Positionen nach rechts verschoben. bad character good suffix {}} {... w r i t t e n n o t i c e t h a t... s r e m i n i s c e n c e (a)... w r i t t e n n o t i c e t h a t... s + 4 r e m i n i s c e n c e (b)... w r i t t e n n o t i c e t h a t... s + 3 r e m i n i s c e n c e (c)

28 Ein Beispiel, in dem die Bad-Character-Heuristik eine Verschiebung nach links (negativ) vorschlägt:... R H A B A R B E R B A R B A R A B R A... B I E R B A R rechtes Auftreten von t in P bad character t ergibt Verschiebung 3! Good suffix Heuristik: Verschiebung +7.

29 Wirksamkeit der Heuristiken: lange gute Suffixe sind selten, in der Regel beruhen große Verschiebungen auf der bad-character Heuristik

30 Der Boyer-Moore-Horspool-Algorithmus Der BM-Algorithmus verdankt seine Schnelligkeit vor allem der bad-character Heuristik. Daher wurde 1980 von Horspool eine Vereinfachung des BM-Algorithmus vorgeschlagen: Die bad-character Heuristik wird derart modifiziert, dass sie immer eine positive Verschiebung vorschlägt. Damit wird die good-suffix Heuristik überflüssig (und auch die Vorverarbeitung einfacher).

31 Der Boyer-Moore-Horspool-Algorithmus Der BMH-Algorithmus geht in den meisten Fällen analog zur bisherigen bad-character Heuristik vor. Aber: Falls P[j] T [s + j] für ein j (0 j m 1) gilt, so wird s um m 1 k erhöht, wobei k der größte Index zwischen 0 und m 2 ist mit T [s + m 1] = P[k]. Wenn kein k (0 k m 2) mit T [s + m 1] = P[k] existiert, so wird s um m erhöht. Das Muster wird also um λˆt [s+m 1] = min {m} m 1 k 0 k m 2 und T [s+m 1] = P[k] verschoben. Wenn ein Match gefunden wurde, dann wird ebenfalls um λ [ T [s + m 1] ] verschoben. Vorverarbeitung: λ[c] für alle c Σ.

32 Verhalten des BMH-Algorithmus bei einem Mismatch... g o l d e n f l e e c e o f... s r e m i n i s c e n c e... g o l d e n f l e e c e o f... s + 3 r e m i n i s c e n c e

33 Verhalten des BMH-Algorithmus bei einem Treffer... g o l d e n f l e e c e o f... s f l e e c e... g o l d e n f l e e c e o f... s + 2 f l e e c e

34 Boyer-Moore-Horspool Algorithmus in Haskell import Array Eine halbherzige Lösung lambda :: String -> String -> Int -> Int lambda p t s = minimum (m:[m-1-k k <- [0..(m-2)], t!!(s+m-1) == p!!k]) where m = length p bmh :: String -> String -> [Int] bmh p t = bmh 0 p t where bmh i p t i > (length t)-(length p) = [] p == (take (length p) (drop i t)) = i:(bmh (i + lambda p t i) p t) otherwise = bmh (i + lambda p t i) p t

35 Kritik: 1 Die Repräsentation von Muster und Text als String statt als Array verhindert das Erreichen guter Effizienz. 2 Die Verschiebefunktion λ wird nicht vorab berechnet, sondern bei jedem Gebrauch neu. 3 Für die lokale Funktion bmh sind p und t bekannt. Es ist unnötig, sie jedesmal als (unveränderte) Parameter zu übergeben. 4 λ sollte lokale Funktion von bmh sein, da auch dafür p und t konstant sind. 5 Eine zentrale BMH-Idee ist, dass λ(a) für alle a aus [ A.. z ] berechnet wird. Dadurch wird λ unabhängig von Text t!!

36 Eine korrekte Lösung type SArr = Array Int Char bmh:: SArr -> SArr -> [Int] bmh p t = bmhi 0 m where (,m) = bounds p (,n) = bounds t bmhi i k i+m >n = [] k == 0 = [i t!i == p!0]++ bmhi (i+shift!(t!(i+m))) m t!(i+k) == p!k = bmhi i (k-1) otherwise = bmhi (i+shift!(t!(i+m))) m shift :: Array Char Int shift = accumarray min (m+1) ( A, z ) [(p!k,m-k) k <- [0..m-1]]

37 Zum Aufruf mit zwei Strings tbmh p t = bmh (mk p) (mk t) where mk s = listarray (0,length s -1) s Zum separat Angucken eine ent-lokalisierte Kopie von shift shift :: SArr -> Array Char Int shift p = accumarray min (m+1) ( A, z ) [(p!k,m-k) k <- [0..m-1]] where (,m) = bounds p

38 6.4 Der Knuth-Morris-Pratt-Algorithmus Der naive Algorithmus: a b r a k a d a b e r a b r a k a d a b r a k a b r a k a d a b r a a b r a k a d a b r a a b r a k a d a b r a a b r a k a d a b r a a b r a k a d a b r a etc.

39 Man erkennt, dass im zweiten und dritten Schritt das Zeichen a an Position 1 im Muster mit den Zeichen b und r an der zweiten und dritten Position des Textes verglichen wird, obwohl bereits nach dem positiven Vergleich von abra klar sein musste, dass hier keine Übereinstimmung existieren kann.

40 Der Knuth-Morris-Pratt-Algorithmus geht nach folgendem Schema vor: Wenn ein Teilwort (Präfix) des Musters bereits erkannt wurde, aber dann ein Mismatch auftritt, so ermittelt der Algorithmus das längste Präfix dieses Teilwortes, das gleichzeitig echtes Suffix davon ist, und schiebt das Muster dann so weit nach rechts, dass dieses Präfix an der bisherigen Position des Suffixes liegt. a b r a k a d a b e r a b r a k a d a b r a k a b r a k a d a b r a a b r a k a d a b r a a b r a k a d a b r a a b r a k a d a b r a a b r a k a d a b r a a b r a k a d a b r a a b r a k a d a b r a a b r a k a d a b r a Man erkennt, dass hier drei unnötige Vergleiche vermieden wurden.

41 Beispiel: Die Präfixfunktion π : {1, 2,..., m} {0, 1,..., m 1} für ein Muster P[0..m 1] ist definiert durch π[q] = max{k : k < q 1 und P[0..k] ist echtes Suffix von P[0..q 1]}. Sie lautet für unser Beispielwort P = abrakadabra: q P[q] a b r a k a d a b r a π[q] Für q = 9 wäre das entsprechende Teilmuster also abrakadab. Das längste Präfix, das gleichzeitig echtes Suffix davon ist, ist ab. Es hat die Länge 2, darum findet sich in der Tabelle an der Position q = 9 der Eintrag π[q] = 2. P wird so verschoben, dass P[π(q)] unter der Mismatch-Position in T steht, d. h. S S + q π[q].

42 Berechnung der Präfixfunktion für KMP Vorgehen: induktiv Annahme: Die Werte von π sind bereits für 1... q 1 berechnet. Gesucht: π[q] = max{k k < q und P[0..k 1] ist echtes Suffix von P[0..q 1]}. Welche k kommen in Frage? alle echten Suffixe von P[0..q 2], die sich zu einem echten Suffix von P[0..q 1] erweitern lassen.

43 (a) 0 k 2 k q 2 q 1 x x k 1 k 1 Sei k 1 = π[q 1] + 1 Dann ist π[q] = k 1 falls, P[k 1 1] = P[q 1].

44 (b) andernfalls (y x): k 2 1 k 1 1 q 2 q 1 x y x k 2 k 2 k 2 Sei k 2 = π[k 1 1] + 1. Dann ist π[q] = k 2, falls P[k 2 1] = P[q 1].

45 Allgemein: k i =π[k i 1 1]+1=π[π[k i 2 1]+1 1]+1= =π[π[k i 2 1]]+1 k i =π i [q 1]+1

46 KMP-Algorithmus in Haskell import Array Eine halbherzige Lösung für KMP (einschließlich einer besonders peinlichen Implementierung von suffixes) Pi-Funktion für den KMP: pi :: String -> Array Int Int pi p = array (1,qmax) [ (q, maximum [ k k <- [0..q], (take k p) elem (suffixes (take q p)) ]) q <- [1..qmax] ] where qmax = (length p)

47 Gibt alle echten Suffixe eines Worts inklusive des leeren Worts aus: suffixes :: [a] -> [[a]] suffixes as = [ (drop n as) n <- [1..(length as)] ] Gibt die Stelle des ersten unterschiedlichen Zeichens in zwei gleich langen Strings aus: getq :: String -> String -> Int getq a b = getq 0 a b where getq i (a:as) (b:bs) = if a/=b then i else getq (i+1) as bs getq i [] [] = i

48 Führt den KMP aus: kmp :: String -> String -> [Int] kmp [] = error "ungueltiger Suchstring" kmp p t = kmp 0 p t where kmp i p t i > lt-m = [] q == m && k == 0 = i:kmp (i + m) p t q == m && k > 0 = i:kmp (i + m - k ) p t q < m && p!!q /= t!!(i+q) && q /= 0 = kmp (i + q - pq) p t q < m && p!!q /= t!!(i+q) && q == 0 = kmp (i+1) p t where q = getq p (take m (drop i t)) k = pit!m pq = pit!q pit = pi p lt = length t m = length p

49 Kritik: 1 Darstellung von Text und Muster als String (statt Array) torpediert die Effizienz. 2 Suffixes haben wir in den Übungen schon eleganter implementiert diese Implementierung ist in O(n 2 )! 3 getq vergleicht im Muster jedesmal von ganz vorne, das stimmt nicht mit der KMP-Idee überein. 4 kmp als lokale Funktion von KMP braucht keine Parameter p und t.

50 Eine korrekte Implementierung von KMP type SArr = Array Int Char kmp p t = kmp 0 0 where (,m) = bounds p (,n) = bounds t kmp i q i+m > n = [] q == m+1 = i:kmp (i+q-pi!q) (pi!q) -- i+q bleibt invariant! t!(i+q) == p!q = kmp i (q+1) -- q rueckt vor q == 0 = kmp (i+1) 0 -- i rueckt vor otherwise = kmp (i+q-pi!q) (pi!q) -- i+q bleibt invariant! pi :: Array Int Int pi = array (0,m+1) ((0,0):(1,0):[(q,iteratep (pi!(q-1)) q) q <- [2..m+1]]) where iteratep 0 q = if p!0 == p!(q-1) then 1 else 0 iteratep k q = if p!k == p!(q-1) then k+1 else iteratep (pi!k) q

51 Zum Aufruf von kmp mit zwei Strings tkmp p t = kmp (mk p) (mk t) where mk s = listarray (0,length s -1) s Ent-lokalisierte Version von pi zum Reingucken ptab p = pi where (,m) = bounds p pi = array (0,m+1) ((0,0):(1,0):[(q,iteratep (pi!(q-1)) q) q <- [2..m+1]]) iteratep 0 q = if p!0 == p!(q-1) then 1 else 0 iteratep k q = if p!k == p!(q-1) then k+1 else iteratep (pi!k) q mk s = listarray (0,length s -1) s

52 Ein Wettrennen zwischen KMP und BMH 1. Satz: 0:1 tkmp "accgagt" "aatcgtagagctagcatgatgtatatagcgccggcgtatagctaagcaccgataccgagtcxgaagcta" [53] (11975 reductions, cells) tbmh "accgagt" "aatcgtagagctagcatgatgtatatagcgccggcgtatagctaagcaccgataccgagtcxgaagcta" [53] (7473 reductions, 9958 cells) 2. Satz: 1:0 tkmp "abbaba" "abbababbbabaaababababbabbabbabbabababbbbabbaaaaababaabbab" [0,28] (10881 reductions, cells) tbmh "abbaba" "abbababbbabaaababababbabbabbabbabababbbbabbaaaaababaabbab" [0,28] (12374 reductions, cells) 3. Satz: 0:1 kmp "WerdurchTesten" "Programmeverstehenwilldermussschonsehrvielmessenundganzgenauhinsehen" [] (8068 reductions, cells) tbmh "WerdurchTesten" "Programmeverstehenwilldermussschonsehrvielmessenundganzgenauhinsehen" [] (5979 reductions, 8064 cells) Ergebnis:... KMP : BMH 1:2...

53 KMP-Algorithmus als Automat mit spontanen Übergängen (ohne Kantenmarkierung; ohne Weitergehen im Text) Jeder Zustand entspricht einem erkannten Präfix; die Nummer ist q aus der π-tabelle = a a ε 0 a 1 b ab 2 r abr 3 a abra k abrak 4 5 a abraka 6 d abrakad 7 abrakadabra 11 a abrakadabr 10 r abrakadab 9 b abrakada 8 Speicherplatz für den KMP-Automat: O( P ) für die Tabelle der Spontanübergänge. a

54 Transformation des KMP-Automaten in einen endlichen Automaten (Zusammenziehen der spontanten Übergänge, so dass bei jedem Übergang ein Zeichen gelesen wird) = a a ε 0 = a,b,k = a,r a = a,b a 1 a b b a = a ab 2 abrakadabra 11 k a r abr 3 abrakadabr 10 = a,b,k = a a b a r a abra k abrak 4 5 abrakadab 9 b a b a abrakada 8 a abraka 6 abrakad 7 a d = a,b,d = a = a = a,r = a,b Speicherplatz für endlichen Automat: O( P ) für alle Kombinationen von Zeichen und Zustand.

55 6.5 Aho-Corasick Bei mehr als einem Muster bilden alle Präfixe aller Muster die Zustandsmenge des Aho-Corasick-Automaten. Beispiel: P 1 = abra, P 2 = abba, P 3 = brabra. = a,b ε a b a b ab r a abr b abb a abba abra b r br a bra b brab r brabr a brabra

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

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

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

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

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

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

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

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

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

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

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

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

WS 2011/2012. RobertGiegerich. November 12, 2013

WS 2011/2012. RobertGiegerich. November 12, 2013 WS 2011/2012 Robert AG Praktische Informatik November 12, 2013 Haskell-Syntax: Ergänzungen Es gibt noch etwas bequeme Notation für Fallunterscheidungen, die wir bisher nicht benutzt haben. Bisher kennen

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 I - Algorithmen auf Zeichenreihen -

Algorithmen und Datenstrukturen I - Algorithmen auf Zeichenreihen - Algorithmen uf Zeichenreihen Grundlegende Definitionen BM-Algorithmus BMH-Algorithmus Der KMP-Algorithmus Weitere Verfhren Textkompression Algorithmen und Dtenstrukturen I - Algorithmen uf Zeichenreihen

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

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

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

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

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

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

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

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

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

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

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

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

Felder. November 5, 2014

Felder. November 5, 2014 Felder Universität Bielefeld AG Praktische Informatik November 5, 2014 Felder: Datenstrukturen mit konstantem Zugriff Felder nennt man auch, Vektoren, Matrizen,... Konstanter Zugriff heisst: Zugriff auf

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Technische Universität München Fakultät für Informatik Lehrstuhl für Effiziente Algorithmen Dr. Hanjo Täubig Tobias Lieber Sommersemester 011 Übungsblatt 30. Mai 011 Grundlagen: Algorithmen und Datenstrukturen

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

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern Datenstrukturen und Algorithmen 7. Suchen in linearen Feldern VO 708.031 Suchen in linearen Feldern robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische

Mehr

Bioinformatik Für Biophysiker

Bioinformatik Für Biophysiker Bioinformatik Für Biophysiker Wintersemester 2005 / 2006 Ulf Leser Wissensmanagement in der Bioinformatik Wissensmanagement in der Bioinformatik Lehrstuhl seit 10/2002 Schwerpunkte Algorithmen der Bioinformatik

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

Die Nerode-Relation und der Index einer Sprache L

Die Nerode-Relation und der Index einer Sprache L Die Nerode-Relation und der Index einer Sprache L Eine zweite zentrale Idee: Sei A ein vollständiger DFA für die Sprache L. Repäsentiere einen beliebigen Zustand p von A durch die Worte in Σ, die zu p

Mehr

Theoretische Informatik. Alphabete, Worte, Sprachen

Theoretische Informatik. Alphabete, Worte, Sprachen Theoretische Informatik Alphabete, Worte, Sprachen Alphabete, Worte, Sprachen 1. Alphabete und Worte Definitionen, Beispiele Operationen mit Worten Induktionsbeweise 2. Sprachen Definition und Beispiele

Mehr

String Matching 2. Definition Ein Alphabet ist eine nichtleere, endliche Menge S von Zeichen.

String Matching 2. Definition Ein Alphabet ist eine nichtleere, endliche Menge S von Zeichen. 1 2 1. Strings Definition Ein Alphabet ist eine nichtleere, endliche Menge S von Zeichen. Ein String über S ist eine endliche Folge S = S(1)S(2)...S(n) von Zeichen S(i) aus S, dessen Länge n wir mit S

Mehr

Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben

Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben Dieses Dokument soll mehr dazu dienen, Beispiele für die formal korrekt mathematische Bearbeitung von Aufgaben zu liefern, als konkrete Hinweise auf typische Klausuraufgaben zu liefern. Die hier gezeigten

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

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

Zeichenketten. Hallo Welt für Fortgeschrittene Daniel Wust Informatik 2 Programmiersysteme Martensstraße Erlangen Zeichenketten Hallo Welt für Fortgeschrittene Daniel Wust 23.04.2013 Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Inhalt Zeichenketten ASCII Regionsspezifische Erweiterungen Unicode Speicherung

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

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015 Datenstrukturen und Algorithmen Vorlesung 8: (K6) 1 Joost-Pieter Katoen Lehrstuhl für Informatik Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-15/dsal/ 7. Mai 015 3 Joost-Pieter

Mehr

Formale Methoden 1. Gerhard Jäger 28. November Uni Bielefeld, WS 2007/2008 1/15

Formale Methoden 1. Gerhard Jäger 28. November Uni Bielefeld, WS 2007/2008 1/15 1/15 Formale Methoden 1 Gerhard Jäger Gerhard.Jaeger@uni-bielefeld.de Uni Bielefeld, WS 2007/2008 28. November 2007 2/15 Formale Sprache: Menge von Symbolketten Theorie formaler Sprachen Formale Sprachen

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

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2007 11. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Das Rucksack-Problem Ein Dieb, der einen Safe

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

Wann sind Codes eindeutig entschlüsselbar?

Wann sind Codes eindeutig entschlüsselbar? Wann sind Codes eindeutig entschlüsselbar? Definition Suffix Sei C ein Code. Ein Folge s {0, 1} heißt Suffix in C falls 1 c i, c j C : c i = c j s oder 2 c C und einen Suffix s in C: s = cs oder 3 c C

Mehr

Lexikalische Programmanalyse der Scanner

Lexikalische Programmanalyse der Scanner Der Scanner führt die lexikalische Analyse des Programms durch Er sammelt (scanned) Zeichen für Zeichen und baut logisch zusammengehörige Zeichenketten (Tokens) aus diesen Zeichen Zur formalen Beschreibung

Mehr

Ordnen Sie die folgenden Funktionen nach ihrer asymptotischer Komplexität in aufsteigender Reihenfolge: i=1 4i + n = 4 n. i=1 i + 3n = 4 ( n(n+1)

Ordnen Sie die folgenden Funktionen nach ihrer asymptotischer Komplexität in aufsteigender Reihenfolge: i=1 4i + n = 4 n. i=1 i + 3n = 4 ( n(n+1) für Informatik Prof. aa Dr. Ir. Joost-Pieter Katoen Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Tutoraufgabe (Asymptotische Komplexität): Ordnen Sie die folgenden Funktionen nach

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

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 2 Prof. Dr. Helmut Seidl, S. Pott,

Mehr

Die mathematische Seite

Die mathematische Seite Kellerautomaten In der ersten Vorlesung haben wir den endlichen Automaten kennengelernt. Mit diesem werden wir uns in der zweiten Vorlesung noch etwas eingängiger beschäftigen und bspw. Ansätze zur Konstruktion

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2009 11. Vorlesung Uwe Quasthoff Universität Leipzig Institut für Informatik quasthoff@informatik.uni-leipzig.de Das Rucksack-Problem Ein Dieb, der einen

Mehr

Lazy Pattern Matching. 10. Dezember 2014

Lazy Pattern Matching. 10. Dezember 2014 Lazy Lazy s Universität Bielefeld AG Praktische Informatik 10. Dezember 2014 Themen-Vorschau : as-s und lazy s Client-Server-Programmierung Lazy s matching (alias Mustervergleich) kennen wir bereits aus

Mehr

Automaten und Formale Sprachen Endliche Automaten und Reguläre sprachen

Automaten und Formale Sprachen Endliche Automaten und Reguläre sprachen Automaten und Formale Sprachen Endliche Automaten und Reguläre sprachen Ralf Möller Hamburg Univ. of Technology Literatur Gottfried Vossen, Kurt-Ulrich Witt: Grundkurs Theoretische Informatik, Vieweg Verlag

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

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

Programmieren in Haskell Programmiermethodik

Programmieren in Haskell Programmiermethodik Programmieren in Haskell Programmiermethodik Peter Steffen Universität Bielefeld Technische Fakultät 12.01.2011 1 Programmieren in Haskell Bisherige Themen Was soll wiederholt werden? Bedienung von hugs

Mehr

Algorithmen & Komplexität

Algorithmen & Komplexität Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik steger@inf.ethz.ch Kürzeste Pfade Problem Gegeben Netzwerk: Graph G = (V, E), Gewichtsfunktion w: E N Zwei Knoten: s, t Kantenzug/Weg

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

Wintersemester 2004/ Februar 2005

Wintersemester 2004/ Februar 2005 Lehrstuhl für Praktische Informatik III Norman May B6, 29, Raum C0.05 68131 Mannheim Telefon: (0621) 181 2517 Email: norman@pi3.informatik.uni-mannheim.de Matthias Brantner B6, 29, Raum C0.05 68131 Mannheim

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

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

Berechenbarkeit und Komplexität Vorlesung 11

Berechenbarkeit und Komplexität Vorlesung 11 Berechenbarkeit und Komplexität Vorlesung 11 Prof. Dr. Wolfgang Thomas Lehrstuhl Informatik 7 RWTH Aachen 7. Dezember 2014 Wolfgang Thomas, Informatik 7 () Vorlesung Berechenbarkeit und Komplexität 7.

Mehr

Lexikalische Analyse, Tokenizer, Scanner

Lexikalische Analyse, Tokenizer, Scanner Lexikalische Analyse, Tokenizer, Scanner Frühe Phase des Übersetzers Aufgabenteilung: Scanner (lokale) Zeichen (Symbol-)Analyse Parser Syntax-Analyse Aufgabe des Scanners: Erkennung von: Zahlen, Bezeichner,

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Algorithmen und Datenstrukturen Teil 3 Suchen in Listen Version vom: 15. November 2016

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Technische Universität München Fakultät für Informatik Lehrstuhl für Effiziente Algorithmen Dr. Hanjo Täubig Tobias Lieber Sommersemester 2011 Übungsblatt 1 16. September 2011 Grundlagen: Algorithmen und

Mehr

Programmieren in Haskell

Programmieren in Haskell Programmieren in Haskell Felder (Arrays) Programmieren in Haskell 1 Was wir heute machen Motivationsbeispiel Die Typklasse Ix Felder in Haskell Funktionstabellierung Binäre Suche Pascalsches Dreieck Ein

Mehr

5 Sortieren in eindimensionalen Zellularautomaten

5 Sortieren in eindimensionalen Zellularautomaten 5 Sortieren in eindimensionalen Zellularautomaten 5.1 Für alle x A und w A bezeichne im folgenden N x (w) die Anzahl der Vorkommen des Symboles x in dem Wort w. 5.2 Problem. (Eindimensionales Sortieren

Mehr

2.7 Der Shannon-Fano-Elias Code

2.7 Der Shannon-Fano-Elias Code 2.7 Der Shannon-Fano-Elias Code Die Huffman-Codierung ist ein asymptotisch optimales Verfahren. Wir haben auch gesehen, dass sich die Huffman-Codierung gut berechnen und dann auch gut decodieren lassen.

Mehr

Klausur "ADP" SS 2015

Klausur ADP SS 2015 PD Dr. J. Reischer 20.7.2015 Klausur "ADP" SS 2015 Nachname, Vorname Abschluss (BA, MA, FKN etc.) Matrikelnummer, Semester Versuch (1/2/3) Bitte füllen Sie zuerst den Kopf des Angabenblattes aus! Die Klausur

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

Diskrete Strukturen Kapitel 2: Grundlagen (Mengen)

Diskrete Strukturen Kapitel 2: Grundlagen (Mengen) WS 2016/17 Diskrete Strukturen Kapitel 2: Grundlagen (Mengen) Hans-Joachim Bungartz Lehrstuhl für wissenschaftliches Rechnen Fakultät für Informatik Technische Universität München http://www5.in.tum.de/wiki/index.php/diskrete_strukturen_-_winter_16

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Technische Universität München Fakultät für Informatik Lehrstuhl für Effiziente Algorithmen Dr. Hanjo Täubig Tobias Lieber Sommersemester 2011 Übungsblatt 5 14. Juni 2011 Grundlagen: Algorithmen und Datenstrukturen

Mehr

Softwareprojektpraktikum Maschinelle Übersetzung

Softwareprojektpraktikum Maschinelle Übersetzung Softwareprojektpraktikum Maschinelle Übersetzung Jan-Thorsten Peter, Andreas Guta, Jan Rosendahl max.bleu@i6.informatik.rwth-aachen.de Vorbesprechung 5. Aufgabe 22. Juni 2017 Human Language Technology

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

Übung: Algorithmen und Datenstrukturen SS 2007

Übung: Algorithmen und Datenstrukturen SS 2007 Übung: Algorithmen und Datenstrukturen SS 2007 Prof. Lengauer Sven Apel, Michael Claÿen, Christoph Zengler, Christof König Blatt 5 Votierung in der Woche vom 04.06.0708.06.07 Aufgabe 12 Manuelle Sortierung

Mehr

c) {abcde, abcfg, bcade, bcafg} d) {ade, afg, bcde, bcfg} c) {abcabc} d) {abcbc, abc, a} c) {aa, ab, ba, bb} d) {{aa}, {ab}, {ba}, {bb}}

c) {abcde, abcfg, bcade, bcafg} d) {ade, afg, bcde, bcfg} c) {abcabc} d) {abcbc, abc, a} c) {aa, ab, ba, bb} d) {{aa}, {ab}, {ba}, {bb}} 2 Endliche Automaten Fragen 1. Was ergibt sich bei {a, bc} {de, fg}? a) {abc, defg} b) {abcde, abcfg} c) {abcde, abcfg, bcade, bcafg} d) {ade, afg, bcde, bcfg} 2. Was ergibt sich bei {abc, a} {bc, λ}?

Mehr

FAKULTÄT FÜR INFORMATIK

FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2008/09 Einführung in die Informatik 2 Übungsblatt 10 Prof. Dr. Helmut Seidl, T. M. Gawlitza,

Mehr

MODEL CHECKING 2 - AUTOMATEN

MODEL CHECKING 2 - AUTOMATEN MODEL CHECKING 2 - AUTOMATEN Sommersemester 2009 Dr. Carsten Sinz, Universität Karlsruhe Model Checking 2 System (Hardware/ Software) Model Checking, Formalisierung, Beweis Übersetzung in Logik Gewünschte

Mehr

Formale Sprachen und Automaten

Formale Sprachen und Automaten Formale Sprachen und Automaten Kapitel 1: Grundlagen Vorlesung an der DHBW Karlsruhe Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2012 Ziel Einführung der wichtigsten

Mehr

Studiengang Informatik der FH Gießen-Friedberg. Sequenz-Alignment. Jan Schäfer. WS 2006/07 Betreuer: Prof. Dr. Klaus Quibeldey-Cirkel

Studiengang Informatik der FH Gießen-Friedberg. Sequenz-Alignment. Jan Schäfer. WS 2006/07 Betreuer: Prof. Dr. Klaus Quibeldey-Cirkel Studiengang Informatik der FH Gießen-Friedberg Sequenz-Alignment Jan Schäfer WS 2006/07 Betreuer: Prof. Dr. Klaus Quibeldey-Cirkel Überblick Einführung Grundlagen Wann ist das Merkmal der Ähnlichkeit erfüllt?

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

FORMALE SYSTEME. 8. Vorlesung: Minimale Automaten. TU Dresden, 6. November Markus Krötzsch Lehrstuhl Wissensbasierte Systeme

FORMALE SYSTEME. 8. Vorlesung: Minimale Automaten. TU Dresden, 6. November Markus Krötzsch Lehrstuhl Wissensbasierte Systeme FORMALE SYSTEME 8. Vorlesung: Minimale Automaten Markus Krötzsch Lehrstuhl Wissensbasierte Systeme TU Dresden, 6. November 2017 Rückblick Markus Krötzsch, 6. November 2017 Formale Systeme Folie 2 von 26

Mehr

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Fortgeschrittene Netzwerk- und Graph-Algorithmen Fortgeschrittene Netzwerk- und Graph-Algorithmen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Wintersemester

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

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 Paarweises

Mehr

Typdeklarationen. Es gibt in Haskell bereits primitive Typen:

Typdeklarationen. Es gibt in Haskell bereits primitive Typen: Typdeklarationen Es gibt in bereits primitive Typen: Integer: ganze Zahlen, z.b. 1289736781236 Int: ganze Zahlen mit Computerarithmetik, z.b. 123 Double: Fließkommazahlen, z.b. 3.14159 String: Zeichenketten,

Mehr

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

Algorithmen mit konstantem Platzbedarf: Die Klasse REG Algorithmen mit konstantem Platzbedarf: Die Klasse REG Sommerakademie Rot an der Rot AG 1 Wieviel Platz brauchen Algorithmen wirklich? Daniel Alm Institut für Numerische Simulation Universität Bonn August

Mehr

Algorithmen auf Sequenzen Paarweiser Sequenzvergleich: Alignments

Algorithmen auf Sequenzen Paarweiser Sequenzvergleich: Alignments Algorithmen auf Sequenzen Paarweiser Sequenzvergleich: Alignments Sven Rahmann Genominformatik Universitätsklinikum Essen Universität Duisburg-Essen Universitätsallianz Ruhr Einführung Bisher: Berechnung

Mehr

Programmierpraktikum

Programmierpraktikum TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Praktikum: Grundlagen der Programmierung Programmierpraktikum Woche 05 (24.11.2016) Stefan Berktold s.berktold@tum.de PRÄSENZAUFGABEN Heutige Übersicht

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

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 2. Spezifikation Schrittweise Verfeinerung

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 2. Spezifikation Schrittweise Verfeinerung UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1 Übung 2 Spezifikation Schrittweise Verfeinerung Institut für Pervasive Computing Johannes Kepler Universität Linz Altenberger Straße 69,

Mehr

Kap 7. Funktionen und Arrays

Kap 7. Funktionen und Arrays Kap 7. Funktionen und Arrays Elementare Algorithmen Allgemein Mathematik Text Eingabe ٧ Skalarprodukt wie Allgemein Ausgabe ٧ Länge ersetzen Summation Winkel Laenge Maximum ٧ Polynome berechnen ausschneiden

Mehr

Kapitel 2: Zahlentheoretische Algorithmen Gliederung

Kapitel 2: Zahlentheoretische Algorithmen 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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2012/13 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2013/14 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a

Mehr

Reguläre Sprachen und endliche Automaten

Reguläre Sprachen und endliche Automaten Reguläre Sprachen und endliche Automaten 1 Motivation: Syntaxüberprüfung Definition: Fließkommazahlen in Java A floating-point literal has the following parts: a whole-number part, a decimal point (represented

Mehr