KMP的失效功能

时间:2011-10-24 22:31:07

标签: algorithm pattern-matching

我对KMP的失败功能有疑问。假设模式的大小为2 ^ q,其中q大于或等于8.

如果我事先知道f(m / 4)= 0和f(m)= 3m / 4,我怎样才能找到f(m / 2)和f(3m / 4)的值?

我应遵循什么样的策略?我想我或多或少得到了KMP算法,但我找不到想办法。任何提示都表示赞赏。

1 个答案:

答案 0 :(得分:0)

我们知道f(m)= 3m / 4。因此,f(i)必须等于i-m / 4(0到3m / 4之间的所有自然数),其中i属于{m / 4; m}。 所以在这种情况下,f(m / 2)= m / 4(因为m / 4 = m / 2-m / 4)和f(3m / 4)= m / 2(因为m / 2 = 3m / 4-)米/ 4)