BM模式比對演算法原理(圖解)

來源:互聯網
上載者:User

http://hi.baidu.com/l6834279/item/d6ef651684dda4fcddeecae3

首先,先簡單說明一下有關BM演算法的一些基本概念。

BM演算法是一種精確字串匹配演算法(區別於模糊比對)。

BM演算法採用從右向左比較 的方法,同時應用到了兩種啟發學習法規則,即壞字元規則 和好尾碼規則 ,來決定向右跳躍的距離。

BM演算法的基本流程: 設文本串T,模式串為P。首先將T與P進行靠左對齊,然後進行從右向左比較 ,如所示:


    若是某趟比較不匹配時,BM演算法就採用兩條啟發學習法規則,即壞字元規則 和好尾碼規則 ,來計算模式串向右移動的距離,直到整個匹配過程的結束。       

下面,來詳細介紹一下壞字元規則 和好尾碼規則 。

     首先,詮釋一下壞字元和好尾碼的概念。

   請看:


     圖中,第一個不匹配的字元(紅色部分)為壞字元,已匹配部分(綠色)為好尾碼。

    1)壞字元規則(Bad Character):

          在BM演算法從右向左掃描的過程中,若發現某個字元x不匹配,則按如下兩種情況討論:

               i. 如果字元x在模式P中沒有出現,那麼從字元x開始的m個文本顯然不可能與P匹配成功,直接全部跳過該地區即可。

               ii. 如果x在模式P中出現,則以該字元進行對齊。

         用數學公式表示,設Skip(x)為P右移的距離,m為模式串P的長度,max(x)為字元x在P中最右位置。


              

       例1:

         紅色部分,發生了一次不匹配。

             

        計算移動距離Skip(c) = 5 - 3 = 2,則P向右移動2位。

        移動後如:

          

        

    2)好尾碼規則(Good Suffix):

         若發現某個字元不匹配的同時,已有部分字元匹配成功,則按如下兩種情況討論:

              i. 如果在P中位置t處已匹配部分P'在P中的某位置t'也出現,且位置t'的前一個字元與位置t的前一個字元不相同,則將P右移使t'對應t方才的所在的位置。

              ii. 如果在P中任何位置已匹配部分P'都沒有再出現,則找到與P'的尾碼P''相同的P的最長首碼x,向右移動P,使x對應方才P''尾碼所在的位置。

         用數學公式表示,設Shift(j)為P右移的距離,m為模式串P的長度,j 為當前所匹配的字元位置,s為t'與t的距離(以上情況i)或者x與P''的距離(以上情況ii)。

           

       以上過程有點抽象,所以我們繼續圖解。

         例2:

          中,已匹配部分cab(綠色)在P中再沒出現。

         

         再看,其尾碼T'(藍色)與P中首碼P'(紅色)匹配,則將P'移動到T'的位置。

         

         移動後如:

          

          自此,兩個規則講解完畢。

     在BM演算法匹配的過程中,取SKip(x)與Shift(j)中的較大者作為跳躍的距離。

     BM演算法預先處理時間複雜度為O(m+s),空間複雜度為O(s),s是與P, T相關的有限字元集長度,搜尋階段時間複雜度為O(m·n)。

最好情況下的時間複雜度為O(n/m),最壞情況下時間複雜度為O(m·n)。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.