999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

BM模式匹配算法的研究和改進(jìn)

2012-06-09 10:25:42揣錦華
電子設(shè)計工程 2012年19期
關(guān)鍵詞:文本

揣錦華,鄭 景,關(guān) 銳

(長安大學(xué) 信息工程學(xué)院,陜西 西安 710064)

串的模式匹配是串的一種很重要的運(yùn)算,它一直都是計算機(jī)科學(xué)領(lǐng)域研究的焦點(diǎn)問題之一。串的模式匹配在眾多領(lǐng)域被廣泛的應(yīng)用,如:拼寫檢查、搜索引擎、計算機(jī)病毒特征碼匹配、入侵檢測、數(shù)據(jù)壓縮以及DNA序列匹配等,都離不開模式匹配算法。

所謂模式匹配就是在大量的文本串中查找模式串(一個給定的字符串)的一個或者多個匹配的過程。對于文本串為T=T0T1…Tn-1,長度為 n;模式串 P=P0P1…Pm-1,長度為 m。 如果在T中找到P的出現(xiàn)則表示匹配成功,否則匹配失敗。

關(guān)于模式匹配的算法有很多,比較著名的有2個:KMP算法和Boyer-Moore算法[1](簡稱BM算法)。其中 KMP算法實(shí)現(xiàn)較為復(fù)雜,且效率有限。相比之下,Boyer-Moore算法實(shí)現(xiàn)更為簡單,且在英文文本及模式較長的情況下,其效率一般是KMP算法的3~5倍,因此其應(yīng)用更為廣泛。

目前對于BM算法的改進(jìn)算法有很多,但大體上改進(jìn)都很有限,且穩(wěn)定性并不盡如人意。下面將會對經(jīng)典BM算法,以及目前比較流行的兩種改進(jìn)的BM算法進(jìn)行簡單的介紹,然后提出2點(diǎn)改進(jìn)意見。旨在提升其效率的同時極大的提高其穩(wěn)定性,最后通過具體的實(shí)驗(yàn)進(jìn)行比較、驗(yàn)證。

1 現(xiàn)有的BM系列算法簡介

1.1 經(jīng)典BM算法

經(jīng)典 BM(Boyer-Moore)算法[1]的基本思想是:開始時,將文本串T(長度為n)與模式串P(長度為m)左對齊,然后從模式串的最后一個字符Pm-1開始,從右至左依此與文本串的相應(yīng)字符 Tm-1Tm-2…T0進(jìn)行比較;當(dāng)某次比較 Ti與 Pi不匹配時,模式串向右滑動一段距離后 k,開始執(zhí)行由 Pm-1與 Ti+k-1起,從右至左的匹配檢查,依此類推直到找到一個完整匹配或者全文搜索完畢為止。

經(jīng)典BM算法在每次的比較匹配失敗后會采用兩種啟發(fā)式規(guī)則來決定下一次匹配的位置 (即向右移動的距離),即:壞字符規(guī)則(BadChar)和好后綴規(guī)則(GoodSuffix):

1)好后綴規(guī)則(GoodSuffix)

在BM算法從右向左掃描的過程中,若發(fā)現(xiàn)某個字符不匹配的同時,已有部分字符匹配成功,則按如下2種情況討論:

①如果在P中位置t1處已匹配部分P′在P中未匹配部分的某位置t2也出現(xiàn),且位置t2的前一個字符與位置t1的前一個字符不相同,則將P右移,使t2對應(yīng)t1方才所在的位置。

②如果在P中任何位置已匹配部分P′都沒有再出現(xiàn),則找到與P′的后綴P″相同的P的最長前綴x,向右移動P,使x對應(yīng)方才P″后綴所在的位置。

即:P中的已匹配部分或已匹配部分的后綴子串Ps+1…Pm與P中尚未進(jìn)行比較部分中的某一子串Pj-s+1…Pm-s相同,則P右移s位。如公式(1)所示。其中Shift(j)為P右移的距離,m為模式串P的長度,j為當(dāng)前所匹配的字符位置,s為t1與t的距離(以上情況1)或者x與P″的距離(以上情況2)。

2)壞字符規(guī)則(BadChar)

在BM算法從右向左掃描的過程中,若發(fā)現(xiàn)某個字符x不匹配,則按如下兩種情況討論:

①如果字符x在模式P中沒有出現(xiàn),那么從字符x開始的m個文本顯然不可能與P匹配成功,直接跳過該區(qū)域即可。

②如果x在模式P中出現(xiàn),則以該字符進(jìn)行對齊。

設(shè) dest(x)為 P右移的距離,m為模式串 P的長度,max(x)為字符x在P中最右位置,數(shù)學(xué)公式表示公式(2)所示。

BM算法使用上述壞字符規(guī)則和好后綴規(guī)則計算得到的移動值中的大者來向右移動模式P到新的比較位置。實(shí)踐證明在大字母表(相對于模式長度)情況下,BM算法效率非常高。

1.2 BMH算法

在實(shí)際應(yīng)用中,BM算法的BadChar應(yīng)用次數(shù)遠(yuǎn)遠(yuǎn)超過GoodSuffix,BadChar在匹配過程中起到移動指針的主導(dǎo)作用。因此在實(shí)際應(yīng)用中,只使用BadChar也非常有效。為此,1980年Hompool提出了BM算法的簡化改進(jìn)算法,即BMH算法[2]。

BMH算法的基本思想是:將匹配失敗與計算右移量獨(dú)立。計算右移量時不關(guān)心文本中哪個字符匹配失敗,而是直接使用與模式串最右端的字符對齊的那個文本字符Ti+m-1在模式串P中出現(xiàn)的位置來決定右移量。此時其移動距離可由上述公式1求得,只不過此時公式中的x變成了Ti+m-1而已。即移動距離為dest(Ti+m-1)。所以當(dāng)Tm+i-1不在模式串中出現(xiàn)時,模式串獲得最大移動距離m。

1.3 BMHS算法

1990年,Sunday在BMH算法的基礎(chǔ)上又提出了一種改進(jìn)的算法—BMHS算法[3],其主要的改進(jìn)思想是:在一次匹配失敗時,考慮下一個字符Tm+j的情況。即利用與模式串P對齊的文本字串的下一個字符Tm+j來決定右移量的大小。如果Tm+j不在模式串中出現(xiàn)時。則直接跳過該字符,即將模式串P可以達(dá)到最大的移動距離m+1。如果Tm+j出現(xiàn)在模式串中,則將該字符在模式串P中最右側(cè)出現(xiàn)的位置與文本中的字符Tm+j對齊,然后進(jìn)入下一次匹配。即移動距離skip=m-last(Tm+j)。 當(dāng) last(Tm+j)=-1,即 Tm+j不在模式串中出現(xiàn)時,模式串獲得最大移動距離m+1。

試驗(yàn)表明,一般情況下BMH以及BMHS算法比BM算法有更好的性能[4-5]。

2 改進(jìn)的IBMH(Im proved BMH)算法

2.1 IBMH算法的思想

從上述算法可以看出,BMH只考慮了文本串T一次匹配的最后一個字符Ti+m-1在模式串P中出現(xiàn)的情況,而BMHS算法則只考慮了文本串的一次匹配的下一個字符Ti+m在模式串P中出現(xiàn)的情況。二者都有一個共同的缺點(diǎn),就是如果文本串的比較字符在模式串P中多次出現(xiàn)時,二者沒有太大的差別,且效率也沒有太大的提高。

根據(jù)對以上算法的分析,結(jié)合BM、BMH算法和BMHS算法的優(yōu)點(diǎn),在考慮失配位置字符產(chǎn)生的最大移動距離dest1的同時,考慮字符串最后一個字符及其下一字符的組合特性所產(chǎn)生的最大移動距離dest2。最終移動距離為二者中的最大者。

當(dāng)發(fā)生失配時,若模式失配位置為i,文本串失配位置為j,失配字符為c。則由失配字符引導(dǎo)的最大移動距離dest1如下所示:

dest2由BMH以及BMHS的組合決定,即通過Ti+m-1Ti+m在模式串P中是否出現(xiàn)以及出現(xiàn)的位置決定。為此我們可以定義函數(shù)dest2(c1c2),用于計算有字符串Ti+m-1Ti+m所確定移動距離。其定義如下所示。

最終移動距離skip=max{dest1,dest2}。一種拿空間換時間的做法能夠更有效地提高改算法的效率,即對于給定的模式串P,在開始匹配之前將字母表中的所有c的dest1的值都計算出來并放在一張表中,在使用時就可以直接從表里面取,這樣就省去了很多的計算操作。

2.2 BM算法的復(fù)雜度分析

由上文所述可知,BM、BMH、BMHS、IBMH算法的最大移動量分別是m、m、m+1、m+1。影響模式匹配算法效率的除了最大移動量外還有產(chǎn)生最大移動量的概率和窗口比較次數(shù)等。對于BM、BMH及BMHS算法,它們的最大移動量均發(fā)生在一次匹配的末位字符或者其下一個字符在模式串中未出現(xiàn)的情況下。而對于IBMH算法,其最大移動量發(fā)生在這兩個字符的組合串在模式串中未出現(xiàn)的情況下。顯然,兩個字符的組合串在模式串中出現(xiàn)的概率要比一個字符在模式串中出現(xiàn)的概率低很多。因此IBMH算法獲得最大移動距離的概率要比其他幾種算法的概率大很多。

盡管在最壞情況下,BM算法的時間復(fù)雜度均為O (nm+|Σ|)。但是BM算法是平均時間復(fù)雜度可以達(dá)到O(m+n+|Σ|)[6]。可見,在最好情況下,BM算法的時間復(fù)雜度將是低于線性的。在實(shí)際應(yīng)用中,BM算法往往能夠跳過很大一部分文本。此外,由于IBMH算法在進(jìn)行失配跳躍時不僅考慮了還未進(jìn)行比較的字符出現(xiàn)的情況,還將已經(jīng)完成的匹配結(jié)果考慮了進(jìn)去,因此其穩(wěn)定性方面較其他幾種算法也有很大提高。

3 實(shí)驗(yàn)測試及結(jié)果比較

實(shí)驗(yàn)環(huán)境為Windows XP Professional操作系統(tǒng),系統(tǒng)的配置為Intel P4 CPU 2.8 GHz,內(nèi)存 512M,編譯器采用Microsoft Visual C++6.0。4種算法均用C語言編寫,實(shí)驗(yàn)采取5.05 MB的英文文本內(nèi)容作為正文串。

試驗(yàn)主要對上述4種算法在進(jìn)行匹配時的模式串移動次數(shù)、字符的比較次數(shù)以及同樣進(jìn)行10 000次匹配所花費(fèi)的時間進(jìn)行了采集,采集后的比較結(jié)果分別如圖1~3所示:(其中橫軸為模式串字符個數(shù),圖1縱軸為模式串移動次數(shù),圖2縱軸為字符比較次數(shù),圖3縱軸為完成1萬次匹配所耗費(fèi)時間,單位為ms)

圖1 模式串移動次數(shù)Fig.1 Number of pattern string moves

圖2 字符比較次數(shù)Fig.2 Number of character comparisons

從上述實(shí)驗(yàn)結(jié)果可以看出,在同等條件下,4種算法在模式串移動次數(shù)、字符比較次數(shù)、以及完成1萬次匹配所用運(yùn)行時間上,IBMH算法在大多數(shù)情況下其性能明顯要比其他3種算法要好很多,尤其是在穩(wěn)定性方面,IBMH算法要比其他算法更加穩(wěn)定。

圖3 10000次匹配所用運(yùn)行時間Fig.3 Time-consuming of 10000 times match

4 結(jié)束語

目前對于BM算的改進(jìn)算法有很多,且各有特點(diǎn)。在對不同文本模式進(jìn)行匹配時也有各自的優(yōu)勢。文中在對已有的3種BM算法的研究的基礎(chǔ)上提出了兩點(diǎn)改進(jìn)意見,并通過實(shí)驗(yàn)驗(yàn)證表明:該改進(jìn)算法在性能及穩(wěn)定性上確實(shí)有一定的提高。因此,在模式匹配算法的應(yīng)用領(lǐng)域中,該算法也必將能帶來更好的性能。

[1]Boyer R S,Moore J S.A fast string searching algorithm[J].Communications of the ACM,1977,20(10):762.

[2]Nigel H R.Practical fast searching in strings[J].Software-Practice and Experience,1980,10(6):501-506.

[3]Daniel M S.A very fast substring search algorithm[J].Communications of the ACM,1990,33(8):132-142.

[4]楊薇薇,廖翔.一種改進(jìn)的BM模式匹配算法[J].計算機(jī)應(yīng)用,2006,26(2):318-319.YANG Wei-wei,LIA0 Xiang.Improved pattern matching algorithm of BM[J].Computer Applications,2006,26(2):318-319.

[5]袁靜波,鄭吉森,丁順利.一種BM模式匹配算法的改進(jìn)[J].計算機(jī)工程與應(yīng)用,2009,45(17):105-107.YUAN Jing-bo,ZHENG Ji-sen,DING Shun-li.Improvement of BM pattern matching algorithm[J].Computer Engineering and Applications,2009,45(17):105-107.

[6]古德里奇,塔瑪西亞.算法分析與設(shè)計[M].霍紅衛(wèi),譯.人民郵電出版社,2006.

猜你喜歡
文本
文本聯(lián)讀學(xué)概括 細(xì)致觀察促寫作
重點(diǎn):論述類文本閱讀
重點(diǎn):實(shí)用類文本閱讀
初中群文閱讀的文本選擇及組織
甘肅教育(2020年8期)2020-06-11 06:10:02
作為“文本鏈”的元電影
在808DA上文本顯示的改善
“文化傳承與理解”離不開對具體文本的解讀與把握
基于doc2vec和TF-IDF的相似文本識別
電子制作(2018年18期)2018-11-14 01:48:06
文本之中·文本之外·文本之上——童話故事《坐井觀天》的教學(xué)隱喻
從背景出發(fā)還是從文本出發(fā)
語文知識(2015年11期)2015-02-28 22:01:59
主站蜘蛛池模板: 欧美成人综合在线| 伊人久久大香线蕉aⅴ色| 日韩精品免费在线视频| 国产不卡在线看| 精品视频在线观看你懂的一区| 国产女人综合久久精品视| 在线播放精品一区二区啪视频| 99在线小视频| 精品国产www| 国产理论最新国产精品视频| 91久久偷偷做嫩草影院电| 日韩欧美国产成人| 91小视频在线播放| 福利小视频在线播放| 亚洲AⅤ综合在线欧美一区| 精品伊人久久久大香线蕉欧美| 欧洲精品视频在线观看| 波多野结衣一区二区三区88| 久久久久亚洲精品无码网站| 国产成人禁片在线观看| 伊人久久久久久久| 国产精品女主播| www.99精品视频在线播放| 免费一级全黄少妇性色生活片| 草草影院国产第一页| 国产成人综合亚洲欧洲色就色| 亚洲国内精品自在自线官| 亚洲国产综合精品一区| 999精品色在线观看| 男女性午夜福利网站| 久久永久精品免费视频| 日韩小视频在线观看| 一本大道香蕉中文日本不卡高清二区| 亚洲婷婷丁香| 青青操视频免费观看| 伊人久久青草青青综合| 欧美日韩国产在线人| 一级毛片在线直接观看| 亚卅精品无码久久毛片乌克兰| 欧美狠狠干| 999国产精品| 欧美激情视频在线观看一区| 91小视频在线| 54pao国产成人免费视频| 亚洲中文字幕无码爆乳| 波多野结衣久久高清免费| 国产正在播放| 欧美日韩专区| 波多野结衣中文字幕久久| 久无码久无码av无码| 欧美精品在线免费| 国产色网站| 欧美成人h精品网站| 老司机aⅴ在线精品导航| 国产成人高清精品免费软件| 国产精品久久久久久久伊一| 国产污视频在线观看| 色欲色欲久久综合网| 18禁色诱爆乳网站| 国产欧美精品一区aⅴ影院| 91美女视频在线| 老司国产精品视频| 2020最新国产精品视频| 免费看的一级毛片| 91在线无码精品秘九色APP | 日本免费一级视频| 久久综合伊人77777| 全裸无码专区| 国产一级毛片高清完整视频版| 亚洲成人动漫在线观看| 一级爆乳无码av| 中文字幕在线一区二区在线| 99精品免费欧美成人小视频| 成人综合网址| 波多野结衣无码中文字幕在线观看一区二区| 亚洲激情区| 久久国产热| 国产精品网拍在线| 欧美国产日本高清不卡| 国产激情第一页| 丁香婷婷激情综合激情| 中国丰满人妻无码束缚啪啪|