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

模式匹配BM算法改進探討

2017-05-08 22:15:09徐政超
科技與創新 2017年6期

徐政超

摘 要:研究了BM字符串匹配的算法,并提出了改進算法。借助這些算法的優點,可以判斷結束字符、相鄰字符的存在和唯一性,或者字符串不合理的字符。這些判斷結果增加了新的移動距離,減少了匹配的次數,并提高了字符串匹配的效率,對模式識別的高效發展具有深遠的意義和價值。

關鍵詞:BM算法;模式匹配;字符匹配;字符串

中圖分類號:G354 文獻標識碼:A DOI:10.15913/j.cnki.kjycx.2017.06.059

1 BM算法概述

在計算機科學中,Boyer-Moore字符串搜索算法是一種高效的字符串搜索算法,是實際字符串搜索文獻的標準基準,它是由Robert S. Boyer和J Strother Moore在1977年開發的。算法預處理搜索字符串,但不處理正在搜索的字符,因此,它非常適合于其中模式比文本短得多或在多個搜索中持續存在的應用程序。Boyer-Moore算法使用在預處理步驟期間收集的信息來跳過文本的部分,導致比許多其他字符串搜索算法具有更低的常數因子。

2 BM算法的原理

Boyer-Moore算法通過在不同比對中執行顯式字符比較來搜索P在T中的出現,而不是對所有對齊的暴力搜索。Boyer-Moore使用通過預處理P獲得的信息跳過盡可能多的對齊。在引入這個算法之前,在文本內搜索的常用方式是檢查文本每個字符模式的第一個字符。一旦發現相同,文本的后續字符將與模式的字符進行比較。如果沒有匹配,則再次逐個字符檢查文本,以便找到匹配。因此,文本中幾乎每個字符都需要檢查。該算法的關鍵點是,如果將模式的結束與文本相比較,則可以沿著文本跳躍而不是檢查文本的每個字符。這樣做的原因是,在將模式與文本對齊時,將模式的最后一個字符與文本中的字符進行比較。如果字符不匹配,則無需繼續沿著模式向后搜索。如果文本中的字符與模式中的任何字符不匹配,則要檢查的文本中的下一個字符沿著文本位于更遠的n個字符,其中,n是模式的長度。如果文本中的字符在模式中,則沿著文本進行模式的部分移位,以沿匹配字符排列,并且重復該過程。沿著文本跳躍以進行比較而不是檢查文本中的每個字符,減少了必須比較的數量。這是算法效率的關鍵。更正式地,算法從對齊{k=n}開始,因此P的開始與T的開始對齊。然后,P和T中的字符從P中的索引n和T中的k開始,向后移動。字符串從P的結尾到P的開始匹配。比較繼續,直到達到P的開始或者發生不匹配,其中對齊向前移動(向右)根據多個規則允許的最大值。在新對準時再次執行比較,并且重復該過程,直到對準被移位經過T的結束。這意味著找不到進一步的匹配。移位規則被實現為使用在P預處理期間生成的表進行常數查找。

一個簡單但重要的優化Boyer-Moore是由Galil在1979年提出的。與移位相反,Galil規則通過跳過已知匹配的部分來加速在每個對齊處進行的實際比較。假設對齊k1、P與T下降到T的字符c,如果P被移位到k2,使得其左端在c和k1之間,則在下一比較階段中,P的前綴必須匹配子串T[(k2-n)…k1]。因此,如果比較向下到達T的位置k1,則可以記錄P的發生而不明確比較過去的k1。除了提高Boyer-Moore的效率之外,Galil規則可以在最差的情況下利用線性時間執行。

3 BM算法的改進

3.1 末字符不匹配

模式串字符與正文串字符從右向左匹配時,如果串末字符與正文串對應字符不匹配,不是查看模式串串末字符對應正文串字符的后繼字符是否在模式串中,而是查看與模式串串末字符對應的正文串中字符的后繼字符是否為模式串串首字符。

3.2 后綴匹配

當模式串字符與正文串字符從右向左匹配時,有部分匹配后,匹配如下:查看模式串的末字符對應正文串中字符的后繼字符是否在模式串中,查看后綴是否存在僅出現一次的字符。

算法實現中包括以下2個步驟。

3.2.1 預處理

計算字符集中每個字符在模式串P中首次出現的位置,如果不存在,則為-1;如果存在,則記錄其位置。計算模式串P={P[0],P[1],…,P[m]}中每個字符首次出現的位置first[P[i]](i為0~m),計算模式串中每個字符在模式串中出現的次數。

3.2.2 匹配過程

匹配過程如下:①初始化。定義變量tlen、plen表示模式串和正文串的長度,定義變量num用于統計在模式串中出現不只一次的字符個數,定義循環變量i則用于進行正文串與模式串的起始位置對齊,定義循環變量j用于模式串字符的匹配。②判斷i的值。如果i>tlen-plen+1,則失敗退出;否則,初始化j=m,max=0,onlyOne=0.③循環②,直到T[i+j]與P[j]不相等。④判斷j的值。如果j=-1,則匹配成功,返回i值。⑤如果onlyOne≥1,即已匹配好的字符僅出現一次的個數存在。如果有,則i=i+max+1,返回②;否則,繼續⑥。⑥判斷num-onlyOne是否大于0,即判斷還未進行比較的模式串前部分是否存在模式串中僅出現一次的字符。⑦判斷壞字符T[i+j]的前驅后繼字符以及T[i+m]的前驅是否在P[j]與P[m]的相應位置上,并根據其位置移動,返回②。

4 總結與展望

古典字符串匹配算法的本質是順序字符匹配,它總是從左到右或從右到左。在主字符串中,如果有許多子串具有與模式字符串相同的前綴或后綴,則算法效率低。移位的最大長度是模式字符串的長度。改進后的算法使用兩串分離比較方法,有效地節省了由于子串和模式串的相同前綴或后綴的無意義的比較時間。在改進的版本中,不執行前綴移位,改善壞字符移位功能,還修改Goto過程,其不保持好的前綴移位和壞字符移位的參數。由于算法根據改進的不良字符規則計算模式串的移動距離,因此增加了模式串的移動距離。實驗結果表明,改進的字符串匹配算法可以有效地減少字符串匹配次數和移動次數來改進算法,有利于提高模式識別的效率。

參考文獻

[1]王天聰,侯整風,何玲.基于BM的模式匹配改進算法[J].合肥工業大學學報(自然科學版),2011(03).

主站蜘蛛池模板: 无码'专区第一页| 亚洲第一黄片大全| 一本一道波多野结衣一区二区| 青草视频网站在线观看| 日韩精品一区二区三区视频免费看| 国产00高中生在线播放| 色亚洲成人| 亚洲区欧美区| 国产成人综合久久精品尤物| 露脸真实国语乱在线观看| 日韩高清中文字幕| 日韩成人在线一区二区| 天堂中文在线资源| 又黄又爽视频好爽视频| 日韩欧美中文字幕在线精品| 久久狠狠色噜噜狠狠狠狠97视色 | 国内嫩模私拍精品视频| 成人综合在线观看| 久草热视频在线| 91九色视频网| 亚洲三级成人| aⅴ免费在线观看| 亚洲区一区| 国产精品福利在线观看无码卡| 久久精品娱乐亚洲领先| 日韩精品欧美国产在线| 国产综合无码一区二区色蜜蜜| 中文无码精品a∨在线观看| 中文成人在线| 国产激情在线视频| 国产大片黄在线观看| 欧美成人第一页| 九九视频在线免费观看| 亚洲品质国产精品无码| 国产日本一区二区三区| 成年女人a毛片免费视频| 天堂网国产| 99爱视频精品免视看| 欧美一级特黄aaaaaa在线看片| 激情六月丁香婷婷四房播| 女人一级毛片| 国产成人高清精品免费软件| 草草影院国产第一页| 国产又粗又猛又爽| 欧美午夜精品| 色爽网免费视频| 日韩天堂在线观看| 欧美一级99在线观看国产| 一级爱做片免费观看久久| 在线免费无码视频| 波多野结衣中文字幕久久| 久久不卡精品| 婷婷丁香色| 午夜激情婷婷| 国产一级做美女做受视频| 日韩福利视频导航| 亚洲欧洲一区二区三区| 99视频精品全国免费品| 国产精品无码AV片在线观看播放| 国产精品美乳| 青草视频在线观看国产| 欧美精品v欧洲精品| 国产精品区网红主播在线观看| 真实国产精品vr专区| 欧美中文一区| 伊人91视频| 国产美女精品在线| igao国产精品| 青青草原国产免费av观看| 国产又粗又爽视频| 1级黄色毛片| 亚洲精品大秀视频| 农村乱人伦一区二区| 国产对白刺激真实精品91| 强奷白丝美女在线观看| 免费福利视频网站| 97久久精品人人做人人爽| 亚洲欧美成aⅴ人在线观看| 69综合网| 波多野结衣亚洲一区| 婷婷午夜影院| 国内精品伊人久久久久7777人|