100 likes | 222 Views
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. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. skift på 3. 1. 2. 3. 4.
E N D
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 3 4 5 6 7 8 9 10 11 12 13 skift på 3 1 2 3 4 Input: Tekst T af længde n og mønster Paf længde m Output: Alle positioner i T hvor P forekommer
Naive Algoritme O(n∙m)
Rabin-Karp : Eksempel P = 31415 T h(P) = P mod 13 hash værdier 310000 2 3 2 33 2 (ab) mod p = ((a mod p)b) mod p (a+b) mod p = ((a mod p)+b) mod p (a+px) mod p = a mod p, f.eks. 24 mod 13 = 11 = -2 mod 13
1981 Rabin-Karp T[s + m + 1] T[s+1]h O(n∙m) p = P[1]dm-1 +P[2]dm-2 + ∙∙∙ +P[m-1]d1+P[m]d0 mod q
1977 Knuth-Morris-Pratt π(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 O(n) π(q)
Knuth-Morris-Pratt: Eksempel π(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 = P y P x O(m) k
Worst-case tider [CLRS] 32.1 32.2 (32.3) 32.4