論文國家隊朱澤園

論文國家隊朱澤園

ID:46220515

大?。?99.00 KB

頁數(shù):120頁

時間:2019-11-21

論文國家隊朱澤園_第1頁
論文國家隊朱澤園_第2頁
論文國家隊朱澤園_第3頁
論文國家隊朱澤園_第4頁
論文國家隊朱澤園_第5頁
資源描述:

《論文國家隊朱澤園》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、多串匹配算法及其啟示南京市外國語學(xué)校朱澤園[關(guān)鍵字]模式串單詞前綴樹后綴樹串匹配[摘要]字符串處理在實際應(yīng)用中具有重要地位,其看似簡單,但隨著研究的深入,各類思想精華涌現(xiàn)其中,難度也變得深不可測。因此信息學(xué)競賽中常以字符串處理為題,鍛煉選手的創(chuàng)新能力。本文第一章提出問題并進行樸素的分析,第二、三、五章分別介紹三個輔助算法:KMP模式匹配算法、自創(chuàng)的單詞前綴樹算法,以及后綴樹算法。另外基于KMP算法的核心思想,在第四章中,面向“多串匹配”問題提出一個線性算法。但本文并沒有滿足于線性時間復(fù)雜度,接著在第六章提出了平均

2、性能更好的算法。最后第七章對算法的構(gòu)思進行了剖析,并將這種思想方法上升到理論高度。第1頁共23頁[目錄]§1問題的提出§1.1§1.2問題描述最初想法§2Knuth-Morris-Pratt算法§2.1定義§2.2模式串的前綴函數(shù)(PrefixFunction)§2.3kmp主算法§3單詞前綴樹§3.1單詞查找樹(Trie)的定義§3.2單詞樹的建立§3.3前綴指針的定義§3.4前綴指針的生成§4主算法-(線性算法)§4.1kmp算法的啟發(fā)§4.2單詞前綴樹的使用及附加標(biāo)記§4.3單詞前綴樹的時間復(fù)雜度§4.4主

3、過程§4.5時空復(fù)雜度§4.6該算法的一些擴展§5后綴樹和McCreight算法§5.1數(shù)據(jù)結(jié)構(gòu)§5.2一些定義§5.3建立后綴樹(初步)§5.4后綴鏈接§5.5建立后綴樹§6主算法二(平均性能更好的算法)§6.1單詞前綴樹的使用和擴展§6.2后綴樹的使用和擴展§6.3TreeA和TreeB上的兩個函數(shù)§6.4主過程§6.5一個例子§6.6時間復(fù)雜度分析§7啟不和總結(jié)§7.1算法分析§7.2啟示§7.3總結(jié)第2頁共23頁[正文]§1問題的提出§1.1問題描述所謂多串匹配,就是給定一些模式串,在一段文章(只岀現(xiàn)小寫

4、a到z這26個字母)中,找出第一個出現(xiàn)的任意一個模式串的位置。具體來說就是:給定m個長度分別為Li.L2……L的模式串?dāng)?shù)組Pi[1..Li]>P2[l..L2]……PJ1..LJ,假設(shè)正文為一個長度為n的數(shù)組T[l..n],限定L5100K,m51000,n8900K。我們要找到一個最小的整數(shù)s[1,川,滿足a11,m]使得x[1,乙j都有T[s+x-l]=Pa[x]注:如模式串為cdefg與efg,正文為abcdefgh時,會造成匹配冃標(biāo)的不明確,因此我們一般將“求所有模式串的所有出現(xiàn)位置”這一任務(wù)模糊,轉(zhuǎn)而求

5、“第一個”(不過接下來將介紹的算法,可以在不改變復(fù)雜度的情況下完全接受此任務(wù))。含邏輯關(guān)鍵字的搜索引擎是這個問題的實際應(yīng)用。醫(yī)學(xué)家們在DNA序列中,搜索可能為變開的兒種模式,也是這類問題的典型。因此用有效算法解決該問題能大大提髙各行各業(yè)的工作效率!§1.2最初想法最樸素的想法是:Fori<-1tonDoForj<-1tomDoIfi+Lj-l<=nThenKT[i..i+Li-l]=Pj[l..Lj]Then輸出位置i,并退出循環(huán)該算法從小到大枚舉每一個位置,并冃進行檢查。最壞情況下時間復(fù)雜度為O(n十L)o另一

6、個有效的優(yōu)化是:Fori1tomDoXi《Pi在t中第一次出現(xiàn)的位置,如果沒出現(xiàn)返回<-writemin(X)其小Pi在T中第一?次出現(xiàn)的位置,可以通過kmp算法(下一章將提到),在O(n+Li)內(nèi)完成。因此總復(fù)雜度為0(n十m+L)??上н@兩種方法面對我們即將解決的數(shù)據(jù)量,是力不從心的,我們應(yīng)該努力想出一種線性,或者更優(yōu)秀的算法。為此,我們要先介紹一個預(yù)備算法——knip(Knuth-Morris-Pratt)單串匹配算法,和一個預(yù)備數(shù)據(jù)結(jié)構(gòu)單詞前綴樹。第3頁共23頁§2Knuth-Morris-Pratt算法

7、該算法為D.E.Knuth、J.H.Morris和V.R.Pratt同時發(fā)現(xiàn)的,被稱作“克努特——莫里斯一一普拉特操作”,簡稱kmp算法?!?.1定義給定一個長度為m的模式串P[l??m],和一個長度為n的正文T[l..n],找到所有的整數(shù)sfl,nm+11,滿足:對于x[1,m]都有T[s4-x-l]=P[x]o§2.2模式串的前綴函數(shù)(PrefixFunction)對18i8m有前綴函數(shù)^(i)=max{jIP[l..j]=P[bj+l.J]},如錯誤!鏈接無效。:06jSi圖1該函數(shù)可以通過如下程序段在數(shù)組

8、中完成預(yù)處理:k《0兀[1]《()Fori<-2tomdoWhilek>OandP[k+l]^P[i]Dok^n[k];IfP[k4-l]=P[i]ThenkGk+1;n[i]<-k;EndForfI123456-8910Pliababababcanhl00]2345601仇ababaabcaP6aba

9、bababababjab戶2abab(b)cajc[8]=6abc

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。