kmp算法什么意思?
kmp算法之所以被称为kmp算法,是因为这个算法是由三个人提出的,取三个人名字的首字母作为算法的名字。实际上,kmp算法与bf算法的区别在于,kmp算法巧妙地消除了指针i的回溯问题,只需确定下一个匹配j的位置,将问题的复杂度从o(mn)降低到o(mn)。在kmp算法中,为了在匹配失败时确定j在下一次匹配中的位置,引入了next[]数组。next[j]的值表示p[0]中最长后缀的长度。。。j-1]等于相同字符序列的前缀。next[]数组的定义如下:1)next[j]=-1,j=0.2)next[j]=max(k):0<k<jp[0。。。k-1]=p[j-k,j-1]3)next[j]=0,例如:pabaj0.12.34next-1.0012,即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移到右边,将j设置为0以继续比较。
kmp算法?
kmp算法是由d.e.knuth、j.h.morris和v.r.pratt提出的一种改进的字符串匹配算法,称为knut-morris-pratt操作。其核心是利用匹配失败后的信息,减少模式串与主串的匹配次数,达到快速匹配的目的。具体实现由next()函数实现,该函数包含模式字符串的局部匹配信息。kmp算法的时间复杂度为o(m,n)。
原文标题:goap是什么意思 kmp算法什么意思?,如若转载,请注明出处:https://www.saibowen.com/tougao/16984.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「赛伯温」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。