What are the main differences between the Knuth-Morris-Pratt search algorithm and the Boyer-Moore search algorithm?
I know KMP searches for Y in X, trying to define a pattern in Y, and saves the pattern in a vector. I also know that BM works better for small words, like DNA (ACTG).
What are the main differences in how they work? Which one is faster? Which one is less computer-greedy? In which cases?
Moore’s UTexas webpage walks through both algorithms in a step-by-step fashion (he also provides various technical sources):
According to the man himself,
However, there have been some modifications of BM that have made small-alphabet searching viable.