Algoritmer og Datastrukturer 2 Gerth Stlting Brodal Mnstergenkendelse
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal Mønstergenkendelse [CLRS, kapitel 32. 1 -32. 2, 32. 4]
Mønster genkendelse forekomst på position 4 1 2 skift på 3 3 4 5 6 7 1 2 3 4 8 9 10 11 12 Input: Tekst T af længde n og mønster P af længde m Output: Alle positioner i T hvor P forekommer 13
Antal forekomster af P = ”aba” i 3 8 10 13 T = ”acababbababaaba” ? a) b) c) d) e) f) g) h) i) j) 1 2 3 4 5 6 7 8 9 Ved ikke
Naive Algoritme O(n∙m)
Naive Algoritme - forventede tid ? Tekst T = streng af n uniformt tilfældige {0, 1} Mønster P = streng af m tegn fra {0, 1} a) b) c) d) e) f) O(n∙m) O(n∙log n) O(m∙log n) O(n∙log m) O(n+m) Ved ikke
Rabin-Karp : Eksempel P = 31415 T h(P) = P mod 13 hash værdier 3 2 3 10000 3 3 2 2 (a b) mod p = ((a mod p) b) mod p (a+b) mod p = ((a mod p)+b) mod p (a+p x) mod p = a mod p, f. eks. 24 mod 13 = 11 = -2 mod 13
1981 Rabin-Karp T[s+1] h T[s + m + 1] p = P[1]dm-1 +P[2]dm-2 + ∙∙∙ +P[m-1]d 1+P[m]d 0 mod q O(n∙m)
Knuth-Morris-Pratt 1977 π(0) = 0 π (q) = max { i | i<q og P[1. . i] er et suffix af P[1. . q] } i T y P x q P z π(q) O(n)
Knuth-Morris-Pratt: Eksempel π(0) = 0 π (q) = max { i | i<q og P[1. . i] er et suffix af P[1. . q] }
π(7) ? a) b) c) d) e) f) g) h) i) j) 1 2 3 4 5 6 7 8 9 Ved ikke P = abcbabcdef 7 3 π(0) = 0 π (q) = max { i | i<q og P[1. . i] er et suffix af P[1. . q] }
Knuth-Morris-Pratt: Beregning af prefix funktionen q y = P P x k O(m)
Knuth-Morris-Pratt: Beregning af prefix funktionen
Worst-case tider [CLRS] 32. 1 32. 2 (32. 3) 32. 4
- Slides: 13