KMP小結

符號:

i:下標
i從0開始時,next和nextval第一個值均爲 -1;
i從1開始時,next和nextval各項(在i從0開始的跳轉表基礎上)加1,next和nextval第一個值均爲 0;

next:未改進的跳轉表
nextval:改進的跳轉表
pattern:模式串
target:目標串

Next[]的計算

當前位前面的前綴和後綴公有子串最大值,若當前位匹配失敗,則回溯到前綴的後一位

Nextval[]的計算

若pattern[i] != pattern[ next[i] ]
    則nextval[i] = next[i]
若pattern[i] == pattern[ next[i] ]
    則nextval[i] = nextval[ next[i] ]
若當前位匹配失敗,如果回溯到前綴的後一位,當前

跳轉表使用

平移 i-nextval[i](或i-next[i]) 位(平移大於0,因此解釋了首項爲-1的合理性);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章