The Knuth-Morris-Pratt algorithm searches for a pattern using its proper prefix-suffix overlaps. After matching characters, a mismatch replaces by the length of the longest proper border of a string for that matched prefix, repeating until the next character can extend it or . The text index never moves backward. Precomputing prefix failure links takes time; during scanning each increase in can pay for a later decrease, giving total character work and auxiliary storage. A dense Knuth-Morris-Pratt automaton is a related implementation with alphabet-dependent preprocessing and storage.[ref]
https://raw.githubusercontent.com/kevin-wayne/algs4/master/src/main/java/edu/princeton/cs/algs4/KMP.java. Sedgewick and Wayne, KMP.java, class documentation and DFA construction
A Knuth-Morris-Pratt automaton records how much of a fixed pattern matches the suffix of the text seen so far. State means the longest such prefix has length ; reading a symbol moves to the longest compatible prefix state. Reaching state reports a full length- match. For pattern
aba, state two records suffix ab; reading a completes the match, while reading b falls back to state zero. A dense table for an alphabet of size uses preprocessing and storage, then constant work per text symbol.[ref]https://raw.githubusercontent.com/kevin-wayne/algs4/master/src/main/java/edu/princeton/cs/algs4/KMP.java. Construction loops and search state update
Articles by others on the same topic
There are currently no matching articles.