Knuth-Morris-Pratt algorithm


Definition: A string matching algorithm that turns the search string into a finite state machine, then runs the machine with the string to be searched as the input string. Execution time is O(m+n), where m is the length of the search string, and n is the length of the string to be searched.

Also known as KMP.

Author: SB


Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C). Terry R. McConnell's implementation of Unix strstr with KMP (C). (C and Pascal) which uses Boyer-Moore preprocessing (C)

More information

Series of pages explaining how Knuth-Morris-Pratt works.

Donald E. Knuth, James H. Morris, and Vaughan R. Pratt, Fast Pattern Matching in Strings, SIAM Journal on Computing, 6(2):323-350, 1977.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul Black.

Entry modified 26 July 2021.
HTML page formatted Mon Jul 26 11:58:06 2021.

Cite this as:
Sterling Bates, "Knuth-Morris-Pratt algorithm", in Dictionary of Algorithms and Data Structures [online], Paul E. Black, ed. 26 July 2021. (accessed TODAY) Available from: