字串匹配演算法(2)BM

2021-10-08 23:26:51 字數 392 閱讀 8174

2017/02/24

本篇針對bm演算法(字串匹配)進行講解。

這個演算法也是看了很久,看到這裡也感覺很力不從心,看來需要我把前面兩篇演算法實踐下了,不然總覺得空空的。

概述:1、對於原有的都是從左往右進行匹配的模式進行修改,改為「從右往左」,也就是先匹配最後面的字元。從這裡可以引出從右往左的bf演算法,或者說,可以利用kmp的表。(注意,這一點只是說,就是將模式匹配的順序進行了修改。)

2、在kmp的基礎上,還增加了一些字尾的資訊。(其實這部分的資訊量很大,很多)

3、該演算法利用了兩個規則,在進行匹配的時候,採用其中產生的最大偏移。

(這部分1書並沒有講解的很清楚,還是需要更多的補充,不過反覆的閱讀還是有收穫的。)

目前必須把演算法實踐一遍,把我這個數字的概念奠定牢固。

字串匹配 BM演算法

bm演算法 1 三個shift函式 d1,d2,d3,函式的作用是決定當匹配不成功時視窗的移動位數。1 d1 字尾u在模式串p中的另乙個位置是最右出現位置是j 不包括在模式串尾的出現 文字串的視窗安全移動方法是將視窗移動m j字元,使文字中的u與模式串中最右邊的u的出現位置相對齊。對模式中的每個字尾...

BM演算法 字串匹配演算法

思想 使用啟發式規則,通過每次的失敗的匹配嘗試,演算法都能根據這些資訊來排除盡可能多的無法匹配的位置 為什麼說是每次呢,因為每次的情況可能不一樣,通過資訊來跳過啟發式規則的得到的步數 目的 利用啟發式規則,盡可能多跳過無法匹配的位置,從而達到更高的效率 方法 壞字元規則和好字尾規則,取其中移動步數較...

字串匹配(中) BM演算法

壞字串規則 問題 si xi可能是負數,示例如下 0 3 解決方案 好字尾規則 好字尾規則 字首子串 類似字尾子串 規則選取 實現 主串a,模式串b function bm a,b for let i 0 i let suffix let prefix generategs b,suffix,pre...