The classic Boyer-Moore algorithm suffers from the phenomenon that it tends not to work so efficiently on small alphabets like DNA.
The skip distance tends to stop growing with the pattern length because substrings re-occur frequently.
By remembering more of what has already been matched, one can get larger skips through the text.
One can even arrange 'perfect memory' and thus look at each character at most once, whereas the Boyer-Moore algorithm, while linear, may inspect a character from the text multiple times.
1: http://stackoverflow.com/questions/12656160/what-are-the-mai...