Copyright © Philip M. Parker, INSEAD. Terms of Use.

KNUTH-MORRIS-PRATT ALGORITHM

Specialty Definition: Knuth-Morris-Pratt algorithm

(From Wikipedia, the free Encyclopedia)

The Knuth-Morris-Pratt string searching algorithm locates a pattern of characters within a string. It uses the fact that after finding the first mismatch between pattern and string we already know the characters compared before to improve the efficiency of the search. We therefore will have to compare the pattern to itself to determine how many positions we have to move to the left.

The following implementation is written in C:

INPUT: Text T[0,n-1], Pattern P[0,m-1]
Output alle matches of P in T

InitNext(P); j=0; for (i=1;i<=n;i++) { while ((j>0) && (P[j+1] != T[i])) { j=next[j]; } if (P[j+1] == T[i]) j++; if (j == m-1) { print "Found P"; j = next[j]; } }

Procedure InitNext(P) Input: Pattern P

next[1] = 0; for (q=2;q<=m;q++) { while ((l>0) && (P[l+1] != P[q])) { l = next[l]; } if (P[l+1] == P[q]) l++; next[q] = l; }

Source: the above text is adapted by the editor from Wikipedia, the free encyclopedia under a copyleft GNU Free Documentation License (GFDL) from the article "Knuth-Morris-Pratt algorithm."

Top     



  

Copyright © Philip M. Parker, INSEAD. Terms of Use.