卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

控制算法 kmp算法什么意思?

kmp算法什么意思?KMP算法之所以被稱(chēng)為KMP算法,是因?yàn)檫@個(gè)算法是由三個(gè)人提出的,取三個(gè)人名字的首字母作為算法的名字。實(shí)際上,KMP算法與BF算法的區(qū)別在于,KMP算法巧妙地消除了指針I(yè)的回溯問(wèn)題

kmp算法什么意思?

KMP算法之所以被稱(chēng)為KMP算法,是因?yàn)檫@個(gè)算法是由三個(gè)人提出的,取三個(gè)人名字的首字母作為算法的名字。實(shí)際上,KMP算法與BF算法的區(qū)別在于,KMP算法巧妙地消除了指針I(yè)的回溯問(wèn)題,只需確定下一個(gè)匹配J的位置,將問(wèn)題的復(fù)雜度從O(MN)降低到O(MN)。在KMP算法中,為了在匹配失敗時(shí)確定J在下一次匹配中的位置,引入了next[]數(shù)組。next[J]的值表示P[0]中最長(zhǎng)后綴的長(zhǎng)度。。。J-1]等于相同字符序列的前綴。next[]數(shù)組的定義如下: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 J 0.12.34 next-1.001 2,即next[J]=K>0時(shí),表示P[0。。。K-1]=P[J-K,J-1]。因此,KMP算法的思想是:在匹配過(guò)程中,如果存在不匹配,如果next[J]>=0,則目標(biāo)字符串的指針I(yè)不變,模式字符串的指針J移到next[J]的位置繼續(xù)匹配;如果next[J]=-1,則I移到右邊,將j設(shè)置為0以繼續(xù)比較。

KMP算法中的next數(shù)組如何計(jì)算?

ABABCAC0112312的前兩個(gè)字母的下一個(gè)序列分別是01。直接寫(xiě)第三個(gè)“a”時(shí),第一個(gè)字母是B,開(kāi)頭字母是a,a!=B,所以是第四個(gè)“a”,第一個(gè)字母是a,第一個(gè)字母是a,第一個(gè)字母是a,a=a,所以值是1+1=2(相等時(shí),字符串長(zhǎng)度加1),第五個(gè)“B”,第一個(gè)字母是a,第一個(gè)字母是a,第一個(gè)字母是a,第一個(gè)字母是B,第一個(gè)字母是a,AB,第一個(gè)字母是AB,AB=AB,所以這個(gè)值是2+1=3,第七個(gè)字母是“a”,第一個(gè)字母是C,它與開(kāi)頭的第一個(gè)字母不同等于,所以它是1,第八個(gè)字母是“C”,第一個(gè)字母是a,它等于開(kāi)頭的第一個(gè)字母,所以如果它是2,它將返回邏輯“true”,否則它將返回邏輯“false”。

KMP算法中的next數(shù)組如何計(jì)算?

ABABCAC0112312中前兩個(gè)字母的下一個(gè)序列分別為01。直接寫(xiě)第三個(gè)“a”時(shí),第一個(gè)字母是B,開(kāi)頭字母是a,a!=B,所以是1。當(dāng)?shù)谒膫€(gè)“a”時(shí),第一個(gè)字母是a,起始字母是a,a=a,因此值為1+1=2(等效時(shí)間為字符串長(zhǎng)度加1)。第五個(gè)“B”,第一個(gè)字母是a,開(kāi)頭的字母是a,a=a,所以它是第六個(gè)“C”,第一個(gè)字母是B,然后是a,AB,AB從開(kāi)始的字符串,AB=AB,所以值是2+1=3。第七個(gè)字母是“a”,第一個(gè)字母是C,它不等于開(kāi)頭的第一個(gè)字母,所以它是1,第八個(gè)字母是“C”,第一個(gè)字母是a,它等于開(kāi)頭的第一個(gè)字母,所以它是2,它返回邏輯“true”,否則它返回邏輯“false”。

kmp算法?

KMP算法是由d.e.knuth、j.h.morris和v.r.pratt提出的一種改進(jìn)的字符串匹配算法,稱(chēng)為Knut-morris-pratt操作。其核心是利用匹配失敗后的信息,減少模式串與主串的匹配次數(shù),達(dá)到快速匹配的目的。具體實(shí)現(xiàn)由next()函數(shù)實(shí)現(xiàn),該函數(shù)包含模式字符串的局部匹配信息。KMP算法的時(shí)間復(fù)雜度為O(m,n)。

kmp算法中的next到底是什么意思?。?/h2>

讓我們看看下一個(gè)數(shù)據(jù)值的解

位序1 23 4 5 6 7 8

模式字符串a(chǎn) B a B C a C

下一個(gè)值0 1 2 3 1 2]]下一個(gè)數(shù)組可以按如下方式求解:

1。第一位的下一個(gè)值是0

2。第二位的下一個(gè)值是1

在求解后每一位的下一個(gè)值時(shí),根據(jù)前一位比較

3。第三位的下一個(gè)值:第二位的模式字符串是B,對(duì)應(yīng)的下一個(gè)值是1。比較第二位的模式字符串B和第一位的模式字符串a(chǎn),兩者不相等;第三位的下一個(gè)值是1

4。第四位的下一個(gè)值:第三位的模式字符串是a第五位的下一個(gè)值:第四位的模式字符串是a,對(duì)應(yīng)的下一個(gè)值是2。將第四位的模式串與第二位的模式串進(jìn)行比較,結(jié)果不相等。將第四位的模式串與第二位的模式串進(jìn)行比較,結(jié)果不相等。如果第二位的下一個(gè)值是1,則第四位的模式串a(chǎn)與第一位的模式串a(chǎn)比較,如果相同,則第五位的下一個(gè)值是2

6。第六位的下一個(gè)值:第五位的模式串是B,對(duì)應(yīng)的下一個(gè)值是2。比較第五位的模式串B和第二位的模式串B,如果相同,則第六位的下一個(gè)值是3

7。第七位的下一個(gè)值:第六位的模式串是C,對(duì)應(yīng)的下一個(gè)值是3,比較第三位的模式串C和第三位的模式串a(chǎn),不相等;如果第三位的模式串a(chǎn)的下一個(gè)值是1,比較第六位的模式串C和第一位的模式串a(chǎn),如果不一樣,那么第七位的下一個(gè)值是1

8。第八位的下一個(gè)值:如果第七位的模式串a(chǎn)是a,即1,則在這種分析方法中,將第七位的模式串a(chǎn)與第一位的模式串a(chǎn)進(jìn)行比較,位順序從1開(kāi)始。如果位順序從0開(kāi)始,第一位的下一個(gè)值是-1,則后一種方法是相同的