Estou preso há algum tempo no qual é o algoritmo de pesquisa de string mais rápido, ouvi muitas opiniões, mas no final não tenho certeza.
Ouvi algumas pessoas dizendo que o algoritmo mais rápido é Boyer-Moore e outras dizendo que Knuth-Morris-Pratt é realmente mais rápido.
Eu procurei pela complexidade de ambos, mas eles geralmente parecem iguais O(n+m)
. Descobri que, no pior cenário, Boyer-Moore tem uma O(nm)
complexidade em comparação com Knuth-Morris-Pratt, que possui O (m + 2 * n). Onde n = comprimento do texto em = comprimento do padrão.
Até onde eu sei, Boyer-Moore tem um pior caso linear se eu usasse a Regra de Galil.
Minha pergunta: Sobre tudo o que é realmente o algoritmo de busca de String mais rápido (Esta pergunta inclui todos os algoritmos de picada possíveis, não apenas Boyer-Moore e Knuth-Morris-Pratt).
Edit: Devido a esta resposta
O que estou procurando exatamente é:
Dado um texto T
e um padrão P
, tenho que encontrar todas as aparências de P
in T
.
Também o comprimento de P e T é de [1,2 000 000]
e o programa deve ser executado em 0,15 s.
Eu sei que o KMP e o Rabin-Karp são suficientes para obter uma pontuação de 100% no problema, mas eu queria tentar implementar o Boyer-Moore. Qual seria o melhor para esse tipo de pesquisa de padrões?