导航:首页 > 源码编译 > 数据结构中kmp算法

数据结构中kmp算法

发布时间:2025-03-28 19:03:30

❶ kmp算法什么意思

KMP算法之所以叫做KMP算法是因为这个算法是由三个人共同提出来的,就取三个人名字的首字母作为该算法的名字。其实KMP算法与BF算法的区别就在于KMP算法巧妙的消除了指针i的回溯问题,只需确定下次匹配j的位置即可,使得问题的复杂度由O(mn)下降到O(m+n)。
在KMP算法中,为了确定在匹配不成功时,下次匹配时j的位置,引入了next[]数组,next[j]的值表示P[0...j-1]中最长后缀的长度等于相同字符序列的前缀。
对于next[]数组的定义如下:
1) next[j] = -1 j = 0
2) next[j] = max(k): 0<k<j P[0...k-1]=P[j-k,j-1]
3) next[j] = 0 其他
如:
P a b a b a
j 0 1 2 3 4
next -1 0 0 1 2
即next[j]=k>0时,表示P[0...k-1]=P[j-k,j-1]
因此KMP算法的思想就是:在匹配过程称,若发生不匹配的情况,如果next[j]>=0,则目标串的指针i不变,将模式串的指针j移动到next[j]的位置继续进行匹配;若next[j]=-1,则将i右移1位,并将j置0,继续进行比较。

阅读全文

与数据结构中kmp算法相关的资料

热点内容
单片机两个开关控制一个灯闪烁 浏览:346
克鲁斯卡尔算法思想的应用 浏览:198
服务器开发一般做什么 浏览:7
ubuntu编译linux内核 浏览:543
qt交叉编译后无gui显示 浏览:866
java辞职 浏览:291
多头发程序员 浏览:549
文件夹Ron模组 浏览:533
如何创建并编译功能包 浏览:170
腾讯云服务器占用内存 浏览:129
装修公司php源码 浏览:661
安卓微信铃声音量小怎么调大 浏览:131
grunt压缩代码 浏览:258
编译器emcus 浏览:273
如何把程序发布到服务器 浏览:30
html页面怎么转服务器 浏览:997
品核app为什么连不上网 浏览:985
云平台就是服务器 浏览:709
纸条APP是怎么收费 浏览:909
腾讯私密相册加密 浏览:574