1. 程式人生 > >KMP算法介紹

KMP算法介紹

主串 除了 信息 morris 後綴 next begin 相等 max

簡介

KMP算法是D.E.Knuth、J.H.Morris和V.R.Pratt共同提出的,稱之為Knuth-Morris-Pratt算法,簡稱KMP算法。該算法與Brute-Force算法相比有較大改進,主要是消除了主串指針的回溯,從而使算法效率有了某種程度的提高。

實現

1、從模式串t中提取加速匹配的信息

具體來說就是求next數組,next數組的定義如下:

$$next[j]=\begin{cases} -1 & 當j=0時\\MAX\{k \,|\, 0<k<j {\ } and {\ } "t_0t_1\cdot \cdot \cdot t_{k-1}"="t_{j-k}t_{j-k+1}\cdot \cdot \cdot t_{j-1}"\}&前後綴相等時\\0 &其它情況\end{cases}$$

KMP算法介紹