導航:首頁 > 源碼編譯 > 數據結構中kmp演算法

數據結構中kmp演算法

發布時間:2025-03-28 19:03:30

❶ kmp演算法什麼意思

KMP演算法之所以叫做KMP演算法是因為這個演算法是由三個人共同提出來的,就取三個人名字的首字母作為該演算法的名字。其實KMP演算法與BF演算法的區別就在於KMP演算法巧妙的消除了指針i的回溯問題,只需確定下次匹配j的位置即可,使得問題的復雜度由O(mn)下降到O(m+n)。
在KMP演算法中,為了確定在匹配不成功時,下次匹配時j的位置,引入了next[]數組,next[j]的值表示P[0...j-1]中最長後綴的長度等於相同字元序列的前綴。
對於next[]數組的定義如下:
1) next[j] = -1 j = 0
2) next[j] = max(k): 0<k<j P[0...k-1]=P[j-k,j-1]
3) next[j] = 0 其他
如:
P a b a b a
j 0 1 2 3 4
next -1 0 0 1 2
即next[j]=k>0時,表示P[0...k-1]=P[j-k,j-1]
因此KMP演算法的思想就是:在匹配過程稱,若發生不匹配的情況,如果next[j]>=0,則目標串的指針i不變,將模式串的指針j移動到next[j]的位置繼續進行匹配;若next[j]=-1,則將i右移1位,並將j置0,繼續進行比較。

閱讀全文

與數據結構中kmp演算法相關的資料

熱點內容
如何創建並編譯功能包 瀏覽:170
騰訊雲伺服器佔用內存 瀏覽:129
裝修公司php源碼 瀏覽:661
安卓微信鈴聲音量小怎麼調大 瀏覽:131
grunt壓縮代碼 瀏覽:258
編譯器emcus 瀏覽:273
如何把程序發布到伺服器 瀏覽:30
html頁面怎麼轉伺服器 瀏覽:997
品核app為什麼連不上網 瀏覽:985
雲平台就是伺服器 瀏覽:709
紙條APP是怎麼收費 瀏覽:909
騰訊私密相冊加密 瀏覽:574
程序員吐槽產品經理段子 瀏覽:888
lol程序員光輝 瀏覽:278
如何壓縮圖片解析度 瀏覽:708
命令方塊記錄玩家數量 瀏覽:790
程序員手套發布會 瀏覽:831
向程序發送命令時出現問題word2003 瀏覽:931
編譯原理語義分析程序輸入什麼 瀏覽:469
四川農信的卡用什麼app 瀏覽:590