符號:
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的合理性);