BMH-algoritmissa ajatellaan, että on asetettu
:n suhteen
tietylle kohdalle. Kun halutaan tietää, täsmääkö
, vertailu
aloitetaan
:n loppupäästä ja edetään kohti
:n alkua. Jos vuorossa
oleva merkkipari ei täsmää, käytetään korjausfunktiota, jolla
siirtyy
askelta oikealle. Saadaan algoritmi, joka parhaassa
tapauksessa tutkii vain joka
:nnen merkin merkkijonossa
!
Korjausfunktio perustuu siihen tekstin merkkiin , joka
on
:n viimeisen merkin
kohdalla.
Mikäli hahmo ei täsmännyt, hahmoa
siirretään oikealle siten, että
:n viimeisen merkin kohdalla
olevan tekstin merkin
kohdalle tulee
:n lopusta lukien
ensimmäinen merkki, joka täsmää
:n kanssa, taikka koko
:n
pituuden verran, mikäli
ei sisällä merkkiä
. Olkoon
.
Tällöin siirron pituuduksi tulee
.
Koska siirron pituus riippuu ainoastaan merkistä , voidaan
tarvittavat siirrot tallentaa taulukkoon, jonka koko
on aakkoston koko
. BMH-algoritmia voidaan soveltaa myös
suuriin aakkostoihin pilkkomalla aakkoston merkit useammaksi pienemmän
aakkoston merkiksi.
BMH-algoritmi vaatii korjausfunktiotaulukolle tilan .
Algoritmin jeskimääräinen aikavaatimus on
ja pahimman tapauksen
aikavaatimus
.