KMD算法

来源:互联网 发布:bilibili以前知乎 编辑:程序博客网 时间:2024/06/13 13:15
比如:

P  0  1   2  3   4  5   6   7  8   9   10 11 12 13 14

S  A  G  C  T  A  G  C   A  G  C   T   A  G   C  T
N  0  0  0  0   1   2   3  1   2   3   4    5   6   7   3


对T的标记:
显然最后一个T的前一个位置的对称度是7,
说明T的前一个位置的7个字符的后缀必与7个字符的前缀相等,
然而T!=P[7],说明T位置的对称度只能是长度比7小的前缀,
所以递减k值,递减为多少呢?
因为现在对称中断,那么寻找与最后一个对称的前缀只能在与最后一个元素的前一个元素的对称元素之前寻找
显然必须以7为基准减少,即在前缀长度为7以内的范围重新寻找以T结尾的前缀,
所以k=next[6],即变为:
A  G  C  T  A  G  C  T(最后一个元素)在这里寻找与T对应的元素


之后继续按照这个循环进行