Le pire cas du naïf, compté exactement
Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 18 — Algorithmique des textes
Énoncé
Le chapitre affirme que la recherche naïve est en sur et . Donner le nombre exact de comparaisons de caractères, et le vérifier.
Corrigé
Le motif ne peut jamais être trouvé : le texte n'a pas de b. À chaque alignement , les premières comparaisons réussissent (a contre a) et la -ième échoue. Chaque alignement coûte donc exactement comparaisons, et il y a alignements :
Mesure (compteur incrémenté à chaque test t[i+j] == p[j]), avec :
n= 8 comparaisons = 20 (n-m+1)*m = 20
n= 9 comparaisons = 24 (n-m+1)*m = 24
n=10 comparaisons = 28 (n-m+1)*m = 28
n=11 comparaisons = 32 (n-m+1)*m = 32
n=12 comparaisons = 36 (n-m+1)*m = 36
Le maximum de est atteint en et vaut environ : le pire cas absolu est un motif de longueur la moitié du texte, et il coûte comparaisons.
Ce que le pire cas ne dit pas. Sur du français, le premier caractère comparé suffit à conclure dans plus de neuf alignements sur dix — mesuré à pour le motif motif et pour texte, sur le texte du banc d'essai, plus bas. Le coût moyen est alors , avec environ comparaison par alignement, soit sur vingt-six lettres équiprobables. Le pire cas de cet exercice demande un texte presque périodique : il se rencontre sur de l'adn, sur du binaire, sur des images — pas sur du texte. C'est pourquoi le chapitre écrit que la méthode naïve « survit dans bien des programmes » : la borne du pire cas ne suffit pas à condamner un algorithme, il faut savoir si son pire cas est celui de l'usage.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.