Knuth Morris Pratt算法比较

时间:2014-03-24 10:27:30

标签: algorithm string-comparison string-matching knuth-morris-pratt

当我遇到这个问题时,我一直在为考试而学习,请各位帮忙

  

对于模式P和文本T的任何对齐,假设发生不匹配   在执行KMP算法期间P [i + 1]和T [k]有多少   T [k]在执行期间总共进行了比较   KMP算法(SPi未优化)

我遇到的可能解决方案是

  
      
  1. 我-SPI
  2.   
  3. SPi的+ 1
  4.   
  5. N-1
  6.   
  7. 正SPi的
  8.   

但在某些情况下所有这些都失败了,

1 个答案:

答案 0 :(得分:0)

所有案件都没有单一答案。

仍然可以给出比较次数的上限,并且发现P中的所有符号是否相同。试试并计算一下。

如果这还不够,请尝试使用此属性:KMP会将T[k]与P [SP i ]进行比较,然后针对P [SP SP i +1 ]依此类推,直到出现以下两个选项之一:

  • 给定的字母与T[k]
  • 相匹配
  • 给定SP的值为0

上述两种情况可能会以不同的方式发生,具体取决于P和T,所以不可能给出一个封闭的公式。