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 P af længde m Output: Alle positioner i T hvor P forekommer
Naive Algoritme For tilfædig streng eller pattern, forventet tid O(n) Worst-case O(n*m) Eksempel: P = ababc T = babababcab
1981 Rabin-Karp
Rabin-Karp: Eksempel
1977 Knuth-Morris-Pratt Π(q) = max { i | i<q og P[1..i] er et suffix af P[1..q] }
Knuth-Morris-Pratt: Eksempel
Knuth-Morris-Pratt: Beregning af prefix funktionen
Knuth-Morris-Pratt: Beregning af prefix funktionen
Worst-case tider [CLRS] 32.1 32.2 (32.3) 32.4 Mere info: Se Bill Smyth’s bog (Kapitel 8) og Handbook of Exact String-Matching Algorithms (Charras og Lecroq, http://www-igm.univ-mlv.fr/~lecroq/string/) 32.4