Quelles sont les principales différences entre les Knuth-Morris-Pratt et de Boyer-Moore algorithmes de recherche?
Quelles sont les principales différences entre les Knuth-Morris-Pratt algorithme de recherche et de la Boyer-Moore algorithme de recherche?
Je sais KMP recherches de Y dans X, en essayant de définir un motif en Y, et enregistre le motif dans un vecteur. Je sais aussi que BM fonctionne mieux pour les petits mots, comme l'ADN (ACTG).
Quelles sont les principales différences dans la façon dont ils travaillent? Lequel est le plus rapide? Qui est moins de l'ordinateur-gourmand? Dans quels cas?
- BM fonctionne mieux sur les "naturels texte" au lieu de petits ensembles
Vous devez vous connecter pour publier un commentaire.
Moore UTexas page web promenades à travers les deux algorithmes en une étape-par-étape de la mode (il fournit également des techniques diverses sources):
Selon l'homme lui-même,
Cependant, il y a eu quelques les modifications de la BM qui ont fait de petit alphabet de la recherche viable.
Dans un rough explication
Boyer-Moore approche est d'essayer de faire correspondre le dernier caractère du modèle à la place du premier, avec l'hypothèse que si il n'y a pas de match à la fin, pas besoin d'essayer de correspondre à au début. Cela permet de "grands sauts" donc BM fonctionne mieux lorsque le motif et le texte que vous êtes à la recherche ressembler à "texte naturel" (c'est à dire l'anglais)
Knuth-Morris-Pratt recherche des occurrences d'un "mot" W à l'intérieur d'un principal "chaîne de texte" S en employant l'observation que lorsque un décalage se produit, le mot lui-même incarne suffisamment d'informations pour déterminer l'endroit où le prochain match pouvait commencer, contournant ainsi le ré-examen de déjà caractères correspondent. (Source: Wiki)
Cela signifie KMP est mieux adapté pour les petits ensembles comme l'ADN (ACTG)
Boyer-Moore technique correspondent aux caractères de droite à gauche, fonctionne bien sur des schémas.
knuth moris pratt correspondent aux caractères de gauche à droite, travaille vite à court de motifs.