




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
基于MATLAB《數(shù)據(jù)結(jié)構(gòu)與算法》?延邊大學(xué)信息管理專業(yè)(13級(jí))?崔基哲KMP模式匹配算法MATLAB編程之基礎(chǔ)算法3串的模式匹配算法一、基本概念1、模式匹配(定位)設(shè)有主串S和子串T(將S稱為目標(biāo)串,將T稱為模式串),在主串S中,從位置start開始查找,如若在主串S中找到一個(gè)與子串T相等的子串,則返回T的第一個(gè)字符在主串中的位置,否則返回-1。2、算法目的確定主串中所含子串第一次出現(xiàn)的位置(定位)3、算法種類KMP算法KMP模式匹配算法?
它是:在一個(gè)長字符串中匹配一個(gè)短子串的無回溯算法。定義?
s:模式串,m:模式串的長度?
text:要匹配的字符串,n:text的長度?
設(shè)text:x1,x2,…xn,s:a1,a2,…am,則當(dāng)存使xi+k=ak(k=1,2,…m)時(shí),認(rèn)為text與模式串匹配,當(dāng)然text也可能與模式串有多處匹
配?
例如:text:abcabca,s:abc則text與s匹配位置有3和6KMP算法?作為一種無回溯的算法,它是高效的,待會(huì)兒你將看到它的時(shí)間復(fù)雜度為O(m+n),空間復(fù)雜度也為O(m+n)?而且,它很容易理解,代碼也很短定義?
next:為對(duì)應(yīng)模式串的數(shù)組?
設(shè)字符串為s1s2s3...sm,其中s1,s2,s3,...si,...sm均是字符,則next[i]=m,當(dāng)且僅當(dāng)滿足如下條件:字符串s1s2...smequals字符串s(i-m+1)...si-1
si并且
s1s2...sm
s(m+1)unequals
s(i-m)s(i-m+1)...si-1
si。?
通俗地講,next[i]保存了以s[i]為結(jié)尾的后與模式串前綴的最長匹配數(shù)。KMP算法的運(yùn)行過程?
我們用兩個(gè)指針i和j分別表示,A[i-j+1..i]與B[1..j]完全也就是說,i是不斷增加的,隨著i的增加j相應(yīng)地變化,且j滿足以A[i]結(jié)尾的長度為j的字符串正好匹配B串的前j個(gè)字符(j當(dāng)然越大越好),現(xiàn)在需要檢驗(yàn)A[i+1]和B[j+1]的關(guān)系。?
如果a[i+1]==b[j+1],i和j各加1,什么時(shí)候j==m,就說B是A的子串(B串已經(jīng)整完了)KMP算法的運(yùn)行過程?
如果a[i+1]!=b[j+1],這時(shí)候怎么辦??
i
=
1
2
3
4
5
6
7
8
9
……?
A
=
a
b
a
b
a
b
a
a
b
a
b
…?
B
=
a
b
a
b
a
c
bj
=
1
2
3
4
5
6
7j=5時(shí),a[i+1]!=b[j+1],我們要把j改成比它小的值j‘。改多少合適呢?KMP算法的運(yùn)行過程?
i
=
1
2
3
4
5
6
7
8
9
……?
A
=
a
b
a
b
a
b
a
a
b
a
b
…?
B
=
a
b
a
b
a
c
bj
=
1
2
3
4
5
6
7?
記住,我們要保持A[i-j+1..i]與B[1..j]完全相等,因而j’最大的數(shù)使a[i-j’+1..i]與B[1..j’]完全相等.KMP算法的運(yùn)行過程?
i
=
1
2
3
4
5
6
7
8
9
……?
A
=
a
b
a
b
a
b
a
a
b
a
b
…?
B
=
a
b
a
b
a
c
bj
=
1
2
3
4
5
6
7?
顯然是求一個(gè)最長的以i為末尾的后綴要與B的前綴匹配。由于A[i-j+1..i]與B[1..j]完全相等,故令j’=next[j]即可性質(zhì)保留KMP算法的運(yùn)行過程?
i
=
1
2
3
4
5
6
7
8
9
……?
A
=
a
b
a
b
a
b
a
a
b
a
b
…?
B
=
a
b
a
b
a
c
bj
=
1
2
3
4
5
6
7?
i
=
1
2
3
4
5
6
7
8
9
……?
A
=
a
b
a
b
a
b
a
a
b
a
b
…?B
=
a
b
a
b
a
c
bj
‘=
1
2
3
4
5
6
7KMP算法的運(yùn)行過程?
需要注意的是i并沒有動(dòng),改變的只是j的值?
如果改變j的值后a[i+1]仍不等于b[j+1]的話,繼續(xù)改變j值直到a[i+1]==b[j+1]或者j=0?
j=0表示i+1前面無論怎么匹配都不能使
a[i+1]==b[j+1],只好讓a[i+1]與b[j+1]單獨(dú)匹配?
還是上一個(gè)例子,再演示一下KMP算法的運(yùn)行過程??i
=
1
2
3
4
5
6
7
8
9
……A
=
a
b
a
b
a
b
a
a
b
a
b
…??B
=j
=a
b
a
b
a
c
b1
2
3
4
5
6
7?
當(dāng)i=6,j=5時(shí),a[i+1]!=b[j+1],故令
j=next[5]=3KMP算法的運(yùn)行過程??i
=
1
2
3
4
5
6
7
8
9
……A
=
a
b
a
b
a
b
a
a
b
a
b
…??B
=j
=a
b
a
b
a
c
b1
2
3
4
5
6
7?
此時(shí)i=6,j=3仍不滿足a[i+1]==b[j+1],故繼續(xù)減小j,使j=next[3]=1KMP算法的運(yùn)行過程??i
=
1
2
3
4
5
6
7
8
9
……A
=
a
b
a
b
a
b
a
a
b
a
b
…??B
=j
=a
b
a
b
a
c
b1
2
3
4
5
6
7?
此時(shí)i=6,j=1仍不滿足a[i+1]==b[j+1],故繼續(xù)減小j,使j=next[1]=0KMP算法的運(yùn)行過程??i
=
1
2
3
4
5
6
7
8
9
……A
=
a
b
a
b
a
b
a
a
b
a
b
…??B
=j
=a
b
a
b
a
c
b1
2
3
4
5
6
7?
終于,A[8]=B[1],i變?yōu)?,j為1KMP算法的運(yùn)行過程??i
=
1
2
3
4
5
6
7
8
9
……A
=
a
b
a
b
a
b
a
d
b
a
b
…??B
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度GRG裝飾施工項(xiàng)目環(huán)保評(píng)估與監(jiān)管合同
- 二零二五年度帶花園租賃的租房協(xié)議
- 二零二五年度半導(dǎo)體設(shè)備采購意向合同
- 2025年跨境電商園區(qū)場地承包及服務(wù)協(xié)議
- 二零二五年保姆家庭清潔及收納服務(wù)合同
- 2025版XX醫(yī)院臨床教學(xué)人員聘用合同模板
- 2025版標(biāo)準(zhǔn)設(shè)備租賃質(zhì)押借款合同范本
- 2025版薦婚姻財(cái)產(chǎn)協(xié)議書范本維護(hù)夫妻共同利益
- 2025版消防安全宣傳教育活動(dòng)承包合同
- 二零二五年度汽車零部件車輛運(yùn)輸與倉儲(chǔ)服務(wù)合同模板
- 2024年同等學(xué)力申碩英語考試真題
- 瀝青拌合站安裝專項(xiàng)施工方案
- 2024國家開放大學(xué)《金融基礎(chǔ)》機(jī)考復(fù)習(xí)資料及答案
- 隨心所育+看見成長-2024母嬰行業(yè)白皮書-凱度x巨量引擎-202407
- 數(shù)字貨幣概論全套教學(xué)課件
- 二年級(jí)數(shù)學(xué)必練100題
- (正式版)SHT 3075-2024 石油化工鋼制壓力容器材料選用規(guī)范
- 2020年云南省曲靖市富源縣中小學(xué)、幼兒園教師進(jìn)城考試真題庫及答案
- 教師專業(yè)發(fā)展智慧樹知到期末考試答案2024年
- 《地下工程泥漿施工標(biāo)準(zhǔn)》
- 【真題】2023年徐州市中考道德與法治試卷(含答案解析)
評(píng)論
0/150
提交評(píng)論