开发者社区 问答 正文

如何更好的理解和掌握kmp算法

如何更好的理解和掌握kmp算法

展开
收起
知与谁同 2018-07-16 16:14:06 1459 分享 版权
1 条回答
写回答
取消 提交回答
  • KMP实际上是AC自动机的退化版本,即模式串个数为1的情况。我之前KMP理解起来也很困难,但是后来学了AC自动机就很容易理解了。
    看起来AC自动机比KMP高端,实际上可以看做一个有条件转移的图。匹配就是从起点沿着边按条件进行转移,理解起来比KMP要容易。

    一点直观的理解:
    在模式串P的匹配过程中,假如在某个位置失配了,我们希望能不回溯从头匹配,因为在之前的匹配过程中已经积累了足够的信息,于是问题完全变成了在每个位置计算模式串后缀和前缀的最长匹配,一个简单的动态规划。
    2019-07-17 22:55:59
    赞同 展开评论
问答分类:
问答标签:
问答地址: