kmp算法詳解_第1頁(yè)
已閱讀1頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、KMP字符串模式匹配詳解字符串模式匹配詳解KMP字符串模式匹配通俗點(diǎn)說(shuō)就是一種在一個(gè)字符串中定位另一個(gè)串的高效算法。簡(jiǎn)單匹配算法的時(shí)間復(fù)雜度為O(mn)KMP匹配算法??梢宰C明它的時(shí)間復(fù)雜度為O(mn).。一.簡(jiǎn)單匹配算法簡(jiǎn)單匹配算法先來(lái)看一個(gè)簡(jiǎn)單匹配算法的函數(shù):intIndex_BF(S[]T[]intpos)若串S中從第pos(S的下標(biāo)0≤posStrLength(S))個(gè)字符起存在和串T相同的子串,則稱匹配成功,返回第一個(gè)這樣的子

2、串在串S中的下標(biāo),否則返回1inti=posj=0while(S[ij]!=0繼續(xù)比較后一字符elseij=0重新開始新的一輪匹配if(T[j]==0)returni匹配成功返回下標(biāo)elsereturn1串S中(第pos個(gè)字符起)不存在和串T相同的子串Index_BF此算法的思想是直截了當(dāng)?shù)模簩⒅鞔甋中某個(gè)位置i起始的子串和模式串T相比較。即從j=0起比較S[ij]與T[j],若相等,則在主串S中存在以i為起始位置匹配成功的可能性,繼續(xù)

3、往后比較(j逐步增1),直至與T串中最后一個(gè)字符相等為止,否則改從S串的下一個(gè)字符起重新開始進(jìn)行下一輪的“匹配“,即將串T向后滑動(dòng)一位,即i增1,而j退回至0,重新開始新一輪的匹配。二.KMP匹配算法匹配算法還是相同的例子,在S=”abcabcabdabba”中查找T=”abcabd”,如果使用KMP匹配算法,當(dāng)?shù)谝淮嗡阉鞯絊[5]和T[5]不等后,S下標(biāo)不是回溯到1,T下標(biāo)也不是回溯到開始,而是根據(jù)T中T[5]==’d’的模式函數(shù)值(

4、next[5]=2,為什么?后面講),直接比較S[5]和T[2]是否相等,因?yàn)橄嗟?,S和T的下標(biāo)同時(shí)增加因?yàn)橛窒嗟龋琒和T的下標(biāo)又同時(shí)增加。。。最終在S中找到了T。如圖:KMP匹配算法和簡(jiǎn)單匹配算法效率比較,一個(gè)極端的例子是:在S=“AAAAAA…AAB“(100個(gè)A)中查找T=”AAAAAAAAAB”簡(jiǎn)單匹配算法每次都是比較到T的結(jié)尾,發(fā)現(xiàn)字符不同,然后T的下標(biāo)回溯到開始,S的下標(biāo)也要回溯相同長(zhǎng)度后增1,繼續(xù)比較。如果使用KMP匹配算

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論