KMP中的getnext函數中的週期原理,和重要性質

-----------------------

-----------------------

 k    m        x      j       i

由上,next【i】=j,兩段紅色的字符串相等(兩個字符串完全相等),s[k....j]==s[m....i]

設s[x...j]=s[j....i](xj=ji)

則可得,以下簡寫字符串表達方式

kj=kx+xj;

mi=mj+ji;

因爲xj=ji,所以kx=mj,如下圖所示

 

-------------

      -------------

 k   m        x     j   

看到了沒,此時又重複上面的模型了,kx=mj,所以可以一直這樣遞推下去

所以可以推出一個重要的性質len-next[i]爲此字符串的最小循環節(i爲字符串的結尾),另外如果len%(len-next[i])==0,此字符串的最小週期就爲len/(len-next[i]);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章