Je suis coincé depuis un certain temps sur lequel est l'algorithme de recherche de chaînes le plus rapide, j'ai entendu de nombreuses opinions, mais à la fin je ne suis pas sûr.
J'ai entendu des gens dire que l'algorithme le plus rapide est Boyer-Moore et d'autres dire que Knuth-Morris-Pratt est en fait plus rapide.
J'ai recherché la complexité des deux mais ils se ressemblent pour la plupart O(n+m)
. J'ai trouvé que dans le pire des cas, Boyer-Moore a une O(nm)
complexité par rapport à Knuth-Morris-Pratt qui a O (m + 2 * n). Où n = longueur du texte et m = longueur du motif.
Pour autant que je sache, Boyer-Moore a un pire temps linéaire si j'utilisais la règle de Galil.
Ma question, Sur tout ce qui est en fait l'algorithme de recherche de chaîne le plus rapide (Cette question comprend tous les algorithmes de piqûre possibles, pas seulement Boyer-Moore et Knuth-Morris-Pratt).
Modifier: en raison de cette réponse
Ce que je recherche exactement, c'est:
Étant donné un texte T
et un motif, P
je dois trouver toutes les apparences de P
in T
.
De plus, la longueur de P et T est de [1,2 000 000]
et le programme doit s'exécuter sous 0,15 sec.
Je sais que KMP et Rabin-Karp suffisent pour obtenir un score de 100% sur le problème, mais moi, je voulais essayer d'implémenter Boyer-Moore. Laquelle serait la meilleure pour ce type de recherche de modèle?