《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > Wu_Manber算法的綜合改進
Wu_Manber算法的綜合改進
2014年微型機與應用第19期
黃逸之,尹香蘭
江南計算技術研究所,江蘇 無錫,214083
摘要: 在研究了Wu_Manber算法及其已有改進的基礎上,在跳躍距離、匹配過程和并行處理三方面進行了綜合改進。改進后的算法跳躍距離最大能達到m+1,有效減少匹配過程中的比較次數,最后充分利用現有的硬件處理能力,進行并行處理,避免模式串集合過度增加后算法效率的下降問題,提高超大文本串的掃描速度。
Abstract:
Key words :

  摘 要: 在研究了Wu_Manber算法及其已有改進的基礎上,在跳躍距離、匹配過程和并行處理三方面進行了綜合改進。改進后的算法跳躍距離最大能達到m+1,有效減少匹配過程中的比較次數,最后充分利用現有的硬件處理能力,進行并行處理,避免模式串集合過度增加后算法效率的下降問題,提高超大文本串的掃描速度。

  關鍵詞多模式匹配;Wu_Manber算法

0 引言

  多模式匹配問題可以描述為:P={p1, p2,...,pk},是一個模式串的集合,其中任意一個模式串pi都是由字符表Σ中的字符所組成。T=t1,t2,...,tn是一個大文本串,ti屬于Σ。求所有模式P在T中的所有出現。

  多模式匹配算法一般是單模式匹配算法的推廣。單模式匹配算法中經典并且效率較高的算法主要有BM(Boyer Moore)算法[1]和QS(Quick Search)算法[2]等。多模式串匹配算法中,Wu_Manber算法[3]是實際應用中平均性能最好的一個算法。QS算法是對BM算法的改進。而Wu_Manber算法是BM算法的多模式擴展??梢哉f,這幾個算法的核心思想是一致的。

  多模式匹配過程要獲得高的效率,關鍵在于三個方面:一是盡可能多、盡可能遠地進行跳躍,避免進入無效的匹配過程;二是在可能出現匹配時,盡量減少比較次數;三是綜合利用現有硬件條件,進行并行運算。

  在本文中,使用p[0..m-1]表示要匹配的模式串,長度為m。使用T=t[0..n-1]表示正文文本,長度為n。字符集以Σ表示,大小為σ。將匹配過程中P與T中長度為m的子串之間的一次比較稱為一次嘗試,并將T中的該子串稱為當前匹配窗口,假設當前匹配窗口在T中的起始位置為k。

1 Wu_Manber算法

  在多模式匹配中,隨著模式串個數的增加,字符t[k+m]出現在各模式串尾端的概率相應增加,因而能達到的平均跳躍距離隨之變小,BM或QS算法的跳躍效果在多模式串的情況下被極大地削弱。Wu_Manber 算法利用塊字符擴展了不良字符的跳躍效果,同時用散列表來篩選匹配階段應進行匹配的候選模式串,減少算法匹配時間。在每次匹配嘗試中,一次考察一“塊”,即連續B個字符。根據這B個字符所組成的塊的匹配情況來決定跳躍距離。通常模式數量少的時候取B=2,模式數量大的時候取B=3。

  Wu_Manber算法同樣分為兩個處理階段。預處理階段將建立三個表格:SHIFT表、HASH表和PREFIX表。SHIFT表中存儲字符集中所有塊字符的跳躍距離。HASH 表用來指出可能匹配的所有候選模式串。PREFIX 表用來過濾候選模式串。

  取所有模式串長度的最小值為m,只考慮所有模式串的前m個字符。假設當前匹配窗口的最后B個字符組成不良字符塊X:

 ?、臱在所有模式串中不出現,則跳躍距離為m-B+1,即SHIFT[X]=m-B+1。

 ?、芚在部分模式串中出現,則跳躍距離為X在所有模式串中的最右出現到X的距離。

  如果X是良好字符塊,則SHIFT[X]=0,進入精確匹配過程。HASH[X]指向所有以X結尾的模式串列表,依次訪問這些可能匹配的候選模式串,如果模式串的前綴與PREFIX表不符合,則跳過;否則比較該模式串中的每個字符以決定是否出現一個完全匹配(此時的比較不再限于模式串的前m個字符,而是完整的模式串)。

  以上的討論中,SHIFT[X]和HASH[X]指的是先將X散列,得到一個整數值,再用這個整數值作索引,查詢SHIFT表和HASH表。

  Wu_ Manber算法的時間復雜度在最好的情況下能達到O(B×n/m)。

2 對Wu_Manber算法的改進

  2.1 對跳躍距離的改進一

  2.1.1 精確的不良字符塊跳躍距離

  首先研究不良字符塊X在所有模式串中不出現時,其跳躍距離是否只能達到m-B+1。

001.jpg

  如圖1所示,假設“ABCDE”為模式串集中長度最小的模式,此時匹配窗口的塊字符為“XAB”,雖然“XAB”是個不良字符塊,但是它的后綴“AB”是模式“ABCDE”的前綴,此時如果將匹配窗口移動m=5,那么就會漏掉一次正確的匹配。長度為B的不良字符塊,至多它的長度為B-1的后綴可能在模式串中出現。因此安全的跳躍距離為m-(B-1)=m-B+1=3。但是這種情況的出現次數相對于匹配中遇到的大多數不良字符塊轉移來說所占比例非常少,它減少了大多數情況下的跳躍距離,因此可以引入精確的不良字符跳躍表Shift[ ],其最大跳躍距離可以達到m。

  精確的Shift[ ]計算過程:

  ⑴ 用m填寫Shift[ ]表;

 ?、苀or (i = 1 ;i < B ;i ++ )

  {

  對所有Bc ∈{ suffix(Bc,i) = prefix(pattern,i) }

  Shift [Bc ] = m - i ;

  }

  ⑶For 每一個關鍵詞

  {

  For 當前關鍵詞中的每一個塊字符

  計算Shift[ Bc ] ;

  }

  2.1.2 弱化的良好字符塊跳躍距離

  Wu_Manber算法中沒有使用BM算法中使用的良好字符跳躍方法,因此無論當前良好字符塊的匹配結果如何,跳躍距離都固定為1。為此引入一種弱化了的良好字符塊跳躍表GBSShift[ ]來改進這一問題。該表記錄了每一個模式串的長度為B的后綴(最后一個塊字符)在所有模式串中的所有非后綴出現位置與后綴的距離的最小值。這樣,在匹配失敗后,其跳躍距離很可能大于1。

  實際試驗證明了在附加微小的預處理時間(約為原預處理時間的10%)后,以上兩種改進能夠有效地降低比較次數,從而減少了對整個文本數據的掃描時間(約為原算法掃描時間的85%~92%) 。

  2.2 對跳躍距離的改進二

  結合Q S算法的思想,忽略當前匹配窗口的信息,不管匹配是否成功,直接使用字符塊t[m-B+1..m]來確定跳躍距離。跳躍距離至少為1,最大為m-B+2。但這樣做的話,跳躍表就無法用來判斷當前窗口是否存在可能匹配了(原算法跳躍距離為0表明存在可能匹配,應該進入精確匹配過程)。根據QS算法的特點,其匹配順序沒有要求,因此可以查看各模式串的前B個字符(前綴)與當前窗口的前綴是否匹配。為此需要增加一個表Head [ ],記錄各模式串前綴的信息。Shift表記錄的是若當前文本與所有模式的前綴不同時, 數據指針向后跳躍距離。

  Shift [ ]表計算方法為:

 ?、?用m填寫Shift [ ]表;

  ⑵For 每一個模式串

  { //對當前模式串中的每一個塊字符, 這里B = 2,計算跳躍距離;

  for ( i= 0; i< m - 1; i+ + )

  {

  Hash = hashBlock (pattern+ i) ;

  if (Shift[hash]> = m - 1- i)

  Shift[hash]= m - 1- i;

  }

  }

  Head 表計算如下:

 ?、?用 0 預置 Head[ ]表;

 ?、艶or 每一個模式串

  {

  hash = hashBlock (pattern) ;

  Head[hash ] = 1;

  }

  實驗結果顯示, 在最小模式長度較小時,當 m<9時,改進后的算法比原算法性能顯著提高,用于英文文本時平均提高 8%~20%,用于中文文本時平均提高約15%~30%;當最小模式長度較大時, 改進后的算法性能與原算法基本相同。

  2.3 對跳躍距離的綜合改進

  以2.2節為基礎,結合2.1節的思想,計算其不良字符塊的精確跳躍距離,將使得最大跳躍距離能夠達到m+1。另外,同樣引入2.1節所使用的弱化的良好字符塊跳躍表。這樣,改進后的算法思想為:在當前匹配窗口中,如果根據Head[ ]表發現不可能出現匹配,則使用精確的不良字符塊跳躍表直接向右移動窗口,其最大距離可達m+1,否則,進入精確匹配過程,比較順序為從右向左。如果找到匹配則輸出,再次采用精確的不良字符塊跳躍表直接向右移動窗口,否則比較不良字符塊跳躍表和弱化的良好字符塊跳躍表,選取較大值作為窗口的跳躍距離。

  2.4 匹配過程改進一

  進入精確匹配過程后,Wu_Manber 算法對HASH[X]指向的候選模式串列表進行逐個比較。如果模式串pj和pk都匹配成功,則pj是pk的后綴或者反之。稱存在一個模式是其他模式的后綴的一組模式為后綴模式。例如模式this、his、is,如果沒有后綴模式,就不可能有兩個模式串同時匹配成功,所以一旦某個模式串匹配成功,就可以提前結束循環,根據跳躍表移動匹配窗口到下一個位置。

  改進后的HASH數據結構增加了 same_suffix域,如圖2。后綴處理算法把后綴模式的模式使用same_suffix域鏈接起來,這樣在HASH表的next鏈表中的模式就不存在后綴模式。圖2中,Pi為is,Pi1為his,Pi2為this,Pi、Pi1、Pi2構成一個后綴模式,其中Pi是其他模式公共后綴;通過Pi的 same_suffix鏈表鏈接Pi1、Pi2。

  改進后算法效率在模式的各個規模上都有明顯的提高,提高幅度達到8%~15%,說明后綴模式處理能夠比較穩定、有效地提高算法的運行效率。

  2.5 匹配過程改進二

  由于 CPU進行一次8位的字符比較與進行一次機器字長的整數比較所花費的時間完全相同,因此完全可以一次比較4個字符(32位CPU),以此提高效率。

  2.6 其他改進

  算法在匹配過程中的最大“跳躍” 距離是由所有模式串中最短的模式串長度 m決定的。所以如果最小模式串的長度為1或2,則最大跳躍距離將非常有限,會大大降低算法的性能。

002.jpg

  實驗得出的數據為:當m=1時,算法所用時間是其他情況下的7~10倍;m=2時,算法所用時間是其他情況下的4~9倍。針對這個問題,可以將模式串集一分為二,長度小于等于2的為一組,其他的為另一組。將算法在這兩個模式串子集上分別運行,最后得到總結果。

  改進后的Wu_Manber算法性能有明顯提高。特別是對于英文匹配,在單字節模式串出現個數較少時,匹配速度較原來提高了 5~8倍。考慮到現實中,單字節(單漢字)模式串出現個數較少,所以這種改進還是具有一定的實用價值。

  2.7 并行處理

  現在隨著CPU內核數的增多,在算法實現時應充分利用其并行處理能力。

  2.5節提出的問題和解決方法完全可以用兩個線程或進程同時并行處理。不僅如此,應將模式串集合合理分組,用多個線程或進程并行處理,每個線程或進程負責處理一個模式串子集,降低模式串集合過度增加后算法效率的下降。

  大文本則切成數段,每段之間有一定的重合,保證不遺漏可能匹配,采用多個線程或進程同時處理,每個線程或進程負責處理一段文本,這樣在線程數不超過CPU核心數的前提下,超大文本串的掃描速度將以近似線性增加。

3 結束語

  多模式匹配算法是一個基礎算法,有許多重要應用場合,對其進行深入研究和試驗具有重要意義。通過對Wu_Manber算法的仔細研究,在算法實現過程中對算法作出了多方面的改進,在實際應用中,取得了良好的效果。

參考文獻

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

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

  [3] Sun Wu,Manber U. A fast algorithm for multi pattern searching [R]. Technical Report TR94217,University of Arizona at Tuscon, 1994.

  [4] 楊東紅,徐恪,崔勇.改進的Wu-Manber 多模式串匹配算法[J]. 清華大學學報 (自然科學版),2006,46(14):109-112.

  [5] 李雪梅,代六玲,童新海,等.對 QS串匹配算法的一種改進[J]. 計算機應用與軟件,2006,23(3):55-57.

  [6] 張鑫,譚建龍,程學旗.一種改進的Wu_Manber 多關鍵詞匹配算法[J]. 計算機應用,2003,23(7):544-549.

  [7] 孫曉山,王強,關毅,等.一種改進的 Wu_Manber 多模式匹配算法及應用[J]. 中文信息學報,2006,20(2):47-53.

  [8] 陳瑜、陳國龍. Wu_Manber算法性能分析及其改進[J]. 計算機科學,2006,33(16):207-029.


此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲自拍偷拍麻豆| 欧美日韩视频第一区| 欧美日韩一区二区视频在线观看| 久久精品国产亚洲5555| 欧美日韩国产bt| 欧美激情片在线观看| 亚洲欧美国产精品专区久久| 欧美四级伦理在线| 久久久精品一品道一区| 中文日韩电影网站| 欧美日韩国产123| 欧美激情综合五月色丁香小说| 国产精品视频免费观看| 久久久久国产精品麻豆ai换脸| 欧美日本精品一区二区三区| 精品99一区二区三区| 欧美国产视频一区二区| 小黄鸭视频精品导航| 亚洲二区免费| 久久精品亚洲一区二区| 久久gogo国模啪啪人体图| 欧美亚洲动漫精品| 亚洲电影毛片| 欧美日韩精品福利| 欧美va亚洲va日韩∨a综合色| 亚洲午夜久久久久久尤物| 欧美黄色一区二区| 欧美激情综合五月色丁香小说| 韩国av一区二区三区在线观看| 久久精品视频99| 国产精品久久久久久超碰| 久久av一区二区三区| 午夜精品一区二区三区在线播放| 欧美日本高清视频| 亚洲一区亚洲二区| 欧美一激情一区二区三区| 欧美一级淫片aaaaaaa视频| 羞羞色国产精品| 国产精品视频九色porn| 国产精品99久久久久久有的能看| 一区二区精品国产| 免费欧美视频| 欧美成人首页| 亚洲欧美成人精品| 亚洲激情女人| 亚洲一二三区精品| 国内伊人久久久久久网站视频| 1024欧美极品| 亚洲欧美久久久久一区二区三区| 精久久久久久久久久久| 欧美在线观看日本一区| 亚洲国产黄色片| 欧美日韩不卡一区| 亚洲伦理自拍| 国产精品亚洲аv天堂网| 欧美日韩视频一区二区| 欧美特黄视频| 亚洲黄色在线视频| 亚洲视频国产视频| 久久久久久国产精品mv| 国产精品chinese| 欧美日韩一级黄| 欧美激情久久久久| 亚洲免费观看高清在线观看| 一区二区三区久久| 亚洲二区三区四区| 一区二区三区免费网站| 亚洲人成网站在线观看播放| 国产精品久久久亚洲一区| 国产精品久久久久久久久久久久久久| 国产精品夜夜夜一区二区三区尤| 欧美日韩精品免费观看视频完整| 一本一本久久a久久精品综合妖精| 99re6这里只有精品视频在线观看| 欧美www视频在线观看| 亚洲理伦电影| 国产精品wwwwww| 久久综合狠狠综合久久激情| 亚洲精品在线观看视频| 国产精品丝袜91| 久久久人成影片一区二区三区| 韩国成人福利片在线播放| 99热这里只有精品8| 欧美精品七区| 国产女人aaa级久久久级| 亚洲精品视频一区| 国一区二区在线观看| 一本久久精品一区二区| 免费日韩视频| 欧美成人综合| 国产美女诱惑一区二区| 久久精品视频免费播放| 国产欧美亚洲日本| 欧美一区国产一区| 久热国产精品视频| 亚洲永久免费观看| 欧美日韩在线另类| 你懂的国产精品| 久久国产一二区| 日韩亚洲综合在线| 黄色av成人| 亚洲欧美一区二区视频| 性欧美xxxx视频在线观看| 欧美www视频在线观看| 一区二区三区成人精品| 欧美日韩1区2区| 欧美久色视频| 欧美高清在线视频观看不卡| 欧美成人激情视频| 在线日韩一区二区| 久久综合狠狠综合久久综合88| 亚洲影视在线播放| 在线观看日韩av| 亚洲黄色视屏| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲一区二区av电影| 亚洲免费精品| 黄色亚洲在线| 一区二区三区在线免费播放| 香蕉免费一区二区三区在线观看| 久久伊人一区二区| 久久精品视频免费| 亚洲三级电影在线观看| 欧美日韩精品是欧美日韩精品| 国产亚洲欧美日韩在线一区| 欧美日韩精品欧美日韩精品| 国产综合色精品一区二区三区| 欧美精品少妇一区二区三区| 黄色资源网久久资源365| 在线看片第一页欧美| 国产精品男人爽免费视频1| 久久久久国色av免费观看性色| 亚洲国产成人精品久久久国产成人一区| 久久蜜桃精品| 国产精品视频第一区| 亚洲香蕉伊综合在人在线视看| 国产精品一区在线播放| 亚洲一区精品视频| 性做久久久久久久免费看| 一区二区欧美国产| 亚洲欧洲在线免费| 欧美一级播放| 日韩午夜一区| 国产一区二区电影在线观看| 羞羞视频在线观看欧美| 亚洲日本aⅴ片在线观看香蕉| 国产精品高潮呻吟视频| 亚洲麻豆av| 欧美精品 日韩| 久久久久久电影| 尤物99国产成人精品视频| 精品福利免费观看| 在线看欧美日韩| 亚洲综合99| 欧美三级视频| 日韩午夜激情| 国产欧美精品在线观看| 欧美一区二区视频网站| 欧美伦理在线观看| 欧美激情性爽国产精品17p| 亚洲精品免费一二三区| 欧美一区亚洲一区| 亚洲视频你懂的| 久久九九精品| 欧美jizzhd精品欧美喷水| 99re6这里只有精品| 国产一区二区日韩精品欧美精品| 合欧美一区二区三区| 欧美激情综合在线| 欧美高清视频一区| 欧美成人日本| 国产精品v欧美精品v日本精品动漫| 亚洲视频在线播放| 亚洲一区二区三区欧美| 亚洲黄色在线视频| 国产午夜精品理论片a级探花| 欧美人交a欧美精品| 欧美日韩精品一区二区| 国产日韩欧美在线观看| 亚洲激情不卡| 欧美成人一品| 欧美午夜视频在线观看| 韩国美女久久| 午夜精品视频在线| 在线观看亚洲视频| 国产精品亚洲综合色区韩国| 91久久综合亚洲鲁鲁五月天| 一区二区三区成人| 久久久久久久高潮| 国产精品高潮呻吟视频| 国产精品嫩草久久久久| 一区二区激情小说| 免费日韩av电影| 一区二区欧美日韩视频| 国产精品国产精品国产专区不蜜| 一二三区精品福利视频| 先锋资源久久| 久久亚洲欧美国产精品乐播| 亚洲在线观看视频| 亚洲一区中文| 国产精品视频成人| 激情成人中文字幕| 久久免费精品视频| 亚洲一区二区三区涩| 欧美精品成人| 欧美精品一区二区三区高清aⅴ| 亚洲专区欧美专区| 久久亚洲综合| 亚洲欧美卡通另类91av| 一区二区动漫| 欧美大香线蕉线伊人久久国产精品| 久久免费观看视频| 亚洲影院污污.| 1000精品久久久久久久久| 欧美激情亚洲视频| 精品999在线播放| 久久国产日韩| 日韩视频精品在线| 久久久久这里只有精品| 久久九九久精品国产免费直播| 欧美激情四色| 欧美激情影音先锋| 99这里只有精品| 久久久久久久综合| 国产精品国产精品| 六月婷婷一区| 亚洲精品欧美极品| 欧美日韩三级一区二区| 亚洲精品国偷自产在线99热| 免费一区二区三区| 国产精品丝袜白浆摸在线| 香蕉久久久久久久av网站| 激情成人亚洲| 亚洲欧美日韩国产成人精品影院| 国产在线精品成人一区二区三区| 亚洲女人小视频在线观看| 亚洲视频一区在线观看| 欧美日韩在线另类| 精品av久久久久电影| 亚洲电影成人| 在线欧美亚洲| 午夜欧美精品| 久久久精品视频成人| 亚洲综合电影| 欧美一区激情视频在线观看| 国产精品男人爽免费视频1| 国产一区91精品张津瑜| 国产精品久久久久久av福利软件| 欧美日韩一区二区在线观看| 欧美日韩国产精品成人| 亚洲欧美日韩在线综合| 欧美中日韩免费视频| 国产深夜精品福利| 日韩午夜激情| 亚洲大片一区二区三区| 免费在线观看一区二区| 国产一区欧美| 久久国产福利国产秒拍| 亚洲综合日韩中文字幕v在线| 狠狠色综合网站久久久久久久| 亚洲一区精品视频| 亚洲国产精品久久人人爱蜜臀| 久久综合伊人77777尤物| 亚洲精品国产精品久久清纯直播| 狠狠色狠狠色综合人人| 国产一区激情| 亚洲视频1区| 亚洲伦理在线| 一区二区三区**美女毛片| 欧美日韩免费| 亚洲私拍自拍| 欧美在线不卡| 亚洲国产高清自拍| 国产一区二区三区四区五区美女| 怡红院精品视频| 国产精品久久久一区二区三区| 国产精品99一区| 亚洲欧美成人一区二区在线电影| 国产精品一区二区欧美| 国产精品videossex久久发布| 国产精品福利久久久| 亚洲精品综合久久中文字幕| 一区二区视频免费完整版观看| 国产精品自在在线| 久久国产免费看| 欧美日韩一级视频| 亚洲午夜免费福利视频| 亚洲一区二区三区乱码aⅴ| 亚洲精品日韩综合观看成人91| 免费亚洲电影在线| 性久久久久久久| 亚洲高清在线观看| 亚洲精品久久久久久久久久久久| 欧美一区二区三区在线观看| 欧美高清成人| 国产日韩一区二区三区在线播放| 亚洲另类视频| 欧美一区午夜精品| 99在线热播精品免费99热| 黄色免费成人| 一区二区三区|亚洲午夜| 欧美高清在线精品一区| 欧美日韩午夜在线| 蜜桃av噜噜一区二区三区| 亚洲永久免费| 国产在线播放一区二区三区| 久久精品视频在线| 欧美色图五月天| 国产一区二区三区四区在线观看| 欧美日韩一区二区免费视频| 亚洲神马久久| 亚洲午夜视频在线观看| 99在线视频精品| 欧美三级不卡| 亚洲色图在线视频| 亚洲精品国产日韩| 欧美激情偷拍| 亚洲欧洲中文日韩久久av乱码| 模特精品在线| 国产精品揄拍一区二区| 久久国产精品久久久久久| 国产精品xvideos88| 欧美在线日韩| 欧美美女操人视频| 欧美一区午夜精品| 亚洲免费在线| 亚洲美女中出| 国产精品大片|