版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
6-5模式匹配v第六章查找技術(shù)模式匹配模式匹配的應(yīng)用場(chǎng)景1:模式匹配模式匹配的應(yīng)用場(chǎng)景2:模式匹配問(wèn)題有什么特點(diǎn)?(2)改進(jìn)取得的積累效益:模式匹配操作被頻繁調(diào)用,執(zhí)行頻率高。(1)算法的一次執(zhí)行時(shí)間:?jiǎn)栴}規(guī)模通常很大,常常在大量信息中進(jìn)行匹配;模式匹配(字符串匹配):在主串S中尋找子串T
的過(guò)程,T也稱為模式S="s1s2…sn"T="t1t2…tm"如果匹配成功,返回T
在S
中的位置;否則返回0模式匹配BF算法KMP算法6-5-1BF算法v第六章查找技術(shù)基本思想1.在串S和串T中設(shè)比較的起始下標(biāo)i和j;2.循環(huán)直到S或T的所有字符均比較完2.1如果S[i]等于T[j],繼續(xù)比較S和T的下一個(gè)字符;2.2否則,將i和j回溯,準(zhǔn)備下一趟比較;3.如果T中所有字符均比較完,則返回匹配的起始比較下標(biāo);否則返回0;ji…ij
主串Ss1s2si
sn模式T
t1t2tjij例1主串S="ababcabcacbab",模式T="abcac"ababcabcacbabi=2,j=2失??;i回溯到1,j回溯到0ijijij第1趟abcac運(yùn)行實(shí)例i=1,j=0失?。籭回溯到2,j回溯到0ababcabcacbab第2趟abcaciji=6,j=4失敗i回溯到3,j回溯到0ababcabcacbabij第3趟abcacababcabcacbab第4趟abcaciji=3,j=0失敗i回溯到4,j回溯到0例1主串S="ababcabcacbab",模式T="abcac"運(yùn)行實(shí)例例1主串S="ababcabcacbab",模式T="abcac"運(yùn)行實(shí)例ababcabcacbabij第5趟abcaci=4,j=0失敗i回溯到5,j回溯到0ijababcabcacbab第6趟abcaci=10,j=5,T中全部字符都比較完畢,匹配成功算法實(shí)現(xiàn)intBF(charS[],charT[]){inti=0,j=0;
while(S[i]!='\0'&&T[j]!='\0'){if(S[i]==T[j]){i++;j++;}else{i=i–j+1;j=0;}}
if(T[j]=='\0')return(i–j+1);
elsereturn0;}intBF(charS[],charT[]){inti=0,j=0,start=0;
while(S[i]!='\0’&&T[j]!='\0'){if(S[i]==T[j]){i++;j++;}else{
start++;i=start;j=0;}}
if(T[j]=='\0')returnstart+1;
elsereturn0;}性能分析S="s1s2…sn"T="t1t2…tm"在匹配成功的情況下,考慮兩種極端情況:設(shè)匹配成功發(fā)生在si處,則:例如:S="aaaaaaaaaabcdccccc"T="bcd"最好情況:不成功的匹配都發(fā)生在串T
的第1個(gè)字符設(shè)匹配成功發(fā)生在si處,則:例如:S="aaaaaaaaaaaabccccc"T="aaab"最壞情況:不成功的匹配都發(fā)生在串T
的最后一個(gè)字符性能分析S="s1s2…sn"T="t1t2…tm"在匹配成功的情況下,考慮兩種極端情況:分析BF算法為什么BF算法的性能較低?ji…ij
主串Ss1s2si
sn模式T
t1t2tj在每趟匹配不成功時(shí)存在大量回溯,沒(méi)有利用已經(jīng)部分匹配的結(jié)果如何在匹配不成功時(shí)主串不回溯?主串不回溯,模式就需要向右滑動(dòng)一段距離i模式T
t1t2tj如何確定模式的滑動(dòng)距離?分析BF算法如何在匹配不成功時(shí)主串不回溯?主串不回溯,模式就需要向右滑動(dòng)一段距離
主串Ss1s2si
snababcabcacbabij第1趟a
bcac
i=2,j=2失?。?/p>
∵s[1]=t[1];t[0]≠t[1]∴t[0]≠s[1]ababcabcacbab第2趟abcac
分析BF算法ababcabcacbabij第1趟abcac
i=2,j=2失敗;
∵s[1]=t[1];t[0]≠t[1]∴t[0]≠s[1]ababcabcacbabi第3趟jabcac
分析BF算法ababcabcacbab第3趟a
bcac
iji=6,j=4失敗∵s[3]=t[1];t[0]≠t[1]∴t[0]≠s[3]ababcabcacbab第4趟abcac
分析BF算法ababcabcacbab第3趟abcac
iji=6,j=4失敗∵s[4]=t[2];t[0]≠t[2]∴t[0]≠s[4]ababcabcacbab第5趟abcac
分析BF算法ababcabcacbab第3趟abcac
iji=6,j=4失敗∵s[4]=t[2];t[0]≠t[2]∴t[0]≠s[4]ababcabcacbab第6趟abcac
iji=6,j=4失敗∵s[5]=t[3];t[0]=t[3]∴t[0]=s[5]分析BF算法KMP算法結(jié)論:i可以不回溯,模式向右滑動(dòng)到新的比較起點(diǎn)k如何由當(dāng)前部分匹配結(jié)果確定模式向右滑動(dòng)的新比較起點(diǎn)k?ababcab…abcac
ijabcac
ababcab…ik下一趟(1)T[0]~T[k-1]=S[i-k]~S[i-1]ababcab…abcac
ijabcac
ababcab…ik下一趟(1)T[0]~T[k-1]=S[i-k]~S[i-1](2)T[j-k]~T[j-1]=S[i-k]~S[i-1]T[0]~T[k-1]=T[j-k]~T[j-1]KMP算法結(jié)論:i可以不回溯,模式向右滑動(dòng)到新的比較起點(diǎn)k如何由當(dāng)前部分匹配結(jié)果確定模式向右滑動(dòng)的新比較起點(diǎn)k?長(zhǎng)度為k的前綴(1)k與j具有函數(shù)關(guān)系,由當(dāng)前失配位置j,可以計(jì)算出滑動(dòng)位置kT[0]~T[k-1]=T[j-k]~T[j-1]說(shuō)明了什么?T[0]~T[k-1]=T[j-k]~T[j-1]的物理意義是什么?長(zhǎng)度為k的后綴T[0]~T[j]中前綴和后綴相等的真子串唯一嗎?(2)滑動(dòng)位置k僅與模式串T有關(guān)ababac
ababac
ababac
k=1k=3KMP算法max{k|1≤k<j
且T[0]…T[k-1]=T[j-k]…T[j-1]}模式應(yīng)該向右滑多遠(yuǎn)才能保證算法的正確性?abababacijababacabababacijababacabababacababacijk=1:k=3:KMP算法失效數(shù)組-1j=0max{k|1≤k<j
且T[0]…T[k-1]=T[j-k]
…T[j-1]}集合非空0其它情況next[j]=設(shè)next[j]表示在匹配過(guò)程中與T[j]比較不相等時(shí),下標(biāo)j的回溯位置下標(biāo):01234模式串T:ababck=next[j]:
j=0時(shí),k=-1j=1時(shí),k=0-10j=2時(shí),T[0]≠T[1],因此,k=00j=3時(shí),T[0]=T[2],T[0]T[1]≠T[1]T[2],因此,k=11j=4時(shí),T[0]≠T[3],T[0]T[1]=T[2]T[3],T[0]T[1]T[2]≠T[1]T[2]T[3],因此,k=22ababaababcb
i=4,j=4失敗;
j=next[4]=2ij第1趟ababcnext[j]={-1,0,0,1,2}ababaababcb
ij第2趟ababc運(yùn)行實(shí)例ababaabab
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年西藏昌都地區(qū)單招職業(yè)傾向性考試題庫(kù)附答案詳解
- 2026年安徽警官職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能考試題庫(kù)含答案詳解
- 2026年郴州職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)含答案詳解
- 2026年河南水利與環(huán)境職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性考試題庫(kù)帶答案詳解
- 產(chǎn)科護(hù)理面試題目及答案
- 護(hù)理直升面試題及答案
- 2025年廈門(mén)市翔發(fā)集團(tuán)有限公司招聘?jìng)淇碱}庫(kù)完整答案詳解
- 2025年關(guān)于屏山縣興紡建設(shè)發(fā)展有限公司及其下屬子公司第六次公開(kāi)招聘5名工作員的備考題庫(kù)及一套答案詳解
- 2025年重慶大學(xué)實(shí)驗(yàn)室及設(shè)備管理處勞務(wù)派遣工作人員招聘?jìng)淇碱}庫(kù)及參考答案詳解1套
- 2025年貴州鹽業(yè)(集團(tuán))安順有限責(zé)任公司公開(kāi)招聘工作人員備考題庫(kù)有答案詳解
- 2025四川省教育考試院招聘編外聘用人員15人考試筆試模擬試題及答案解析
- 特許經(jīng)營(yíng)教學(xué)設(shè)計(jì)教案
- 2025年智能消防安全系統(tǒng)開(kāi)發(fā)可行性研究報(bào)告
- 胎兒窘迫課件
- 2025年國(guó)家開(kāi)放大學(xué)《刑事訴訟法》期末考試備考試題及答案解析
- 論文導(dǎo)論范文
- (正式版)DB65∕T 4636-2022 《電動(dòng)汽車充電站(樁)建設(shè)技術(shù)規(guī)范》
- 胸痛患者轉(zhuǎn)運(yùn)課件
- 某城區(qū)城市交通優(yōu)化提升規(guī)劃設(shè)計(jì)方案
- 職業(yè)病安全知識(shí)培訓(xùn)課件
- 隨班就讀教學(xué)活動(dòng)方案設(shè)計(jì)案例
評(píng)論
0/150
提交評(píng)論