字串匹配 Horpool演算法

2021-08-30 10:12:19 字數 755 閱讀 9053

1、對bm演算法進行簡化的演算法,對d3進行了一些小的修改。

2、對於每個搜尋視窗,該演算法將視窗內文字的最後乙個字元和模式串的最後乙個字元進行比較。如果相等,則需要乙個驗證過程,在搜尋視窗中從後向前對文字和模式串進行比較,直到完全相等或者在某個字元處不匹配。然後,無論匹配與否,根據搜尋視窗的最後乙個字元β在模式串中的下乙個出現位置將視窗向右移動。

3、**:

horspool(p=p1 p2 ....pm,t=t1 t2 ....tn)

preprocessing

for c∈σ do d[c]<-m

searching

pos<-0

while pos<=n-m do

j<-m

while j>0 and t(pos+j)=pj do j<-j-1

if j=0 then report an occurrence at pos+1

pos<-pos+d[t(pos+m)]

endof while

4、在序列agatacgatatatac中搜尋字串atata

1)m=5

d表為at *

21 5

2)表示視窗

a)[agta]cgatatatac=>d[a]=2

b)ag[atacg]atatatac=>g<>a,d[g]=5

c)agatacg[atata]tac=>d[a]=2

d)agatacgat[atata]c=>d[a]=2,移動後pos>n-m,搜尋過程結束

字串匹配 Horpool演算法

1 對bm演算法進行簡化的演算法,對d3進行了一些小的修改。2 對於每個搜尋視窗,該演算法將視窗內文字的最後乙個字元和模式串的最後乙個字元進行比較。如果相等,則需要乙個驗證過程,在搜尋視窗中從後向前對文字和模式串進行比較,直到完全相等或者在某個字元處不匹配。然後,無論匹配與否,根據搜尋視窗的最後乙個...

字串匹配演算法 字串匹配演算法總覽

字串匹配在文字處理裡非常重要,我們採用簡潔的python 把以下演算法一一實現並講解。樸素演算法 algorithm rabin karp 演算法 有限自動機演算法 finite automation knuth morris pratt 演算法 kmp algorithm boyer moore ...

字串匹配演算法

首先引用一下另一篇文章中對字串匹配的介紹 字串匹配指的是從文字中找出給定字串 稱為模式 的乙個或所有出現的位置。本文的演算法一律輸出全部的匹配位 置。模式串在 中用x m 來表示,文字用y n 來,而所有字串都構造自乙個有限集的字母表 其大小為 根 據先給出模式還是先給出文字,字串匹配分為兩類方法 ...