Sobes.tech
Junior — Middle

Explique le principe de fonctionnement de l'algorithme de recherche de sous-chaînes de Knuth-Morris-Pratt.

sobes.tech IA

Réponse de l'IA

L’algorithme de Knuth-Morris-Pratt (KMP) est conçu pour rechercher une sous-chaîne dans une chaîne en temps linéaire, en évitant les comparaisons répétées de caractères.

L’idée principale est de calculer préalablement pour la sous-chaîne un tableau de fonctions de préfixe (ou « tableau π »), qui indique combien de caractères correspondent au début de la sous-chaîne lors d’une comparaison infructueuse. Cela permet, en cas de non-correspondance, de ne pas revenir au début de la chaîne d’origine, mais de décaler la sous-chaîne d’un nombre optimal de positions.

Exemple:

  • Texte : "ABABDABACDABABCABAB"
  • Recherche de la sous-chaîne : "ABABCABAB"

L’algorithme construit d’abord la fonction de préfixe pour la sous-chaîne, puis parcourt le texte en comparant les caractères. En cas de non-correspondance, il utilise la fonction de préfixe pour déterminer à partir de quel caractère de la sous-chaîne continuer la comparaison, sans repartir du début.

Cela garantit une complexité de O(n + m), où n est la longueur du texte, m la longueur de la sous-chaîne, ce qui est plus efficace que la recherche naïve.