《電子技術應用》
您所在的位置:首頁 > 其他 > 設計應用 > 一種基于QS的字符串匹配改進算法
一種基于QS的字符串匹配改進算法
寧小軍,周 智,黃劉生
(中國科學技術大學 信息學院,安徽 合肥230027)
摘要: 本文在分析BM和QS算法特點的基礎上,綜合利用了正文T[i+m-1]和T[i+m]位置上的字符信息,提出一種移動距離不小于模式長度的快速字符串匹配算法。該算法解決了QS算法在skip[i+m-1]<skip[i+m]時低效的問題。
Abstract:
Key words :

摘  要: 本文在分析BM和QS算法特點的基礎上,綜合利用了正文T[i+m-1]和T[i+m]位置上的字符信息,提出一種移動距離不小于模式長度的快速字符串匹配算法。該算法解決了QS算法在skip[i+m-1]<skip[i+m]時低效的問題。
關鍵詞: 模式匹配  串搜索  算法

  串匹配問題是計算機科學領域研究中的一個焦點問題,它在情報檢索、自然語言翻譯、基因序列匹配、壓縮數據、圖像處理、網絡入侵檢測以及事務管理系統等諸多非數值處理方面都有著非常廣泛的應用。串匹配就是在一個大的正文T中搜索指定模式P的所有出現位置。按照功能,串匹配算法主要分為三類:精確串匹配算法、近似串匹配算法和正則表達式算法。其中,最有影響的是KMP算法、BM算法、RK隨機算法和SUANDAY算法以及由此而產生的一些改進算法。在實際應用中,這些算法都各有千秋,各有側重。
1  BM和QC算法分析
  字符串匹配問題描述:

1.1 BM算法
  BM是由Boyer和Moore于1977年提出的,它是一種簡單、快速、通用的工程算法。它的特點是在窗口內部從右向左逆向匹配,采用壞字符啟發和好后綴啟發兩種方法,通過預處理模式分別計算BadcharShift[char]和GoodSufShift[char]轉移表。當發現不匹配時,選擇兩者中的最大值作為模式向右移動的距離。
BM算法的預處理分為壞字符轉移表和好后綴轉移表兩個階段。
  壞字符移動表BadcharShift[char]記錄的是字符char在模式串P中的最右出現位置。具體表述為:
  

  BM算法的空間復雜度和預處理時間均為O(m+σ)。在最壞情況下,它的時間復雜度為O(nm);在最好情況下,時間復雜度為O(n/m)。
  從理論上講,BM算法的時間復雜度要大大高于KMP算法的時間復雜度O(m+n),但在實際應用中,BM算法的搜索步長接近于模式長度m,所以執行效率非常高。
1.2 QS算法
  QS算法是一種簡單、快速、實用的算法。在模式匹配過程中,該算法將發生失配的字符與計算右移量兩者獨立開來的現象,其僅利用T[i+m]字符計算BadcharShift[T[i+m]]來決定模式轉移。通常情況下,模式轉移量為m+1,這大大提高了算法的搜索步長和匹配效率。
  QS算法的預處理與BM算法的對壞字符啟發的預處理相同。
  QS算法的匹配過程如下:
  

  QS算法的空間復雜度和預處理時間均為O(m+σ)。在最壞情況下,它的時間復雜度為O(mn);在最好情況下,時間復雜度為O(n/m+1)。
  QS算法利用了失配情況下T[i+m]字符引起的Badchar-
  Shift[T[i+m]],大大簡化了初始化過程,使其編碼簡單且調試迅速。通常情況下,QS算法比BM算法要快,但是當T[i+m-1]不在模式中,而T[i+m]在模式中時,即(m-BadcharShift[T[i+m-1]])>(m-BadcharShift[T[i+m]])時,QS算法的效率就會大打折扣。
2  新算法
2.1 算法基本思想及步驟
  針對上述分析,本文在吸收BM算法在模式窗口內自右向左逆向搜索的特點和QS算法利用BadcharShift[T[i+m]]向右最大移動模式串的特點的基礎上,充分挖掘了BadcharShift[T[i+m-1]]的潛在可利用的隱含信息,進一步優化和完善了QS算法。在預處理方面,新算法與QS算法基本相同,不同的是當模式在當前模式匹配窗口內自右向左匹配正文的過程中發生失配時,比較正文中T[i+m]和T[i+m-1]這兩個字符的移動距離,取其最大值進行移動,然后在新位置重新開始模式匹配。圖1為一個新算法匹配過程示例。

  新算法的匹配過程如下:

  

  新算法在QS算法的基礎上,充分利用了失配時T[i+m-1]和T[i+m]兩個字符引起的移動距離的最大值,使得移動距離增大,減少了模式匹配的比較次數。通常情況下,新算法的時間復雜度為O(n/m+1)。
2.2 性能測試
  針對本文提出的新算法,從參考文獻[1]中抽取chapter 32 String Matching中第一段內容作為測試正文,并在同樣的軟硬件環境下對BF、BM、QS和新算法進行比較,以檢測新算法在性能和效率方面的表現。表1為各種算法性能比較結果。

  測試正文:
  Finding all occurrences of a pattern in a text is a problem that arises frequently in text editing programs.Typically,the text is a document being edited,and the pattern searched for is a particular word supplied by the user.Efficiedt algorithms for this problem can greatly aid the responsiveness of the test editing program.String matching algorithms are also used,for example,to search for particular patterns in DNA sequences.
  搜索模式:the pattern searched
  由表1可知:新算法是一種比較次數少、耗時小、效率高的快速字符串匹配算法。

參考文獻
1   Knuth D E,Morris J H,Pratt V R.Fast pattern matching in  string.SIAM Journal on Computing,1977;6(2)
2   Boyer R S,Moore J S.A fast string searching algorithm.  Communications of ACM,1977;20(10)
3   Sunday D M.A very fast substring search algorithm.Communication of the ACM,1990;33(1)
4   Cormen T H,Leiserson C E,Rivest R L.TNTRODUCTION TO ALGORITHM(secondd edition).The Massachusetts Institute of Technology,2001;907

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
久久久av网站| 一区二区日韩精品| 狠狠色丁香婷婷综合影院| 欧美激情小视频| 欧美一区观看| 99伊人成综合| 亚洲福利视频三区| 亚洲一区二区三区久久| 亚洲高清在线| 国产日韩欧美综合| 欧美色图一区二区三区| 免费不卡在线观看| 久久se精品一区二区| 一区二区三区偷拍| 亚洲国产一区二区三区青草影视| 亚洲尤物影院| 国产欧美日韩另类一区| 欧美午夜视频一区二区| 欧美激情国产日韩精品一区18| 欧美综合激情网| 亚洲一区二区免费看| 亚洲精品视频二区| av成人天堂| 亚洲国内精品| 合欧美一区二区三区| 国产欧美不卡| 国产精品嫩草99av在线| 欧美视频网址| 欧美日韩国产首页在线观看| 久久激情婷婷| 欧美一区激情| 欧美一区二区视频免费观看 | 一区二区日韩| 日韩视频免费观看高清完整版| 亚洲夫妻自拍| 18成人免费观看视频| 一区精品在线| 亚洲丰满在线| 亚洲国产三级| 亚洲人成在线播放| 亚洲美女淫视频| 亚洲美女精品久久| 夜色激情一区二区| 亚洲视频日本| 亚洲最新在线| 亚洲欧洲日本专区| 亚洲精品无人区| 日韩亚洲不卡在线| 一区二区三区欧美成人| 亚洲一区二区免费在线| 亚洲综合色自拍一区| 亚洲永久免费观看| 欧美伊久线香蕉线新在线| 亚洲第一伊人| 日韩视频免费观看| 中文日韩在线| 香蕉久久一区二区不卡无毒影院| 香港成人在线视频| 99国产精品久久久久久久成人热| 99亚洲视频| 午夜精品区一区二区三| 欧美亚洲综合在线| 久久久国产成人精品| 男人的天堂亚洲| 欧美jizz19性欧美| 欧美日精品一区视频| 国产精品狼人久久影院观看方式| 欧美三级韩国三级日本三斤| 欧美母乳在线| 国产精品老女人精品视频| 国产在线观看一区| 亚洲国产视频一区二区| 亚洲激情在线观看视频免费| 欧美视频一区二| 国产视频在线观看一区二区三区| 在线观看欧美激情| 99这里只有久久精品视频| 亚洲一区二区三区高清| 亚洲第一黄网| 一区二区精品在线观看| 香蕉成人伊视频在线观看| 可以看av的网站久久看| 欧美日韩精品欧美日韩精品| 国产女主播一区| 亚洲福利在线观看| 亚洲一区二区免费看| 亚洲大黄网站| 亚洲免费视频成人| 美女日韩欧美| 国产精品嫩草久久久久| 国产视频在线观看一区二区| 亚洲三级性片| 欧美永久精品| 亚洲一区二区三区在线观看视频 | 久久九九免费视频| 欧美日本一区二区视频在线观看| 国产精品扒开腿爽爽爽视频| 一区二区三区在线视频免费观看| 一本一本久久| 亚洲国产精品一区在线观看不卡 | 国产精品一区2区| 亚洲高清在线精品| 亚洲欧美日韩另类| 一本久久青青| 久久五月婷婷丁香社区| 国产精品国产三级国产普通话三级| 狠狠入ady亚洲精品经典电影| 一本一本久久| 亚洲三级视频在线观看| 亚洲欧美国产高清| 在线亚洲自拍| 欧美另类变人与禽xxxxx| 永久免费精品影视网站| 久久精品国产欧美亚洲人人爽| 欧美有码在线观看视频| 国产精品免费一区豆花| 亚洲天堂av在线免费观看| 在线视频精品一区| 欧美日韩成人| 亚洲乱码日产精品bd| 一本色道久久综合狠狠躁篇的优点 | 欧美制服丝袜第一页| 久久精品123| 国产一区二区三区在线观看免费 | 亚洲永久网站| 国产精品videosex极品| 亚洲午夜久久久久久久久电影院 | 欧美精品九九| 亚洲精品中文字幕有码专区| 一区二区三区精品在线| 欧美视频观看一区| 亚洲深夜福利网站| 亚洲欧美日韩爽爽影院| 国产欧美一区二区在线观看| 欧美一区二区三区的| 免费成人黄色| 亚洲乱码视频| 亚洲欧美变态国产另类| 国产伦精品一区二区三区四区免费 | 亚洲精品四区| 欧美日韩在线亚洲一区蜜芽| 这里只有精品电影| 欧美影视一区| 国精品一区二区| 亚洲老板91色精品久久| 欧美日韩精品免费在线观看视频 | 午夜精彩国产免费不卡不顿大片| 欧美在线日韩在线| 国内精品嫩模av私拍在线观看| 亚洲国产日韩欧美综合久久| 欧美激情第一页xxx| 中文高清一区| 欧美专区在线观看一区| 伊人成人开心激情综合网| 亚洲欧洲综合另类| 国产精品a级| 久久精品成人| 欧美日韩不卡在线| 亚洲欧美日韩在线观看a三区| 久久一区二区三区av| 亚洲蜜桃精久久久久久久| 亚洲欧美日本在线| 激情小说亚洲一区| 99伊人成综合| 国产啪精品视频| 亚洲精品乱码久久久久久久久 | 99亚洲一区二区| 午夜精品久久久久久久蜜桃app | 亚洲性图久久| 国内伊人久久久久久网站视频| 99re66热这里只有精品3直播 | 久久成人综合网| 亚洲激情综合| 欧美一级免费视频| 91久久精品美女高潮| 午夜精品久久久久久99热软件| 在线播放亚洲一区| 亚洲摸下面视频| 亚洲福利视频专区| 欧美亚洲网站| 亚洲精品一品区二品区三品区| 久久成人国产| 日韩视频免费| 免费精品99久久国产综合精品| 夜夜精品视频| 免费视频最近日韩| 亚洲字幕一区二区| 欧美交受高潮1| 久久国产毛片| 国产精品蜜臀在线观看| 最近中文字幕mv在线一区二区三区四区 | 午夜亚洲性色福利视频| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲网站在线播放| 激情一区二区三区| 午夜亚洲福利在线老司机| 亚洲精品久久久久久久久久久 | 欧美chengren| 欧美在线精品一区| 国产精品户外野外|