8. Mustersuche in Zeichenketten
|
|
- Sven Schulze
- vor 5 Jahren
- Abrufe
Transkript
1 8. Mustersuche in Zeichenketten Zeichenkette (String) T ist endliche Folge von Symbolen aus endlichem Alphabet Σ. Besteht T aus n Symbolen, so werden diese in T[1], T[2],..., T[n] gespeichert. T[i..j], 1 i j n ist das an der Position i beginnende und an der Position j endende Teilwort von T. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 1
2 Grundlegendes Problem: Gegeben: Zwei Zeichenketten P[1..m] und T[1..n] mit Frage: Kommt P als Teilwort in T vor? m n. Naiver Algorithmus: for i = 1 to n m + 1 do überprüfe, ob P = T[i..i+m 1] od Laufzeit im Worst Case O(m n). Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 2
3 8.1 Der Algorithmus von Knuth-Morris-Pratt Naiver Algorithmus verschwendet gewissermaßen Information: Merkt sich nicht, welche Zeichen in T bereits mit Anfangsstück von P übereingestimmt haben, bis Mismatch auftrat: Situation: (naiveralg.) Vergleichszeiger T a b a a b a a P a b a b a a Mismatch Nächster Schleifendurchlauf: Verschiebung des Vergleichsfensters um eins nach rechts: T a b a a b a a b wurde zurückgesetzt P a b a b a a Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 3
4 Im Gegensatz dazu speichert der Alg. von KMP besagte Information einerseits, um Verschiebung der Muster nach rechts zu vergrößern und andererseits, um Vergleichszeiger nicht zurückzusetzen. Die Präfixfunktion eines Musters Zentral für den KMP-Algorithmus: Angenommen, P[1..q] = T[s+1..s+q], q < m. Was ist das kleinste s > s, sodass P[1..k] = T[s +1..s +k], wobei s +k = s+q? Für solches s stimmen die ersten k Zeichen von P mit den entsprechenden Zeichen in T überein. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 4
5 Beispiel: T b a c b a b a b a a b c b a s = 4 a b a b a c a q = 5 Mismatch Hier: s = 6 a b a b a c a s + q = 9 = s + k k = 3 (s = 5 (= s+1) führt notwendig sofort zu Mismatch!) Zur Beantwortung obiger Frage notwendige Information kann vorausberechnet werden, indem Muster P mit sich selbst verglichen wird! Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 5
6 Def.: Gegeben sei Muster P[1..m]. Dann Präfixfunktion π : {1,..., m} {0,..., m 1} für P definiert durch π ( q) : = max k P[ 1..k] ist Suffix von P[ 1..q] 0 k < q { } q k d.h. P Σ : P[ 1.. q] = P op[ 1.. k] Beispiel: P = a b a b a b a b c a i = π(i) = z.b. Berechnung von P[4]: P[1..q] = a b a b Test k = 3: P[1..3] = a b a Test k = 2: P[1..2] = a b kein Suffix! Suffix! Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 6
7 KMP-Matcher(T, P) (1) n Länge von T; m Länge von P; (2) π Berechne_Präfixfunktion(P); (3) q 0; (4) for i 1 to n do (5) while q > 0 and P[q+1] T[i] do (6) q π[q] (7) od; (8) if P[q+1] = T[i] (9) then q q + 1; (10) fi (11) if q = m (12) then Ausgabe Muster kommt ab Stelle i m+1 vor (13) q π[q] (14) fi (15) od Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 7
8 Berechne_Präfixfunktion(P) (1) m Länge von P; (2) π[1] 0; (3) k 0; (4) for q 2 to m do (5) while k > 0 and P[k+1] P[q] (6) do k π[k] (7) od; (8) if P[k+1] = P[q] (9) then k k+1 (10) fi; (11) π[q] k (12) od (13) return π Beispiel: P = a b a a b a a a b q = π(q) = Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 8
9 Zeitkomplexität: Laufzeit von Berechne_Präfixfunktion(P): Betrachte k: while-schleife (5) - (7) nur ausgeführt, falls k > 0. Wir beginnen mit k = 0 in (3), und in jedem Durchlauf der for-schleife wird k um maximal 1 erhöht. Andererseits in jedem Durchlauf der while-schleife k um mindestens 1 erniedrigt, denn π[k] < k k! D.h., amortisiert betrachtet: Kosten pro einem for-schleifendurchlauf O(1). Damit Laufzeit von Berechne_Präfixfunktion(P): O(m). Gesamtlaufzeit von KMP-Matcher: O(m+n) O(m) für Berechne_Präfixfunktion(P) und O(n) für Rest: Analyse analog zu Berechne_Präfixfunktion(P) mit q anstelle von k... Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 9
10 Korrektheit von Berechne_Präfixfunktion(P): Lemma 1: Sei π*(q) := {q, π(q), π(π(q)),... }. Dann gilt für q = 1, 2,..., m, dass π*(q) = { k P[1..k] ist Suffix von P[1..q] }. Beweis: " ": i π* ( q) ( ). j i = π q für ein j Beweis per Induktion über j: Ind anfang: j = 0 i = q und Beh. folgt, da P[1..q] Suffix von sich selbst ist. Ind beh. folgt aus der Tatsache, dass P[1.. π(i)] Suffix von P[1..i] und der Transitivität der Suffixrelation. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 10
11 " ": Widerspruchsbeweis: Ann.: j k P 1..k ist Suffix von P 1..q \ π* [ ] [ ] { } ( q). OE sei j maximal. Es muss j < q gelten, da q in beiden Mengen ist. Sei j kleinste Zahl in π*(q), die größer als j ist. P[1..j] ist Suffix von P[1..q] P[1..j ] ist Suffix von P[1..q] P[1..q] P[1..j] P[1..j ] P[1..j] ist Suffix von P[1..j ] und j ist maximal unter Zahlen mit dieser Eigenschaft. π(j ) = j und damit j π *( q) Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 11
12 Klar: Berechne_Präfixfunktion(P) korrekt für π(1) = 0 (siehe Zeile (2) ). Lemma 2: ( q) > 0 π( q) 1 π* ( q ). q = 1, 2,..., m: π 1 Beweis: Falls k = π(q) > 0, so ist P[1..k] Suffix von P[1..q]. D.h. auch, dass P[1..k 1] Suffix von P[1..q 1] ist. Mit Lemma 1 folgt k 1 π *( q 1). P[1..q] P[1..q-1] P[1..k] P[1..k-1] P[1..k] P[1..k-1] Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 12
13 Definiere für q = 2,..., m ( q 1) und P[ k + 1] P[ ] { k k π* } E q 1 : = = q Lemma 3: q = 2,..., m: π ( q) 0, = 1+ max falls E q-1 { k E } = o/ q 1, sonst. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 13
14 Beweis: π ( > 0): q Sei r = π( q), d.h. P[ 1.. r] ist Suffix vonp[ 1.. q] und mit r 1folgt P[] r = P[] q. Falls r auf von Also P P Lemma2 r [ 1.. k + 1] [ 1.. q] E = 0, so ex. kein = o. q 1 / { k π* P[ k + 1] = P[ q] } = 1+ max k π * = E q 1 ( q 1) für welches P 0). [ 1.. k] ausgeweitet werden kann, sodass ein Suffix entsteht (sonst wäre π( q) > Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 14
15 Korrektheit von Berechne-Präfixfunktion (P) nun wie folgt: Zu Beginn der for-schleife in Zeilen (4)-(12) gilt immer k = π [q - 1] Betreten der Schleife: Zeilen (2) und (3) Weitere Durchläufe: Zeile (11) Zeilen (5)-(10) passen k so an, dass es der korrekte Wert von π [q - 1] wird: while-schleife in Zeilen (5)-(7) sucht durch alle Werte mit k π * [ q 1] bis einer gefunden wird mit P[ k + 1] = P[ q]; dann ist k maximaler Wert in Menge E q 1 und dank Lemma 3 können wir π [q] den Wert k + 1 zuweisen. Falls kein solches k gefunden; sprich k=0, so wird π [q] auf 0 gesetzt. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 15
16 Mitteilung: Mit wenig Mehraufwand und i.w. analog zur Korrektheit von Berechne_Präfixfunktion(P) folgt schließlich die Korrektheit von KMP-Matcher(T,P). Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 16
17 8.1.2 Der KMP-Algorithmus als DEA Idee: Für festes Pattern P liest der KMP-Algorithmus den Text T von links nach rechts ein. Er kann also als deterministischer endlicher Automat (DEA, engl. DFA) interpretiert werden, wenn man den Fortschritt des Matchens in den Zuständen des DEA kodiert Sei M = M (M hängt von P ab) P = ( Σ, Q, q0, δ, F) P = P 1... P m, Q = {0, 1,... m}, q 0 = 0, F = {m} k δ ( i, a) = 0 P[1.. k] = z a und z ist max.anfangswort von P[1..i], das gleichzeitig auch Endwort von P[1..i]ist ( z = P[1..i]ist zulässig). falls es kein solches k gibt Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 17
18 Beispiel 1: q = P = a a b b a a b π(q) = b a a b b a a b a a a b b b Dieser Algorithmus ist besonders geeignet, wenn man zu festem Pattern P und vielen Textstrings T testen will, ob P in T vorkommt. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 18
19 Beispiel 2: q = P = a b a a b a a a b π(q) = b a 0 1 a b 2 a 3 a 4 b 5 a 6 a 7 a 8 b 9 b b a b b b a Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 19
20 8.2 Der Algorithmus von Boyer-Moore Für Anwendungen in der Praxis ist meist der Algorithmus von Boyer-Moore (bzw. Variationen davon) erste Wahl. Er ist besonders vorteilhaft bei großen Alphabeten und relativ langen Mustern. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 20
21 Naiver Matcher ( T, P, ) (1) n Länge von T; m Länge von P; (2) (3) (4) s 0 (5) while s n m do (6) j m ; (7) while j > 0 and P [ j] = T[ s + j] do (8) j j 1 (9) od (10) if j = 0 (11) then Ausgabe Muster kommt ab Stelle s+1 vor ; (12) s s +1 (13) else s s +1 (14) fi (15) od Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 21
22 Boyer-Moore-Matcher ( T, P, ) (1) n Länge von T; m Länge von P; (2) λ Berechne_Letztes _Vorkommen ( P, m, ); (3) γ Berechne_Gutes_Suffix( P, m) ; (4) s 0 (5) while s n m do (6) j m ; (7) while j > 0 and P [ j] = T[ s + j] do (8) j j 1 (9) od (10) if j = 0 (11) then Ausgabe Muster kommt ab Stelle s+1 vor ; (12) s s +1 s s +γ [0] (13) else s s +1 s s + max (γ [j], j λ[t[s+j]]) (14) fi (15) od Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 22
23 Die wesentlichen Eigenschaften des Algorithmus von Boyer-Moore sind der Vergleich des Musters selbst gegen ein Textstück von rechts nach links und die Benutzung zweier, unabhängig voneinander arbeitender Heuristiken schlechter Buchstabe und gutes Suffix. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 23
24 Die Heuristik schlechter Buchstabe Angenommen, es kommt beim zeichenweisen Vergleich P j T s + j für ein j, 1 j m zum Mismatch [ ] [ ]. Definiere k { i T[ s + j] = P[ i] }, fallst[ s j] max + i m 0, sonst. 1 : = in P vorkommt. Lemma: s kann gemäß der Heuristik schlechter Buchstabe um j-k erhöht werden. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 24
25 Beweis: Fall 1: k=0: D.h., T + Beispiel: [ s j] gegenüber T um T[s+j] kommt nicht in j nach rechts vor und so kann l T: a b r d a d a b r a P: s = 3 Verschiebung um j=2: a b a d j=2 verschoben werden. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 25 P a b a d n m Extremfall: T = b, P = a k = 0 und j = m in allen Fällen, also maximale Verschiebung möglich! P
26 Fall 2: k < j : D.h., T s + [ j] kommt in Ohne Verlust kann um P j k links von der Stelle verschoben werden. j vor und j k > 0. Beispiel: T[s+j] l T: a b r d a d a b r a P: s = 1 k = 2 a l a d j=4 (=m) j-k =2 a l a d Verschiebung um j-k = 4-2 = 2 Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 26
27 Fall 3: k >j: D.h. T[s+j] kommt in P rechts von der Stelle j vor und j-k < 0. Heuristik schlägt Verschiebung des Vergleichsfensters nach links vor, d.h. Verkleinerung von s. Boyer-Moore-Algorithmus umgeht diese Problematik dadurch, dass zweite Heuristik gutes Suffix immer Verschiebung nach rechts vorschlägt und der BM-Algorithmus immer die maximale Verschiebung nach rechts wählt (vgl. auch Zeile (13) im Algorithmus). Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 27
28 Beispiel: T[s+j] T: a b r a l l d a b r a P: s=2 k=4 (=m) a l a j=3 Negative Verschiebung um j-k = -1: l a l a l Sei λ[a] die am weitesten rechte Position in P, an der in P vorkommt (also insbesondere a = P[λ[a]]). Falls a nicht in P vorkommt, so setze λ[a]:= 0 a Σ λ heißt Letztes_Vorkommen und wird durch folgenden Algorithmus bestimmt: Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 28
29 Berechne_letztes_Vorkommen ( P, m,σ) : for alle a Σ do λ[ a] 0; od; for j 1 to m do λ[ P[] j ] j; od; return λ Laufzeit: O ( Σ + m) Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 29
30 Die Heuristik gutes Suffix : T[s+j] T: a b r a l a l a b r a s=2 P: a l b a l j=3 gutes Suffix Verschiebung, bis γ[j] = 5-2 = 3 al wieder auftritt: a l b a l Seien Q und R Zeichenketten: Q heißt ähnlich zu R (in Zeichen Q ~ R), falls Q Suffix von R oder R Suffix von Q ist. Heuristik gutes Suffix besagt, dass wir, falls P [ j] T[ s + j] (j < m), das Vergleichsfenster um γ [ j] : = m max{ k P[ j m] ~ P[ 1.. k] } 0 k< m nach rechts schieben können. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 30
31 γ ist die Funktion Gutes_Suffix Zur Berechnung von : γ Beobachtung 1: γ[ j] m π[ m] Damit Umschreiben der Definition von γ[ j]: γ [ j] = m π max ( m) k< m { k P[ j m] ~ P[ 1.. k] } Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 31
32 [ 1 ] [ ] Beobachtung 2: Falls P..k Suffix von P j +1.. m ist, dann ist es auch Suffix von P [ 1..m] und deshalb k π m gemäß Definition. [ ] von π P[1..m] 1 P[1..k] P[j+1..m] k j+1 m [ ] Damit weiteres Umschreiben der Definition von γ j : γ [ j] = m π max ( m) k< m ({ π[ m] } { k P[ j m] ist Suffix von P[ 1.. k] }) Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 32
33 Zur weiteren Vereinfachung von γ: s Sei P : = P ( P revertiert), und π die Präfixfunktion von Sei weiter k maximal unter allen Worten mit der Eigenschaft, dass P j m Suffix von P 1.. k [ ] [ ]ist. P. Lemma: [ l] = m j, wobei l = ( m k) + ( m j). π Beisp: T = b a c a c a b... P = a c b a c m = 5, k = 2 ist maximal a c b a c j = 3 Verschiebung P = c a b c a π [l] = π [l] = m j = 2, wobei l = (m k) + (m j) π [5] = 2 = (5 2) + (5 3) = 5 Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 33
34 Beweis: P [ 1.. m j] ist Suffix von P [ 1.. l], also π [ l] m j. P [1..2] ist Suffix von P [1..5], also π [5] >= 5 3. Widerspruchsannahme: π l > m P [1..3] Suffix von P [1..5], P [1..3] = P [3..5] P[3..5] = P[1..3] Def. π P d.h. P d.h. P m [ ] j [ 1.. π [ l ] ist Suffix von P [ 1.. l], [ 1.. π [] l ] = P [ l π [ l] l], [ π [] l m] = P m l m l + π [ l] [ ]. Einsetzen von l = ( m k) + ( m j) = 2m k j ergibt : P[ m π [ l] m] = P[ k m + j k m + j + π [ l ] P[ m π [ l] m] ist Suffix von P[ 1.. k m + j + π [ l] ]. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 34
35 Nun gilt: m π und damit ist [ l] + 1 < m ( m j) + 1 = j + 1 [ j m] Suffix von P[ 1.. k m + j + [ l ] P π =: k Schließlich gilt wegen π [ ] k : = k m + j + π [ l]. l > m j auch k > k, wobei zur Maximalität von k Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 35
36 Mit Hilfe des Lemmas und der Tatsache, dass aus π [ l] = m j folgt, dass j = m π [ l] und k = m l + π [ l], können wir die Definition von γ ein letztes Mal umschreiben: γ [ j] = m max( { π[ m] } { m l + π [ l] j = m π [ l] }) 1 l m = min 1 l m ({ m π[ m] } { l π [] l j = m π [] l }) Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 36
37 Berechne_Gutes_Suffix (P,m): Beispiel: m = 5 π Berechne_Präfixfunktion( P); P Revertiere ( P); π Berechne_Präfixfunktion ( P ); for j 0 to m do γ[ j] m π[ m] od; for l 1 to m do j m π [ l]; if γ[ j] > l π [ l] then γ[ j] l π [ l] fi od; return γ for l := 5: j := 5 - π [5] = 3 γ = P = a c b a c π = P = c a b c a π = for j... γ = for l := 1 j := 5 - π [1] = 5 γ = for l := 2 j := 5 - π [2] = 5 γ = for l := 3:... for l := 4: j := 5 - π [4] = 4 γ = Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 37
38 Laufzeit Berechne_Gutes_Suffix: O(m) Gesamte Laufzeit Boyer-Moore: (Worst Case) O (( n m) m + Σ ) Unter der Annahme eines großen Alphabets Σ (z.b. alle Buchstaben) und eines relativ kurzen Suchstrings P mit Länge m << n ergibt sich eine Laufzeit (Average Case) O( n m) Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 38
39 Boyer-Moore-Matcher ( T, P, ) Wiederholung für Beispiel (1) n Länge von T; m Länge von P; (2) λ Berechne_Letztes _Vorkommen ( P, m, ); (3) γ Berechne_Gutes_Suffix( P, m) ; (4) s 0 (5) while s n m do (6) j m ; (7) while j > 0 and P [ j] = T[ s + j] do (8) j j 1 (9) od (10) if j = 0 (11) then Ausgabe Muster kommt ab Stelle s+1 vor ; (12) s s +γ [0] (13) else s s + max (γ [j], j λ[t[s+j]]) (14) fi (15) od Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 39
40 Beispiel für Boyer-Moore-Algorithmus: T = b a c a c a b c a c b a c b a P = a c b a c, P = c a b c a m = 5, k = 2 max π = π = γ = Gutes Suffix λ[a] = 4, λ[b] = 3, λ[c] = 5, letztes Vorkommen T = b a c a c a b c a c b a c b a P = a c b a c j = 3, s s + max(γ [j], j λ[t[s+j]]) = 0 + max(γ [3], 3 λ[c]) = 3 P = a c b a c j = 4, s 3 + max(γ [4], 4 λ[b]) = 6 P = a c b a c j = 5, s 6 + max(γ [5], 5 λ[b]) = 6 +2 = 8 P = a c b a c j = 0. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 40
41 Und noch ein Beispiel für den Boyer-Moore-Algorithmus: T = D I E S I S T J E T Z T D E R T E X T... P = P = P = P = P = P = P = P = T E S T T E S T T E S T T E S T T E S T T E S T T E S T T E S T Beobachtung: In Texten mit einem großen Alphabet Σ ist die Heuristik Falscher Buchstabe oft sehr erfolgreich, sie ist meist wichtiger als gutes Suffix. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 41
42 8.3 Der Algorithmus von Karp-Rabin Vereinfachende Annahme: Σ = { 0,1,...,9} Verallgemeinerung auf beliebige Alphabete leicht zu tun. Definiere folgende Fingerabdrucksfunktion für eine Primzahl p: F ( x) x ( mod ). : Z Z +, F p p p p = Zur Vereinfachung sucht folgender Algorithmus nur nach dem ersten Auftreten von P in T. Er interpretiert Zeichenketten als natürliche Zahlen. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 42
43 Algorithmus von Karp-Rabin: Karp_Rabin_Matcher (T, P) p zufällige Primzahl zwischen 1 und mn match false; s 0; while match=false and s n m do if Fp ( T[ s s + m] ) = Fp ( P) then match true else Berechne F p T[ s s + m + 1] aus F p ( T[ s s + m] ); s s + 1 fi; od; return match ( ) 2 2 log( mn ); Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 43
44 Entscheidend für die Effizienz des Algorithmus: T[ s + 2..s + m + 1] läßt sich einfach und schnell F p T s s + m berechnen F p F p ( ) aus ( [ ]) : ( T[ s s + m + 1] ) = ( ( m 1 10 F ( T[ s s + m] ) 10 T[ s + 1] ) + T[ s + m + 1] )( mod p) p ( T[ s + 2..s + m + 1] ) F p kann also mit konstant vielen arithmetischen Operationen modulo p aus F p ( T[ s s + m] ) berechnet werden, m falls 10 1 ( mod p) schon einmalig vorausberechnet wurde. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 44
45 Beispiel: T = P = Primzahl p = 13 F F F F ( P) = 7 ( T[ 1..5] ) = F ( ) ( T[ 2.. 6] ) = F ( ) 13 ( T[ 3..7] ) = F ( 31415) 13 = 0 = 1 = 7 Match! F 13 ( T[ 9..13]) = F ( ) = 7 Mismatch! 13 Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 45
46 Mitteilung: Der Karp-Rabin-Algorithmus benötigt O(n+m) Schritte und hat Fehlerwahrscheinlichkeit O 1. n Im Gegensatz zu anderen Algorithmen läßt sich der Karp-Rabin- Algorithmus leicht auf zweidimensionale Mustersuche verallgemeinern und ist auch für Online-(Realzeit)-Eingabe geeignet. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 46
47 8.4 Suffixbäume Definition: Ein Suffixbaum T für eine Zeichenkette S mit S = n ist ein Baum mit Wurzel mit n Blättern, nummeriert von 1 bis n: Jeder interne, von der Wurzel verschiedene Knoten hat mindestens zwei Kinder und jede Kante in T ist mit einem nichtleeren Teilwort von S beschriftet. Keine zwei Kanten, die einen Knoten verlassen, können Beschriftungen haben, die mit demselben Buchstaben beginnen. Für jedes Blatt i ( 1 i n) gilt, dass die Konkatenation der Kantenbeschriftungen auf dem Pfad der Wurzel zu i genau das Suffix S i.. n von S [ ] ergibt. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 47
48 Um zu gewährleisten, dass Suffixbaum für eine Zeichenkette S immer existiert, nehmen wir an, dass S[ n] = $, wobei $ ein Sonderzeichen ist, das nirgends sonst in S vorkommt. Beispiel: S=aabbabb$ a $ b 8 abbabb$ bb $ abb$ aabbabb$ b 1 abb$ $ 4 abb$ $ 7 aabbabb$ aabbabb$ aabbabb$ aabbabb$ aabbabb$ aabbabb$ Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 48
49 Eine erste Anwendung: Lösung des grundlegenden Problems Mustersuche in Zeichenketten mittels Suffixbäumen: Gegeben Suffixbaum T für Text S und ein Muster P. Gehe in T entlang des durch P eindeutig bestimmten Pfades, bis P entweder erschöpft ist oder bis keine Übereinstimmung mehr möglich ist. Im ersten Fall repräsentiert jedes Blatt im zugehörigen Unterbaum die Anfangsposition eines Vorkommens von P in S. Im zweiten Fall kommt P nicht in S vor. Beispiel (Fortsetzung): P = ab, S = aabbabb$ P kommt in S ab den Positionen 2 und 5 vor. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 49
50 Es gilt: Kommt Pk-mal in S vor, so ist die Zeit zur Bestimmung aller Vorkommen von P in S (bei gegebenem Suffixbaum) O(m+k). Denn: Mache Tiefensuche auf betreffendem Unterbaum und notiere die vorkommenden Blattnummern. Da jeder innere Knoten mindestens zwei Kinder hat, ist die Zahl der vorkommenden Blätter proportional zur Zahl der traversierten Kanten und somit ist die Laufzeit der Tiefensuche O(k). Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 50
51 Ein naiver Algorithmus zum Aufbau von Suffixbäumen: Idee: Beginne mit einzelner Kante für das Suffix Mit i=2 beginnend, füge sukzessiv Suffixe S[ 1.. n]. S i.. n [ ] hinzu. Genauer: Sei N i der Baum, der nach Eintragen von Suffix S i.. n entstand. [ ] Konstruktion von N i+1 aus N i : Starte an der Wurzel von N i und finde den eindeutig bestimmten längsten Pfad, der mit einem Präfix von i +1.. n übereinstimmt. S[ ] Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 51
52 Zwei Fälle: Der Pfad endet inmitten einer Kante (u,v) in T: Dann zerteile (u,v) in zwei Kanten durch Einfügen eines neuen Knotens w an der Stelle, wo die letzte Buchstabenübereinstimmung war. Beschrifte Kanten (u,w) und (w,v) durch entsprechende Aufteilung der Kantenbeschriftung für (u,v). (*) Füge neue Kante (w,i+1) hinzu und beschrifte sie mit dem Suffix von S [ i +1.. n], das noch nicht beim Finden des beschriebenen längsten Pfades verbraucht wurde. Der Pfad endet an einem Knoten w in T : (*). Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 52
53 Beispiel: aabbabb$ S=aabbabb$ abbabb$ a bbabb$ 1 aabbabb$ 1 aabbabb$ 2 aabbabb$ a bbabb$ a b abbabb$ 1 aabbabb$ bbabb$ 3 2 aabbabb$ aabbabb$ abbabb$ 1 aabbabb$ bbabb$ 2 aabbabb$ babb$ 3 aabbabb$ abb$ 4 aabbabb$ Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 53
54 Bei Annahme eines Alphabets konstanter Größe hat obiger Algorithmus Laufzeit O(n²). Mitteilung: Mit Hilfe der Algorithmen von McCreight, Weiner oder Ukkonen lassen sich Suffixbäume in Zeit O(n) aufbauen. Anwendungen von Suffixbäumen: Suffixbäume sind den Algorithmen von KMP oder BM weit überlegen, falls für eine gegebene, feste (!) Zeichenkette mehrmals häufig nach verschiedenen Mustern gesucht werden muss. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 54
55 Verallgemeinerte Suffixbäume: Darstellung einer Menge von Zeichenketten anstelle nur einer. { S S..., } 1, 2, S r Eine Konstruktionsmöglichkeit: Nimm an, alle r Zeichenketten enden in verschiedenen Endsymbolen $ 1,$ 2,...,$ r. Konkateniere S, S, , S r und bilde Suffixbaum für konkatenierte Zeichenkette in Zeit O( S S ). 1 r Die entstehenden Blattnummern lassen sich leicht in zwei Blattnummern umwandeln, wobei eine die zugehörige Zeichenkette und die andere die Position in der jeweiligen Zeichenkette bezeichnet... Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 55
56 Problem: Künstliche Suffixe, die sich über mehr als eine Zeichenkette erstrecken. Da aber $ i $ j für i j, muss jeder Pfad von der Wurzel zu einem inneren Knoten mit einer Teilzeichenkette nur einer der Zeichenketten S, S, , S r beschriftet sein. Daher können nur Kanten zu Blättern mit Teilwörtern aus verschiedenen Zeichenketten beschriftet sein; Weglassen des entsprechenden zweiten Beschriftungsteils löst das Problem. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 56
57 Beispiel: S S 1 3 = ab$ 1, = S o S 1 2 S = 2 = aa$ 2, ab$ aa$ 1 2 b$ b$ 1 aa$ 1 aa$ 2 2 $ 2 a$ 2 a $ 2 $ 1 aa$ Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 57
58 Anwendung: Beispiel: Längste gemeinsame Teilzeichenkette zweier Zeichenketten S 1 = superiorcalifornialives S 2 = sealiver Lösung: alive Satz: Das Problem des Findens der längsten gemeinsamen Zeichenkette zweier Zeichenketten S 1 und S 2 kann in Zeit O ( S 1 + S 2 ) gelöst werden. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 58
59 Allgemeine Lösungsmethode: Bilde verallgemeinerten Suffixbaum für S 1 und S 2. Jedes Blatt repräsentiert entweder ein Suffix von S 1 oder ein Suffix von S 2. Markiere jeden inneren Knoten v mit 1 bzw. 2 je nachdem, ob es ein Blatt in seinem Unterbaum gibt, das ein Suffix von S 1 oder S 2 ist. Die Pfadbeschriftungen zu einem mit sowohl 1 als auch 2 markierten inneren Knoten bilden eine gemeinsame Teilzeichenkette von S 1 und S 2. Suche also denjenigen Pfad dieser Art, der die längste Teilzeichenkette ergibt. Dies geht z.b. mit Tiefensuche in Linearzeit. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 59
60 Anwendung: Datenkompression: Definition: Gegeben: Eine Zeichenkette S der Länge n und sei 1 i n 1. Die Teilzeichenkette Prior i ist das längste Präfix von S[i.. n], welches zugleich als Teilzeichenkette in S[1.. i-1] vorkommt. 2. l i := Prior i und für l i > 0 sei s i die Anfangsposition des am weitesten linken Vorkommens von Prior i in S[1.. i-1]. Beispiel: S = a b a x c a b a x a b z Prior 7 = b a x l 7 = 3, s 7 = 2. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 60
61 Wir betrachten Variante der Ziv-Lempel-Kompressionsmethode Idee: Falls S[1.. i-1] schon repräsentiert (komprimiert) ist und falls l i > 0, so müssen die nächsten l i Buchstaben von S (d.h. Prior i ) nicht explizit angegeben werden, sondern können durch das Paar (s i,l i ) beschrieben werden. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 61
62 Kompressionsalgorithmus: i 1; repeat berechne l i und s i ; if l i > 0 then output (s i, l i ); i i + l i else output S[ i ]; i i + 1 fi; until i > n Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 62
63 Beispiel: 1. S = a b a c a b a x a b z 2. S = ( ) 16 ab ab(1,1) c (1,3) x (1,2) z ab ( 1,2 )( 1,4 )( 1,8 )( 1,16) Implementierung des Kompressionsalgorithmus mit Hilfe von Suffixbäumen: Zentral: Berechnung von l i und s i. Beobachtung: Komprimierte Teilwörter überlappen nicht miteinander. Falls jedes gewünschte Paar (s i,l i ) in Zeit O(l i ) gefunden werden kann, so ist die Gesamtlaufzeit des Algorithmus O(n). Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 63
64 Realisierung: Zunächst konstruiere Suffixbaum T zu S in Linearzeit. Nummeriere jeden Knoten v mit: c v := kleinste Blattnummerierung im Unterbaum von v D.h., gibt die am weitesten linke Anfangsposition in S für alle Vorkommen derjenigen Teilzeichenkette in S, die den Pfad von der Wurzel von T bis v beschriftet. Mit Standardbaumtraversierungen (z.b. Tiefensuche) können die -Werte in O(n) Zeit für alle Baumknoten bestimmt werden. c v c v Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 64
65 Nun Anwendung der c v -Werte: Zur Berechnung von (s i,l i ) folgt der Algorithmus dem eindeutig bestimmten Pfad in T, der durch ein Präfix von S[i.. n] bestimmt ist. Der Pfad endet an einem Punkt p (nicht notwendig einem Knoten) und sei v der erste Knoten nach p (p = v möglich). Dabei ergibt sich p entweder dadurch, dass ein Mismatch auftritt oder dass auf dem Pfad zu p bereits i-c v Symbole verbraucht wurden. s l i i : = c : = v Zahl der auf dem Pfad zu p verbrauchten Symbole Bei konstanter Alphabetgröße findet sich somit (s i,l i ) in Zeit O(l i ), w.z.z.w. Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 65
66 < Ende Vorlesung Algorithmen > Vorlesung Algorithmen (RN/MK/AZ) WSI für Informatik, Universität Tübingen 66
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
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
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Teil 6: Suche in Zeichenketten Martin Hofmann LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München 16. April 2016 Martin Hofmann
MehrString matching: Überblick
String matching: Überblick String matching = Erkennung von Zeichenketten. Problemstellung & Anwendungen Grundlagen Rabin-Karp Verfahren (basierend auf hashing) String-matching mit endlichen Automaten Knuth-Morris-Pratt
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 21 (29.7.2014) String Matching (Textsuche) II Algorithmen und Komplexität Textsuche / String Matching Gegeben: Zwei Zeichenketten (Strings)
MehrTU München. Hauptseminar: WS 2002 / Einführung in Suffix - Bäume
TU München Hauptseminar: WS 2002 / 2003 Einführung in Suffix - Bäume Bearbeiterin: Shasha Meng Betreuerin: Barbara König Inhalt 1. Einleitung 1.1 Motivation 1.2 Eine kurze Geschichte 2. Tries 2.1 Basisdefinition
MehrAlgorithmen zur exakten Suche in Texten. Algorithmen und Datenstrukturen II 1
Algorithmen zur exakten Suche in Texten Algorithmen und Datenstrukturen II 1 Die Klasse String Zeichenketten sind in Java Objekte. Sie können mit dem +-Operator zu neuen Objekten verknüpft werden. String
MehrInformatik II, SS 2018
Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 20 (9.7.2018) String Matching (Textsuche) Algorithmen und Komplexität Textsuche / String Matching Gegeben: Zwei Zeichenketten (Strings)
MehrAlgorithmen und Datenstrukturen II
Algorithmen und Datenstrukturen II AG Praktische Informatik Technische Fakultät Vorlesung Sommer 2009 Teil I Algorithmen zur exakten Suche in Texten Die Klasse String Zeichenketten sind in Java Objekte.
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
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
MehrInformatik II, SS 2016
Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 20 (13.7.2016) String Matching (Textsuche) Algorithmen und Komplexität Textsuche / String Matching Gegeben: Zwei Zeichenketten (Strings)
MehrSuche in Texten. Verschiedene Szenarios: Dynamische Texte. Texteditoren Symbolmanipulatoren. Statische Texte
Suche in Texten Suche in Texten Verschiedene Szenarios: Dynamische Texte Texteditoren Symbolmanipulatoren Statische Texte Literaturdatenbanken Bibliothekssysteme Gen-Datenbanken WWW-Verzeichnisse 2 Suche
MehrAlgorithmen und Datenstrukturen II. Suchen in Texten. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München
Algorithmen und Datenstrukturen II Suchen in Texten Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 27.03.2018 06:32 Inhaltsverzeichnis Ein Text.......................................
MehrInformatik II, SS 2018
Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 21 (11.7.2018) String Matching (Textsuche) II Greedy Algorithmen I Algorithmen und Komplexität Textsuche / String Matching Gegeben: Zwei
Mehr1.3 Knuth-Morris-Pratt-Algorithmus
1.3 Knuth-Morris-Pratt-Algorithmus Präprozessing bestimmt längste Ränder der Präfixe von P Die Kenntnis der Ränder erspart Vergleiche bei periodischen Suchwörtern Laufzeit: Θ(m) für das Präprozessing,
MehrZeichenketten Benedikt Straßner. Programming Systems Group Martensstr Erlangen Germany
Zeichenketten 16.04.2018 Benedikt Straßner Programming Systems Group Martensstr. 3 91058 Erlangen Germany Übersicht String Matching Algorithmen Naive Stringsuche Knuth Morris Pratt (KMP) Algorithmus Boyer-Moore
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
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
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
MehrDer Boyer-Moore Algorithmus
Der Boyer-Moore Algorithmus Hauptseminar Pattern-Matching und Textalgorithmen 29.10.2002 Thomas Hellwig Der Naive Algorithmus Um auf den Boyer-Moore Algorithmus hinzuleiten, betrachten wir zuerst das grundsätzliche
MehrInformatik II Precomputation
lausthal Informatik II Precomputation. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Definitionen Preconditioning (Vorbehandlung): Aufgabe: löse nacheinander mehrere Probleme, die einen
MehrZeichenketten. 10. Mai 2017 Simon Bachstein Simon Bachstein Hallo Welt -Seminar - LS 2 Zeichenketten 1
Zeichenketten 10. Mai 2017 Simon Bachstein 10.05.2017 Simon Bachstein Hallo Welt -Seminar - LS 2 Zeichenketten 1 Übersicht String-Matching Problem Motivation Algorithmen zur Lösung Naive Stringsuche KMP
Mehr1.5 Boyer-Moore-Algorithmus
1.5 Boyer-Moore-Algorithmus Suche nach Vorkommen von P in T von links nach rechts. In einer Phase erfolgen Vergleiche von rechts nach links. Verschiebungsheuristiken: Bad Character und Good Suffix. Laufzeit:
MehrInformatik II, SS 2016
Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 21 (15.7.2016) String Matching (Textsuche) Approximate String Matching Algorithmen und Komplexität Textsuche / String Matching Gegeben:
MehrZeichenketten. 29. April 2015 Benedikt Lorch. Benedikt Lorch Zeichenketten April
Vorlage Zeichenketten 29. April 2015 Benedikt Lorch Benedikt Lorch Zeichenketten 17. 29. April 2015 1 Motivation String Matching in the DNA Alphabet 1 Σ DNA = {A, G, C, T} DNA Text: 1 982 672 Zeichen Suchstring:
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
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
Mehr4.4 Anwendungen von Suffixbäumen und Suffix-Arrays
4.4 Anwendungen von Suffixbäumen und Suffix-Arrays exakte Suche in unveränderlichen Texten (schon besprochen) inexakte Suche in unveränderlichen Texten Finden von Regelmäßigkeiten (z.b. längste Wiederholungen)
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,
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
MehrAlgorithmen und Datenstrukturen 2
Algorithmen und Datenstrukturen 2 Lerneinheit 3: Greedy Algorithmen Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester 2016 10.5.2016 Einleitung Einleitung Diese Lerneinheit
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
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 20 (23.7.2014) All Pairs Shortest Paths, String Matching (Textsuche) Algorithmen und Komplexität Vorlesungsevaluation Sie sollten alle eine
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
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
MehrAlgorithmische Bioinformatik
Algorithmische Bioinformatik Knuth-Morris-Pratt Algorithmus Natürliche Erweiterung des naiven Matching Ulf Leser Wissensmanagement in der Bioinformatik Inhalt dieser Vorlesung Knuth-Morris-Pratt Algorithmus
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
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
MehrÜbersicht. 1 Einführung. 2 Suchen und Sortieren. 3 Graphalgorithmen. 4 Algorithmische Geometrie. 5 Textalgorithmen. 6 Paradigmen
Übersicht 1 Einführung 2 Suchen und Sortieren 3 Graphalgorithmen 4 Algorithmische Geometrie 5 6 Paradigmen Übersicht 5 Editdistanz (Folie 446, Seite 83 im Skript) Eingabe: Zwei Strings v und w Frage: Kommt
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
MehrProgramm heute. Algorithmen und Datenstrukturen (für ET/IT) Entartete Suchbäume. Beispiel: Balancieren von Suchbaum. Wintersemester 2012/13
Programm heute Algorithmen und Datenstrukturen (für ET/IT) Wintersemester / Fortgeschrittene Datenstrukturen Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München 8 Such-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
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)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2014 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 7 Fortgeschrittene Datenstrukturen 8 Such-Algorithmen
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 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
Mehr4. Tries und kd-bäume
4. Tries und kd-bäume Digitale Suchbäume (Tries) kd-bäume Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Tries und kd-bäume SS 2019 4-1 Tries (1) Problem mit den bisherigen Suchbäumen
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:
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:
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:
MehrKonstruktion von Suffix Bäumen
Konstruktion von Suffix Bäumen Prof. Dr. S. Albers Prof. Dr. Th. Ottmann 1 : Impliziter Suffix Baum Definition: Ein impliziter Suffix Baum ist der Baum, den man aus dem Suffix Baum für t$ enthält indem
MehrAlgorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8
ETH Zürich Institut für Theoretische Informatik Prof. Dr. Angelika Steger Florian Meier, Ralph Keusch HS 2017 Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 Lösungsvorschlag zu Aufgabe 1
MehrAlgorithmische Bioinformatik
Algorithmische Bioinformatik Suffixbäume Ulf Leser Wissensmanagement in der Bioinformatik Ziele Perspektivenwechsel: Von Online zu Offline-Stringmatching Verständnis von Suffix-Bäumen als Datenstruktur
MehrRandomisierte Algorithmen 2. Erste Beispiele
Randomisierte Algorithmen Randomisierte Algorithmen 2. Erste Beispiele Thomas Worsch Fakultät für Informatik Karlsruher Institut für Technologie Wintersemester 2016/2017 1 / 35 Randomisierter Identitätstest
MehrEuklidischer Algorithmus
Euklidischer Algorithmus Ermitteln des größten gemeinsamen Teilers mit Euklid: function ggt (m, n) Hierbei ist m begin 0undn 0vorausgesetzt. if m = 0 then return n else return ggt (n mod m, m) fi end Man
MehrProgramm heute. Algorithmen und Datenstrukturen (für ET/IT) Such-Algorithmen für Wörterbücher. Wörterbuch. Sommersemester Dr.
Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 0 Fortgeschrittene Datenstrukturen Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Such-Algorithmen
MehrTheoretische Grundlagen der Informatik
Theoretische Grundlagen der Informatik Vorlesung am 20. November 2014 INSTITUT FÜR THEORETISCHE 0 KIT 20.11.2014 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der
MehrKonstruktion von Suffix Bäumen
Konstruktion von Suffix Bäumen Prof. Dr. S. Albers Prof. Dr. Th. Ottmann 1 Ukkonen s Algorithmus: Impliziter Suffix Baum Definition: Ein impliziter Suffix Baum ist der Baum, den man aus dem Suffix Baum
MehrTheoretische Grundlagen der Informatik. Vorlesung am 17. Januar INSTITUT FÜR THEORETISCHE INFORMATIK
Theoretische Grundlagen der Informatik 0 17.01.2019 Torsten Ueckerdt - Theoretische Grundlagen der Informatik KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Evaluation Ergebnisse
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:
MehrKombinatorische Optimierung
Juniorprof. Dr. Henning Meyerhenke 1 Henning Meyerhenke: KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Vorlesung 4 Programm des
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
MehrRelationen und DAGs, starker Zusammenhang
Relationen und DAGs, starker Zusammenhang Anmerkung: Sei D = (V, E). Dann ist A V V eine Relation auf V. Sei andererseits R S S eine Relation auf S. Dann definiert D = (S, R) einen DAG. D.h. DAGs sind
MehrInformatik II, SS 2018
Informatik II - SS 28 (Algorithmen & Datenstrukturen) Vorlesung 22 (6.7.28) Greedy Algorithmen II (Datenkompression) Algorithmen und Komplexität Datenkompression Reduziert Größen von Files Viele Verfahren
MehrAlgorithmen 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
MehrAUTOMATENBASIERTE ALGORITHMEN UND EXAKTES 2D-PATTERN-MATCHING. Vincent Holluba
AUTOMATENBASIERTE ALGORITHMEN UND EXAKTES 2D-PATTERN-MATCHING Vincent Holluba Gliederung 1. Einleitung und Wiederholung 2. Suchwortbaum (Trie) 3. Aho-Corasick Automat i. Matching mit Wildcards ii. 2D-Pattern
MehrFrank Heitmann 2/47. 1 Ein PDA beginnt im Startzustand z 0 und mit im Keller. 2 Ist der Automat
Formale Grundlagen der Informatik 1 Kapitel 5 Über reguläre Sprachen hinaus und (Teil 2) Frank Heitmann heitmann@informatik.uni-hamburg.de 21. April 2015 Der Kellerautomat - Formal Definition (Kellerautomat
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Kürzeste Wege Maike Buchin 4. und 6.7.2017 Einführung Motivation: Bestimmung von kürzesten Wegen ist in vielen Anwendungen, z.b. Routenplanung, ein wichtiges Problem. Allgemeine
MehrKryptographische Protokolle
Kryptographische Protokolle Lerneinheit 2: Generierung von Primzahlen Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Wintersemester 2018/2019 15.11.2018 Einleitung Einleitung Diese Lerneinheit
MehrRückblick: Längste gemeinsame Zeichenkette
aaadg3icdvjdb9mwfhuwbin8bcablxytanngm5rjbjogkvhcc9kq6dapjirhvu3donfmoxvbyn/gff4z/wyngrib48pjjs/98m25tgrbtqndx96kf2f17r21+8gdh48ep1nfehqizakyjjguup0lvipgoywmnwlocgu0swscjsspjf/0aptmmv9iqglijky5n3fgjammg55pforwywsw0xxqcvwkvtoomgxe20edkiyaucqsygsiy1m9pcehpn4148nfvi2pmbewm8qgjigu57bnry0bwnje0ulh+65zhyt4neyupstkagavokg6fneb3zfbs5imgpwyv4lithi4x2a8adg5vrhna1tx3228g6p/fju6qhqqcl/zdrkqxdo56u3wn8pe4ga/fhua/wvrl2xtc/gctxbszevjvliyg9wwqbuer2fhylfwccbafs41fjqtaqpjgha0abxbfgqgrlxx3q7mnamd23aanx7lmcmesewe3ocw/tvd0kzrkktczkoivulryft9izrlqxn97xxr+pjbxzri8errvtucyut9o1mz248tz4vsqm66rmelwebi5mrhkvfajkgcoexxjwvmc6oom+4cbqrntp2rdrv+mghlfu9/qvqtwhfott0x1mdxfuaype45wadunh/0x/8hj4nefpaiz3ubw/1urmgnvuav0rak0ds0rb/rmroh5i28794p76e/6u/4a3+vc13xrnkeowvmh/0gfb8bjw==
MehrInformatik II, SS 2016
Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 22 (20.7.2016) Greedy Algorithmen - Datenkompression Algorithmen und Komplexität Greedy Algorithmen Greedy Algorithmen sind eine Algorithmenmethode,
MehrEffiziente Algorithmen und Komplexitätstheorie
1 Effiziente lgorithmen und Komplexitätstheorie Vorlesung Thomas Jansen 29.06.2006 2 Burrows-Wheeler-Kompression: Verbesserungen dreischrittiges Kompressionsverfahren Burrows- Wheeler- Transformation Globale
MehrInformatik III. Christian Schindelhauer Wintersemester 2006/07 8. Vorlesung
Informatik III Christian Schindelhauer Wintersemester 2006/07 8. Vorlesung 17.11.2006 schindel@informatik.uni-freiburg.de 1 Prinzip des Kellerautomats Push-Down-Automaton (PDA) Ein Kellerautomat vereinigt
MehrTheoretische Grundlagen der Informatik
Theoretische Grundlagen der Informatik Vorlesung am 16.11.2010 INSTITUT FÜR THEORETISCHE INFORMATIK 0 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft
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
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 und Datenstrukturen (Informatik II) SS Klausur
Lehrstuhl für Algorith. und Datenstrukturen Prof. Dr. Hannah Bast Axel Lehmann Algorithmen und Datenstrukturen (Informatik II) SS 2013 http://ad-wiki.informatik.uni-freiburg.de/teaching Klausur Mittwoch
MehrEinleitung. Kapitel 1
Kapitel 1 Einleitung In diesem Abschnitt geben wir einen kurzen Überblick über den Inhalt der Vorlesung. Wir werden kurz die wesentlichen Probleme erläutern, die wir ansprechen wollen. Wir werden auch
MehrRandomisierte Algorithmen
Randomisierte Algorithmen Kapitel 1 Markus Lohrey Universität Leipzig http://www.informatik.uni-leipzig.de/~lohrey/rand WS 2005/2006 Markus Lohrey (Universität Leipzig) Randomisierte Algorithmen WS 2005/2006
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
MehrSuffixautomaten. Stringologie. Weitere mögliche Datenstrukturen, die uns Zugriff auf die Suffixe eines Suchtextes erlauben.
Suffixautomaten Stringologie Suffix-Bäume Peter Leupold Weitere mögliche Datenstrukturen, die uns Zugriff auf die Suffixe eines Suchtextes erlauben. Etwas grösser als Suffix Arrays, dafür noch effizienterer
MehrDatenstrukturen und Algorithmen Beispiellösung zu Heimübungsblatt 7. Abbildung 1: Das Array A als Baum (vgl. Foliensatz 16, Folie 3)
Aufgabe 3 a) Wir verwenden zur Lösung den Algorithmus Build-Heap 1, dieser verwendet die Funktion Heapify. Unser Array A ist gegeben durch [7, 10,, 5, 5,, 3, 3, 17]. 10 5 5 3 17 7 Abbildung 1: Das Array
MehrAlgorithmen auf Sequenzen
Algorithmen auf Sequenzen Fehlertolerante Mustersuche: Distanz- und Ähnlichkeitsmaße Sven Rahmann Genominformatik Universitätsklinikum Essen Universität Duisburg-Essen Universitätsallianz Ruhr Einführung
Mehr2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.
2. Grundlagen Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten. Laufzeitverhalten beschreiben durch O-Notation. 1 Beispiel Minimum-Suche Eingabe bei Minimum
MehrTextsuche. Textsuche
Textsuche Stringologie Online-Algorithmen Peter Leupold Das allgemeine Problem der Text- oder Mustersuche besteht darin ein (Such-) Muster (pattern) x der Länge m in einem (Such-) Text (text) y der Länge
MehrAufgabe (Schreibtischtest, lexikographische Ordnung)
Aufgabe (Schreibtischtest, lexikographische Ordnung) Führen Sie einen Schreibtischtest für den Algorithmus Bubblesort aus der VL für die folgenden Eingabe-Arrays durch. Geben Sie das Array S nach jedem
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,
MehrKombinatorische Optimierung
Juniorprof. Dr. Henning Meyerhenke 1 Henning Meyerhenke: KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Vorlesung 3 Programm des
MehrDer Dreyfus-Wagner Algorithmus für das Steiner Baum Problem
Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem Andreas Moser Dietmar Ebner Christian Schauer Markus Bauer 9. Dezember 2003 1 Einführung Der in der Vorlesung gezeigte Algorithmus für das Steiner
MehrAlgorithmen und Datenstrukturen 2
Algorithmen und Datenstrukturen Lerneinheit : Kürzeste Pfade in Graphen Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester 016.6.01 Einleitung Diese Lerneinheit beschäftigt
MehrKombinatorische Optimierung
Juniorprof. Dr. Henning Meyerhenke 1 Henning Meyerhenke: KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Vorlesung 16 Programm: Einführung
MehrKontextfreie Sprachen. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kontextfreie Sprachen
Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2012 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Wortproblem: der CYK-Algorithmus Pumping Lemma für kontextfreie Sprachen
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
MehrAuswählen nach Rang (Selektion)
Auswählen nach Rang (Selektion) Geg.: Folge X von n Schlüsseln, eine Zahl k mit k n Ges.: ein k-kleinster Schlüssel von X, also den Schlüssel x k für X sortiert als x x 2 L x n trivial lösbar in Zeit O(kn)
Mehr