"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Programme PHP pour l'algorithme Rabin-Karp pour la recherche de modèles

Programme PHP pour l'algorithme Rabin-Karp pour la recherche de modèles

Publié le 2024-09-02
Parcourir:462

PHP Program for Rabin-Karp Algorithm for Pattern Searching

Qu'est-ce que l'algorithme de Rabin-Karp ?

L'algorithme Rabin-Karp est un algorithme de correspondance de modèles de chaînes qui recherche efficacement les occurrences d'un modèle dans un texte plus grand. Il a été développé par Michael O. Rabin et Richard M. Karp en 1987.

L'algorithme utilise une technique de hachage pour comparer les valeurs de hachage du modèle et des sous-chaînes du texte. Cela fonctionne comme suit :

  • Calculez la valeur de hachage du motif et de la première fenêtre du texte.

  • Faites glisser le motif sur le texte une position à la fois et comparez les valeurs de hachage.

  • Si les valeurs de hachage correspondent, comparez les caractères du motif et la fenêtre actuelle du texte pour confirmer la correspondance.

  • S'il y a une correspondance, enregistrez la position/l'index de la correspondance.

  • Calculez la valeur de hachage pour la fenêtre suivante du texte à l'aide d'une fonction de hachage roulant.

  • Répétez les étapes 3 à 5 jusqu'à ce que toutes les positions du texte aient été vérifiées.

La fonction de hachage roulant met à jour efficacement la valeur de hachage pour chaque nouvelle fenêtre en soustrayant la contribution du premier caractère de la fenêtre précédente et en ajoutant la contribution du caractère suivant dans la nouvelle fenêtre. Cela permet d'éviter de recalculer la valeur de hachage à partir de zéro pour chaque fenêtre, ce qui rend l'algorithme plus efficace.

Programme PHP pour l'algorithme Rabin-Karp pour la recherche de modèles

";
      }

      // Calculate the hash value for the next window of text
      if ($i 

Sortir

Pattern found at index 1 
Pattern found at index 4
Pattern found at index 7
Pattern found at index 10
Pattern found at index 13

Explication du code

Le code PHP implémente l'algorithme Rabin-Karp pour la recherche de modèles. Il prend un modèle et un texte comme entrées et recherche les occurrences du modèle dans le texte. L'algorithme calcule les valeurs de hachage pour le modèle et la première fenêtre du texte. Il fait ensuite glisser le motif sur le texte, en comparant les valeurs de hachage de la fenêtre actuelle et le motif. Si les valeurs de hachage correspondent, il vérifie en outre les caractères un par un. Si une correspondance est trouvée, il imprime l'index où le modèle est trouvé. L'algorithme utilise une fonction de hachage glissant pour mettre à jour efficacement la valeur de hachage pour chaque fenêtre. Le code démontre l'utilisation de l'algorithme en recherchant le modèle « BC » dans le texte « ABCABCABCABCABC ».

Conclusion

En conclusion, le programme PHP implémente efficacement l'algorithme Rabin-Karp pour la recherche de modèles. En utilisant une fonction de hachage roulant et en comparant les valeurs de hachage, l'algorithme recherche efficacement les occurrences d'un modèle dans un texte plus grand. Le programme identifie correctement les indices où le modèle se trouve dans le texte et affiche les résultats. Avec une structure claire et des calculs de hachage appropriés, le programme démontre la fonctionnalité et l'utilité de l'algorithme Rabin-Karp pour la recherche de modèles en PHP.

Déclaration de sortie Cet article est reproduit sur : https://www.tutorialspoint.com/php-program-for-rabin-karp-algorithm-for-pattern-searching En cas d'infraction, veuillez contacter [email protected] pour le supprimer. .
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3