KMP小结

原创 2017年05月07日 16:55:15

符号:

i:下标
i从0开始时,next和nextval第一个值均为 -1;
i从1开始时,next和nextval各项(在i从0开始的跳转表基础上)加1,next和nextval第一个值均为 0;

next:未改进的跳转表
nextval:改进的跳转表
pattern:模式串
target:目标串

Next[]的计算

当前位前面的前缀和后缀公有子串最大值,若当前位匹配失败,则回溯到前缀的后一位

Nextval[]的计算

若pattern[i] != pattern[ next[i] ]
    则nextval[i] = next[i]
若pattern[i] == pattern[ next[i] ]
    则nextval[i] = nextval[ next[i] ]
若当前位匹配失败,如果回溯到前缀的后一位,当前

跳转表使用

平移 i-nextval[i](或i-next[i]) 位(平移大于0,因此解释了首项为-1的合理性);

【数据结构与算法】模式匹配——从BF算法到KMP算法(附完整源码)

子串的定位操作通常称为串的模式匹配。模式匹配的应用很常见,比如在文字处理软件中经常用到的查找功能。我们用如下函数来表示对字串位置的定位: int index(const string &Tag,con...
  • mmc_maodun
  • mmc_maodun
  • 2014年02月20日 00:01
  • 9874

数据结构——串的朴素模式和KMP匹配算法

一、朴素模式假设我们要从主串S=”goodgoogle"中找到子串T=“google"的位置,步骤如下:i表示主串的当前位置下标,j表示子串的当前位置下标,如上图在第一轮比较(i=1开始)中j=4和i...
  • lxq_xsyu
  • lxq_xsyu
  • 2014年12月07日 14:34
  • 3479

评 严蔚敏《数据结构》中的KMP算法

最近老被KMP 算法给烦着,几经思考加探索加画图加验证加分析,终于在我的努力下,发现了书中一个重大的问题,它里面的KMP函数是化简了的,也就是说书上的解释 与 函数 是不完全对应的,这可苦了那些绞尽脑...
  • pianistOfSoftware
  • pianistOfSoftware
  • 2016年07月21日 17:18
  • 1656

初等字符串匹配专题小结[KMP][Manacher][Tire Tree][AC Automation]

刷了3天的字符串匹配题。 为了下面继续切题,小的先小结一些。 字符串匹配的最基础算法是枚举(n^2)。 高深一点的是KMP。 KMP在数据结构课上学过,由于老师只是负责教学,不负责解答他不懂的...
  • sevenster
  • sevenster
  • 2012年03月24日 22:28
  • 590

Java学习IO流小结--字节流

  • 2015年07月11日 14:59
  • 218KB
  • 下载

CSS小结有关整体

  • 2014年10月25日 19:31
  • 36KB
  • 下载

蜂鸣器小结1

  • 2012年11月08日 21:58
  • 278B
  • 下载

MM4小结 MM4机器测试步骤

  • 2013年12月09日 21:20
  • 1.75MB
  • 下载

VB编程经验小结doc

  • 2014年07月21日 03:12
  • 537KB
  • 下载

HTML小结文档

  • 2013年07月29日 14:58
  • 42KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:KMP小结
举报原因:
原因补充:

(最多只允许输入30个字)