一区二区三区电影_国产伦精品一区二区三区视频免费_亚洲欧美国产精品va在线观看_国产精品一二三四

聯系我們 - 廣告服務 - 聯系電話:
您的當前位置: > 關注 > > 正文

如何理解KMT字符串匹配算法?如何計算出KMT數組?

來源:CSDN 時間:2023-03-02 09:43:44

KMT字符串匹配算法的核心是1. 如何計算出NEXT數組 2. 對該算法思想的理解。今天又復習了下這個算法,領悟了一套自認為更形象的理解。概括一句話就是:可以把KMT看成是暴力算法的加速版本或者跳躍版本,而如何加速跳躍則是NEXT數組的用途所在。


【資料圖】

首先考慮暴力算法,T(目標串),P是模式串,即尋找P在T中的位置。

T: AACAAXEE

P: AACAAZDD

在X與Z處,出現了不匹配。按照暴力算法,我們會把P按步長1逐步的從T往后移,也就是第二次從T的B位置,第三次是C位置開始,以此類推。

KMT算法相比上面方法的改進之處就是,這個步長不用一直為1. 比如XZ不匹配的時候,可以直接步長3來進行第二步的匹配。也就是說P在當前不匹配的位置左邊,即

T: AACAA

P:AACAA    尋找這兩個最大的重疊部分(沒移動前當然是最大的,但是這個時候已經發現XZ不匹配,所以我們要排除這個。可以把T跟P看出寫著AACAA的并列的兩張紙條,P往右慢慢移動,尋找最大的兩張紙條重疊部分即可。)這樣可以避免無意義的一步步的走,比如要是只走一步,

AACAA

AACAA, 如果我們已經知道這個不是最大重疊串,那么也就是說這一步走完后,T跟P肯定不等(因為目前重疊的部分已經不等了),所以我們要尋找最大重疊串。

T:AACAAXEE

P:      AACAAZDD

以T為參照就是T的當前下標不變,P移動到合適的下標位置。 緊接著,發現XC不等,于是在C左邊尋找最大的跳躍步長。

責任編輯:

標簽:

相關推薦:

精彩放送:

新聞聚焦
Top 主站蜘蛛池模板: 方山县| 额尔古纳市| 台山市| 法库县| 天津市| 兖州市| 张家川| 曲松县| 无锡市| 永州市| 水富县| 大余县| 福海县| 陆良县| 灵石县| 广元市| 丘北县| 浑源县| 汨罗市| 陆良县| 平凉市| 大庆市| 达拉特旗| 萝北县| 闻喜县| 新兴县| 巴东县| 舟曲县| 光泽县| 新晃| 成都市| 都江堰市| 定南县| 定日县| 英德市| 买车| 盐城市| 白水县| 虞城县| 读书| 天柱县|