Algorithmen und Datenstrukturen 1 Kapitel 6
|
|
- Edwina Brinkerhoff
- vor 6 Jahren
- Abrufe
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 Technische Fakultät robert@techfak.uni-bielefeld.de Vorlesung, U. Bielefeld, Winter 2006/2007 February 5, 2007 Kapitel 6: Algorithmen
MehrAlgorithmen 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
MehrString - 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
MehrAlgorithmen 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
MehrAlgorithmische 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
MehrEffiziente 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
Mehr2.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
MehrAlgorithmische 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
MehrProseminar 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
MehrSuchen 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
MehrZeichenketten. 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
MehrAlgorithmen 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
MehrAlgorithmen 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:
MehrWS 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
MehrPraktikum 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
MehrAlgorithmen 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
MehrGrundlagen 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)
MehrKapitel 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
MehrUniversitä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
MehrKapitel 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
MehrKapitel 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
MehrAlgorithmen 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
MehrAlgorithmen 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
MehrINFORMATIK 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
MehrAlgorithmen 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
MehrBoyer 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.
Mehr8.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:
MehrBioinformatik 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
MehrEinfü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.
MehrFelder. 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
MehrGrundlagen: 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
Mehr1.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
MehrDatenstrukturen 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
MehrBioinformatik 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
MehrAlgorithmen 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
MehrDie 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
MehrTheoretische 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
MehrString 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
MehrGrundlagen 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
MehrAlgorithmen 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
MehrZeichenketten. 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
MehrProjektdokumentation 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
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
MehrFormale 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
Mehr5. 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
MehrAlgorithmen 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
MehrAlgorithmen 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,
MehrWann 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
MehrLexikalische 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
MehrOrdnen 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
MehrCounting - 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
MehrAbgabe: (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,
MehrDie 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
MehrAlgorithmen 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
MehrLazy 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
MehrAutomaten 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
MehrAlgorithmische 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
MehrKapitel 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
MehrProgrammieren 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
MehrAlgorithmen & 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
MehrMathematisches 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,
MehrWintersemester 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
MehrGierige 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:
Mehr4.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
MehrBerechenbarkeit 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.
MehrLexikalische 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,
MehrAlgorithmen 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
MehrGrundlagen: 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
MehrProgrammieren 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
Mehr5 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
Mehr2.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.
MehrKlausur "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
MehrIndexieren 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
MehrDiskrete 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
MehrGrundlagen: 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
MehrSoftwareprojektpraktikum 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
Mehr2. 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 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
Mehrc) {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, λ}?
MehrFAKULTÄ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,
MehrMODEL 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
MehrFormale 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
MehrStudiengang 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?
MehrExakte 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
MehrFORMALE 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
MehrFortgeschrittene 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
MehrAlgorithmen 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:
MehrAlgorithmische 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
MehrTypdeklarationen. 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,
MehrAlgorithmen 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
MehrAlgorithmen 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
MehrProgrammierpraktikum
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
MehrInformatik 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
MehrUE 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,
MehrKap 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
MehrKapitel 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
MehrAlgorithmen 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
MehrAlgorithmen 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
MehrRegulä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