




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、4.5.3 方式匹配方式匹配. 方式匹配的概念方式匹配的概念 設(shè)有給定的兩個(gè)串設(shè)有給定的兩個(gè)串T和和P,那么在,那么在T中尋覓中尋覓等于等于P的子串的過(guò)程,稱(chēng)為方式匹配,的子串的過(guò)程,稱(chēng)為方式匹配,T稱(chēng)為正稱(chēng)為正文文(text),P稱(chēng)為方式稱(chēng)為方式(pattern)。 通常通常T長(zhǎng)度遠(yuǎn)遠(yuǎn)大于長(zhǎng)度遠(yuǎn)遠(yuǎn)大于P的長(zhǎng)度,假設(shè)在的長(zhǎng)度,假設(shè)在T中中找到等于找到等于P的子串,那么匹配勝利;否那么,匹的子串,那么匹配勝利;否那么,匹配失敗。配失敗。2簡(jiǎn)單的方式匹配算法簡(jiǎn)單的方式匹配算法 算法思想如下:對(duì)于算法思想如下:對(duì)于i=0, 1, , n-m,依次,依次執(zhí)行以下匹配:執(zhí)行以下匹配: 用用p0, p1,
2、 , pm-1依次與依次與ti, ti+1, , ti+m-1比較,假設(shè)均對(duì)應(yīng)相等,那比較,假設(shè)均對(duì)應(yīng)相等,那么匹配勝利,整個(gè)算法終了;假設(shè)存在某個(gè)么匹配勝利,整個(gè)算法終了;假設(shè)存在某個(gè)k(0k m-1),使得,使得pk ti+k,那么立刻終了,那么立刻終了這輪比較,這輪比較, 將方式將方式P向右挪動(dòng)一位,再執(zhí)行下向右挪動(dòng)一位,再執(zhí)行下一個(gè)一個(gè)i的新一輪匹配。的新一輪匹配。 如執(zhí)行了如執(zhí)行了n-m+1輪,即輪,即i從從0到到n-m的一切情的一切情況,在況,在T中都沒(méi)有找到中都沒(méi)有找到P的子串,那么匹配失敗。的子串,那么匹配失敗。#define MAXN 100#define MAXM 50ch
3、ar tMAXN, pMAXM ;int simple_match ( t, p, n, m)char t , p ;int n , m ; int i , j , k ; for (i=0 ; i=n-m ; i+ ) for (j=0 ; k=i ; jm& tk = p j ; k+ , j+) if (j = m ) return (i ) ; return (-1 ) ; 簡(jiǎn)單方式匹配算法,在最壞的情況下,比較的總次數(shù)為:m(n-m+1) ,那么時(shí)間復(fù)雜度為:O(mn)。3方式匹配的方式匹配的KMP算法算法 由由D.E.Knuth,J.H.Morris和和V.R.Pratt三
4、三個(gè)人提出來(lái)的。個(gè)人提出來(lái)的。Kunth-Morris-Pratt算法舉例:T: a b c a b c a a b c a b c a b c dP: a b c a b c d (a b c)a b c d (a)b c a b c d a b c a b c d (a b c)a b c d 數(shù)據(jù)構(gòu)造 第 4 章 數(shù)組和串 第 5 節(jié) 串KMP(D.E.Knuth-J.H.Morris-V.R.Pratt)算法t0 ti-j ti-j+1 ti-k ti-k+1 ti-1 ti ti+1 p0 p1 pj-k pj-k+1 pj-1 pj pj+1 ? p0 p1 pk-1 pk pk+
5、1假設(shè)方式P的開(kāi)頭k個(gè)字符(p0, ,pk-1)依次與pj的前面k個(gè)字符(pj-k, ,pj-1)一樣,那么可以省去煩瑣的一輪輪的比較,還可省去方式的前k個(gè)字符的比較,只需從ti與pk開(kāi)場(chǎng)依次繼續(xù)進(jìn)展比較。數(shù)據(jù)構(gòu)造 第 4 章 數(shù)組和串 第 5 節(jié) 串?dāng)?shù)據(jù)構(gòu)造 第 4 章 數(shù)組和串 第 5 節(jié) 串 在執(zhí)行匹配過(guò)程中一旦出現(xiàn)tipj處失配,我們必需在方式P中找出一段p0p1pk-1 = pj-kpj-k+1.pj-1,這個(gè)k我們稱(chēng)pj的“失敗鏈接值,我們發(fā)如今尋覓方式 P的各個(gè)字符的失敗鏈接值與正文T無(wú)關(guān),只依賴(lài)方式本身。 在進(jìn)展匹配前,預(yù)先為方式P的每一個(gè)符號(hào)設(shè)置好它的失敗鏈接值,一旦出現(xiàn)ti
6、pj處失配。那么就取出pj失敗鏈接值k,而下次匹配直接將方式P的pk開(kāi)場(chǎng)與正文失敗處ti繼續(xù)比較下去。數(shù)據(jù)構(gòu)造 第 4 章 數(shù)組和串 第 5 節(jié) 串計(jì)算失敗鏈接值數(shù)組元素對(duì)應(yīng)方式的下標(biāo) j 存在其他情況且時(shí)當(dāng).00|max0111110ppppppjkjkjkjkkjjflinkj012345678910pabcabcabbacflinkj -10001234501數(shù)據(jù)構(gòu)造 第 4 章 數(shù)組和串 第 5 節(jié) 串失敗鏈接值的函數(shù):#define MAXN 100#define MAXM 50char tMAXN, pMAXM ;int flinkMAXN;void faillink(char p
7、 , int flink , int m ) int j=1, k ; flink0 = -1 ; while (jm) k=flinkj-1 ; while( k!=-1&pk!=pj-1 ) k=flinkk ; flinkj=k+1 ; j+; / 時(shí)間復(fù)雜度分析為O(m) 數(shù)據(jù)構(gòu)造 第 4 章 數(shù)組和串 第 5 節(jié) 串KMP算法算法int kmp_match( t ,p , flink , n, m ) char t , p ; Int flink , n , m ; int i , j ; i=0 ; j=0 ; while( in) while( j!= -1 &
8、pj!=ti ) j=flinkj ; If (j=m-1) return (i-m+1) ; i+ ; j+ ; return (-1) / 時(shí)間復(fù)雜度分析為時(shí)間復(fù)雜度分析為O(n)數(shù)據(jù)構(gòu)造 第 4 章 數(shù)組和串 第 5 節(jié) 串4方式匹配方式匹配BMBoyer-Moore算法算法 BM算法與算法與KMP算法差別在于:算法差別在于: 1在方式匹配時(shí),不是自左向右進(jìn)展,在方式匹配時(shí),不是自左向右進(jìn)展,而是自右向左進(jìn)展。而是自右向左進(jìn)展。 2事先計(jì)算一個(gè)函數(shù)事先計(jì)算一個(gè)函數(shù)d(x),包含以下信,包含以下信息:息: 當(dāng)當(dāng)x不在方式不在方式P中,或出如今中,或出如今P的尾端,那的尾端,那么么d(x)取
9、值為方式取值為方式P的長(zhǎng)度。的長(zhǎng)度。 其他情況,其他情況,d(x)取值等于字符取值等于字符x在方式在方式P中中最右端的字符最右端的字符x到尾端的間隔。到尾端的間隔。 給定的方式P=p0p1p2.pm-1,方式P長(zhǎng)度為m,那么D(x)函數(shù)表示如下: m 假設(shè)x不在P,或x=pm-1,但xpi (0im-2)d(x)= m-i-1 其他情況,這里i=max例P=doctor,由d(x)函數(shù)求出,d(r)=6,d(o)=1,d(t)=2,d(c)=3,d(d)=5,其他不在模中的符號(hào)的值d(x)=6。2)-mi(0 x,pi|iBM算法的思想: 假設(shè)在執(zhí)行正文T中自第 i 起,與方式P開(kāi)場(chǎng)自右向左的
10、匹配,一旦發(fā)現(xiàn)不匹配,那么去執(zhí)行pm-1與ti+d(ti)開(kāi)場(chǎng)的自右向左的匹配,相當(dāng)于把整個(gè)模P向右滑過(guò)d(ti)個(gè)一段間隔。 假設(shè)方式P在與正文第 i 位起的匹配過(guò)程中,假設(shè)中間某個(gè)符號(hào)與正文的符號(hào)不匹配,而 ti 不在方式中或是模的尾端,那么滑過(guò)的間隔是最大的,也就是模P的長(zhǎng)度m。 d(x): 6 6 1 4 正文:t h e n e l s e t u r n f a t h e r e t u r n r e t u r n r e t u r n r e t u r n r e t u r n r e t u r n算法算法#define MAXN 1000#define MAXM 50char tMAXN , pMAXM ;int n , m ;int d26 ;void dx(char p , int d , int m) / 建立建
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 運(yùn)輸工程居間合同范本
- 武漢海事職業(yè)學(xué)院《人工智能與地學(xué)大數(shù)據(jù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 滁州市南譙區(qū)2025屆數(shù)學(xué)五下期末綜合測(cè)試試題含答案
- 長(zhǎng)安大學(xué)《傳統(tǒng)康復(fù)治療》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川機(jī)電職業(yè)技術(shù)學(xué)院《教學(xué)資源開(kāi)發(fā)與課件設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024-2025學(xué)年廣東省汕尾市陸豐市三下數(shù)學(xué)期末經(jīng)典試題含解析
- 土壤重金屬污染修復(fù)目標(biāo)
- 南昌職業(yè)大學(xué)《考古學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 海北藏族自治州門(mén)源回族自治縣2025屆四下數(shù)學(xué)期末質(zhì)量檢測(cè)模擬試題含解析
- 永城職業(yè)學(xué)院《管理案例分析》2023-2024學(xué)年第二學(xué)期期末試卷
- 山泉水公司《質(zhì)量管理手冊(cè)》
- X證書(shū)失智老年人照護(hù)身體綜合照護(hù)講解
- 2025年內(nèi)蒙古自治區(qū)政府工作報(bào)告測(cè)試題及參考答案
- 2024年全國(guó)職業(yè)院校技能大賽高職組(社區(qū)服務(wù)實(shí)務(wù)賽項(xiàng))考試題庫(kù)(含答案)
- 2025年度花卉產(chǎn)業(yè)大數(shù)據(jù)服務(wù)平臺(tái)建設(shè)合同2篇
- 2025年度花卉產(chǎn)業(yè)大數(shù)據(jù)平臺(tái)建設(shè)合同3篇
- 魚(yú)骨圖培訓(xùn)課件
- 護(hù)理禮儀與人文關(guān)懷
- 護(hù)-學(xué)-崗-簽-到-簿
- 運(yùn)維服務(wù)體系建立實(shí)施方案(5篇)
- 路面基層(級(jí)配碎石)施工方案
評(píng)論
0/150
提交評(píng)論