




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
主要內(nèi)容4.1簡單模式匹配算法4.2
KMP算法——效率較高的匹配算法學(xué)習(xí)方法建議:
本章內(nèi)容的學(xué)習(xí)注重理解模式匹配算法的匹配過程。第四章
串?dāng)?shù)據(jù)結(jié)構(gòu)第四章-串全文共25頁,當(dāng)前為第1頁。引言一、基本概念二、簡單模式匹配算法(BF算法)三、算法分析四、BF算法的特點(diǎn)小結(jié)在BF算法的比較過程中,可能產(chǎn)生回溯,故算法的漸近時間復(fù)雜度為O(n*m)。4.1簡單模式匹配算法數(shù)據(jù)結(jié)構(gòu)第四章-串全文共25頁,當(dāng)前為第2頁。一、基本概念
串是一種特殊的線性表,它特殊在:數(shù)據(jù)元素都是來自字符集!由于數(shù)據(jù)元素特殊,它的操作有些不同于一般線性表,例如:操作的對象一般是子串(即一組數(shù)據(jù)元素)而不是單個數(shù)據(jù)元素!有些高級語言已經(jīng)把串ADT物理實現(xiàn)了,所以,我們這里只是簡單討論一下串模式匹配。4.1簡單模式匹配算法子串:串中連續(xù)的任意個字符組成的子序列,稱為該串的子串;主串:包含子串的串;數(shù)據(jù)結(jié)構(gòu)第四章-串全文共25頁,當(dāng)前為第3頁。字符在串中的位置:字符在串中的序號(即第幾個數(shù)據(jù)元素);子串在串中的位置:子串的第一個字符在主串中的位置;
串相等:兩個串的長度相等,且各對應(yīng)位置處的字符都相等;例如,設(shè)A和B分別為A=“Thisisastring!”,B=“is”
則A的長度為17,B的長度為2;B是A的子串,A為主串。B在A中出現(xiàn)了兩次,其中首次出現(xiàn)所對應(yīng)的主串位置是3。因此,稱B在A中的序號(或位置)為3。模式匹配:子串的定位操作通常稱作串的模式匹配。在一個主串中,查找子串是否存在,存在返回子串在主串中的位置;不存在返回0。子串稱為模式串。數(shù)據(jù)結(jié)構(gòu)第四章-串全文共25頁,當(dāng)前為第4頁。5二、簡單模式匹配算法(BF算法)
采用回溯法:從主串的第i個位置開始,與子串的每個字符逐個比較,若均相等,則找到,位置為i;否則,即在某個位置出現(xiàn)了不等,則說明從該起點(diǎn)開始的子串不是模式串,換一個新起點(diǎn),重新開始,繼續(xù)逐一比較,直到找到,或i>=Length為止。
TPij數(shù)據(jù)結(jié)構(gòu)第四章-串全文共25頁,當(dāng)前為第5頁。6第1趟
Tabbaba Paba
第2趟
Tabbaba P
aba
i=2j=2i=1j=0第3趟
Tabbaba Paba
第4趟
Tabbaba P
aba
i=2j=0i=6j=3每趟:
主串回溯到上次起點(diǎn)的下一個位置;模式串回到0
數(shù)據(jù)結(jié)構(gòu)第四章-串全文共25頁,當(dāng)前為第6頁。7三、算法分析:設(shè)目標(biāo)串長度為n,模式串長度為m。1.在匹配成功時,即T串中肯定包含P串,則:(1)最好情況下:模式P出現(xiàn)在T的最開始,O(m)T:aaaaabbbbbbP:aaa(2)最壞情況下:模式P出現(xiàn)在T的最后①無回溯,最后是模式串,O(n)T:cbbbcbcbaaaP:aaa②有回溯,每次比較時,只有P的最后一個字符出現(xiàn)不等
T:aaaaaaaaaaaabP:aaaab
O(n*m)數(shù)據(jù)結(jié)構(gòu)第四章-串全文共25頁,當(dāng)前為第7頁。82.在匹配不成功時,即T串中不包含P串,則:(1)最好情況下:模式P的第一個字符就沒在T中出現(xiàn),O(n)T:aaaaaaaaaaaaP:xyz(2)最壞情況下:只有P的最后一個字符匹配不上,而其它字符每次都匹配上,O(n*m)T:aaaaaaaaaaaaaP:aaaab數(shù)據(jù)結(jié)構(gòu)第四章-串全文共25頁,當(dāng)前為第8頁。四、BF算法的特點(diǎn):
a.時間復(fù)雜性為O(n*m)。
b.由于有回溯,所以主串輸入后必須保存。改進(jìn):首尾匹配算法基本思想:先比較第一個字符,再比最后一個字符,若相等,再比較第2到n-1個字符。最壞的情況是倒數(shù)第2個字符不同。由于仍然需要回溯,時間復(fù)雜度還是O(n*m)。
T:aaaaaaaaaaaaaP:aaaab數(shù)據(jù)結(jié)構(gòu)第四章-串全文共25頁,當(dāng)前為第9頁。引言一、KMP算法(BF算法)二、失敗函數(shù)的定義三、算法的特點(diǎn)四、改進(jìn)NEXT值小結(jié)在KMP算法的比較過程中,不產(chǎn)生回溯,匹配失敗時,主串的指針不回溯,只要在模式串中找合適的字符(由失敗函數(shù)確定)與其比較即可,故算法的漸近時間復(fù)雜度為O(n)。4.2
KMP算法——效率較高的匹配算法數(shù)據(jù)結(jié)構(gòu)第四章-串全文共25頁,當(dāng)前為第10頁。一、改進(jìn)的模式匹配算法——KMP算法(解決了回溯)
D.E.KnuthJ.H.MorrisV.R.PrattKMP算法的基本思想:
KMP算法最大的改進(jìn)之處:在匹配失敗時,主串中的指針i不需要回溯,而是在模式中找出適當(dāng)?shù)淖址^續(xù)比較。數(shù)據(jù)結(jié)構(gòu)第四章-串全文共25頁,當(dāng)前為第11頁。12假設(shè)主串為T=‘t0t1t2...tn-1’模式串為P=‘p0p1p2...pm-1’m<<n…TiPjk≠
在主串的第i個字符ti與模式中pj匹配失敗時,i不回退,而是在模式中找適當(dāng)字符pk與ti繼續(xù)比較,pk與ti,pk+1與ti+1……..當(dāng)然此pk不是任意的,得根據(jù)一定算法找出。數(shù)據(jù)結(jié)構(gòu)第四章-串全文共25頁,當(dāng)前為第12頁。13
運(yùn)用KMP算法的匹配過程第1趟目標(biāo)
a
c
abaabaabcacaabc
模式
a
baabcac
第2趟目標(biāo)a
cabaabaabcacaabc
模式
a
baabcac
第3趟目標(biāo)acabaab
a
abcacaabc
模式
abaab
c
ac
第4趟目標(biāo)acabaab
a
abcac
aabc
模式
(ab)
a
abcac
數(shù)據(jù)結(jié)構(gòu)第四章-串全文共25頁,當(dāng)前為第13頁。主串:s=“abcaabbabcabaa”模式串:p=“abcabaa”第1趟:abcaabbabcabaai=4i=0,j=0abcabaaj=4第2趟:abcaabbabcabaai=4i=4,j=1abcabaaj=1第3趟:abcaabbabcabaai=6i=4,j=0abcabaaj=2第4趟:abcaabbabcabaai=6i=6,j=0abcabaaj=0第5趟:abcaabbabcabaai=14,j=7i=7,j=0abcabaa匹配成功數(shù)據(jù)結(jié)構(gòu)第四章-串全文共25頁,當(dāng)前為第14頁。假設(shè)在比較中,遇到一個不匹配字符t[i]<>p[j],主串不動,模式串向右滑動,使主串中的第i個字符與模式串中的第幾個字符比較?i
1j
TPx數(shù)據(jù)結(jié)構(gòu)第四章-串全文共25頁,當(dāng)前為第15頁。
i-k+1
i-1i
1
j-1j
TPx
假設(shè)此時應(yīng)與模式中第k(k<j)個字符比較,則模式中前k-1個字符必須滿足:
‘p1p2…pk-1’=‘ti-k+1,ti-k+2…ti-1’k-1數(shù)據(jù)結(jié)構(gòu)第四章-串全文共25頁,當(dāng)前為第16頁。已經(jīng)得到的部分匹配的結(jié)果,
‘pj-k+1pj-k+2…pj-1’=‘ti-k+1,ti-k+2…ti-1’所以,應(yīng)該有:‘p1p2…pk-1’=‘pj-k+1pj-k+2…pj-1’,則下一次模式串應(yīng)該從k開始比較。那么如何求k呢?1
j-1j
tpxki-k+1i-1數(shù)據(jù)結(jié)構(gòu)第四章-串全文共25頁,當(dāng)前為第17頁。從分析可知:p[1..k-1]是p[1..j]的最長的既是真前綴又是真后綴的子串(即長度小于j)所以,求k就是求p[1..j]中最長的既是真前綴又是真后綴的子串的長度。
k與主串無關(guān)??!
j=012345678910111213求失敗函數(shù):abcaabbabcabaa-10001120123421數(shù)據(jù)結(jié)構(gòu)第四章-串全文共25頁,當(dāng)前為第18頁。19根據(jù)前面的分析,失敗函數(shù)可以定義為:
-1當(dāng)
j=0時next[j]=max{k|0<k<j且‘p0p1...pk-1’=‘pj-k...pj-1’}非空
0其它情況jkk
k0pj-kpj-1二、失敗函數(shù)的定義數(shù)據(jù)結(jié)構(gòu)第四章-串全文共25頁,當(dāng)前為第19頁。20利用next失敗函數(shù)進(jìn)行匹配處理:若在進(jìn)行某一趟匹配比較時在模式P的第j位失配:如果j>0,那么在下一趟比較時模式串P的起始比較位置是pnext(j),目標(biāo)串T的指針不回溯,仍指向上一趟失配的字符;如果
j=0,則目標(biāo)串T指針進(jìn)一,模式串P指針回到p0,繼續(xù)進(jìn)行下一趟匹配比較。j01234567Pabaabcacnext(j)-10011201數(shù)據(jù)結(jié)構(gòu)第四章-串全文共25頁,當(dāng)前為第20頁。21
運(yùn)用KMP算法的匹配過程第1趟目標(biāo)
a
c
abaabaabcacaabc
模式
a
baabcac
j=1next(1)=0,下次p0第2趟目標(biāo)a
cabaabaabcacaabc
模式
a
baabcac
j=0下次p0,目標(biāo)指針進(jìn)1
第3趟目標(biāo)acabaab
a
abcacaabc
模式
abaab
c
ac
j=5next(5)=2,
下次p2
j01234567Pabaabcacnext(j)-10011201數(shù)據(jù)結(jié)構(gòu)第四章-串全文共25頁,當(dāng)前為第21頁。22
第3趟目標(biāo)acabaab
a
abcacaabc
模式
abaab
c
ac
j=5next(5)=2,
下次p2第4趟目標(biāo)acabaab
a
abcacaabc
模式
(ab)
a
abcac
j01234567Pabaabcacnext(j)-10011201數(shù)據(jù)結(jié)構(gòu)第四章-串全文共25頁,當(dāng)前為第22頁。三、KMP算法的特點(diǎn)四、改進(jìn)NEXT值
next[j]=k即si與pj比
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45213-2025化妝品中阿米卡因、布坦卡因、普莫卡因的測定液相色譜-串聯(lián)質(zhì)譜法
- 房屋買賣合同模板:糾紛預(yù)防版
- 環(huán)保工程項目合同書2025
- 19只有一個地球 教學(xué)設(shè)計-2024-2025學(xué)年六年級上冊語文統(tǒng)編版
- 個人旅游消費(fèi)借款合同示例
- 幼兒園教職工聘用合同范本
- Unit 1 Lesson5 In the Living Room(教學(xué)設(shè)計)-2024-2025學(xué)年冀教版(三起)英語六年級上冊
- 有線電視頻道合作合同
- 餐飲業(yè)裝修工程合同
- 區(qū)域獨(dú)家銷售合同
- 2025年度光伏電站光伏組件回收處理合同示范文本
- 2025年春季少先隊工作計劃及安排表(附:少先隊每月工作安排表)
- 中央2025年公安部部分直屬事業(yè)單位招聘84人筆試歷年參考題庫附帶答案詳解
- 體育老師籃球說課
- GB/T 45015-2024鈦石膏綜合利用技術(shù)規(guī)范
- 2025-2025學(xué)年度第二學(xué)期仁愛版七年級英語下冊教學(xué)計劃
- 車站信號自動控制(第二版) 課件 -2-室外設(shè)備接口電路
- 未來畜牧養(yǎng)殖業(yè)人才需求分析與發(fā)展策略-洞察分析
- 2024CSCO小細(xì)胞肺癌診療指南解讀
- 《真希望你也喜歡自己》房琪-讀書分享
- 中國服裝零售行業(yè)發(fā)展環(huán)境、市場運(yùn)行格局及前景研究報告-智研咨詢(2025版)
評論
0/150
提交評論