Comment un logiciel trouve-t-il un mot dans un livre entier sans comparer chaque lettre ?
La recherche naïve d'un motif de m lettres dans un texte de n lettres fait jusqu'à (n − m + 1) × m comparaisons. L'algorithme de Boyer-Moore compare de droite à gauche et saute jusqu'à m positions à la fois : pour un motif de 5 lettres, il peut lire cinq fois moins de caractères.
Grand oral session 2027 : exposé de 10 minutes debout, puis 10 minutes d'échange, sans calculatrice. Plan prévu pour 9,5 min.
Pourquoi cette question : un modèle d'introduction
Le jury attend que vous expliquiez pourquoi vous avez choisi la question. Inspirez-vous de ce modèle, mais racontez votre propre parcours.
J'utilise tous les jours la fonction « rechercher » de mon traitement de texte et elle répond instantanément, même dans des documents de centaines de pages. En NSI, nous avons étudié l'algorithme de Boyer-Moore. J'ai trouvé contre-intuitif qu'on puisse chercher plus vite en lisant le motif à l'envers, et j'ai voulu mesurer ce gain.
L'enjeu et les notions du programme
Dénombrer les comparaisons d'un algorithme dans le pire et le meilleur cas, et comprendre comment un prétraitement accélère la recherche.
Mathématiques
- Dénombrement, produits (terminale)
- Probabilités, espérance d'un nombre de comparaisons (première)
- Majoration, ordres de grandeur (seconde)
Numérique et sciences informatiques
- Recherche textuelle, algorithme de Boyer-Moore (terminale)
- Coût d'un algorithme, prétraitement (terminale)
Le plan de l'exposé en 9,5 min
1. Introduction
1 minChercher un motif de m lettres dans un texte de n lettres est une opération omniprésente : moteurs de recherche, éditeurs, analyse de l'ADN. Problématique : combien de comparaisons faut-il, et peut-on éviter de tout lire ?
2. Mathématiques : compter les comparaisons
4 minMéthode naïve : on place le motif à chacune des n-m+1 positions et on compare lettre à lettre. Au pire (texte AAAA…A, motif AAAAB), on fait m comparaisons à chaque position : (n-m+1)m. Pour n=10⁶ et m=5, environ 5×10⁶.
En moyenne, sur un texte varié, la première comparaison échoue souvent : avec 26 lettres équiprobables, elle réussit avec une probabilité 1/26. Le nombre moyen de comparaisons par position est proche de 1+1/26+1/26²+…≈1,04 : la méthode naïve lit à peu près une fois chaque position.
Boyer-Moore compare le motif de droite à gauche. Si la lettre du texte en face de la dernière lettre du motif n'apparaît pas dans le motif, on peut décaler le motif de m positions d'un coup. Dans le meilleur cas, on ne lit qu'une lettre sur m : environ n/m=2×10⁵ comparaisons.
3. NSI : la table des sauts
3 minAvant la recherche, on construit une table qui donne, pour chaque lettre, sa dernière position dans le motif. Ce prétraitement coûte m opérations, négligeables. Pendant la recherche, en cas d'échec, la table indique de combien décaler le motif pour aligner la lettre lue avec son occurrence dans le motif.
Plus le motif est long et l'alphabet varié, plus les sauts sont grands : c'est l'un des rares algorithmes qui deviennent plus rapides quand le motif s'allonge. Sur l'ADN (4 lettres seulement), les sauts sont plus courts et l'on utilise d'autres méthodes.
4. Conclusion
1,5 minUn logiciel trouve un mot sans comparer chaque lettre grâce aux sauts de Boyer-Moore : au mieux, il ne lit qu'une lettre sur m. Le dénombrement des comparaisons montre l'intérêt d'un prétraitement. J'ouvre sur les index des moteurs de recherche, qui préparent le texte plutôt que le motif.
Ce que j'écris au tableau
Pas de calculatrice ni de support numérique : un calcul clé écrit au tableau rend l'exposé concret et montre la solidité des connaissances.
Boyer-Moore, meilleur cas : n/m=2×10⁵ moyenne naïve ≈1+1/26+1/26²+…≈1,04
Conclusion : la réponse à la question
Lire à l'envers et sauter permet de ne pas lire tout le texte. Le gain se mesure par un simple dénombrement des comparaisons, dans le pire et le meilleur cas.
Les questions probables du jury
Pendant les 10 minutesd'échange, le jury vous fait préciser et approfondir, sur tout le programme de vos spécialités en lien avec la question.
Pourquoi n − m + 1 positions ?
Le motif doit tenir entièrement dans le texte : sa première lettre va de la position 1 à n − m + 1.
Calculez la somme 1 + 1/26 + 1/26² + …
Série géométrique de raison 1/26 : 1/(1-1/26)=26/25=1,04.
Pourquoi comparer de droite à gauche ?
Une lettre du texte absente du motif, lue en face de sa dernière lettre, permet de sauter toute la longueur du motif.
Boyer-Moore est-il toujours plus rapide que la méthode naïve ?
Pas forcément sur des textes très répétitifs ou un petit alphabet ; il l'est en général sur un texte en langue naturelle.
Que coûte la construction de la table des sauts ?
Un parcours du motif : m opérations.
Les pièges qui coûtent des points
- Confondre le pire cas et le cas moyen.
- Oublier le coût du prétraitement (faible, mais réel).
- Croire que Boyer-Moore lit le texte de droite à gauche : c'est le motif qu'il compare à l'envers.
Revoir les notions
Autres questions : algorithmes et complexité
- Pourquoi trier un million de nombres peut-il prendre dix minutes ou un centième de seconde selon l'algorithme ?
- Pourquoi couper un problème en deux permet-il de le résoudre beaucoup plus vite ?
- Peut-on inventer un algorithme de tri encore plus rapide, ou existe-t-il une limite infranchissable ?
- Un ordinateur mille fois plus rapide permet-il de résoudre des problèmes mille fois plus grands ?
Préparer l'oral, pas seulement le contenu
Gestion des 20 minutes de préparation, usage du tableau, posture debout, réponses au jury : la méthode complète, conforme aux règles de la session 2027.
Méthode : traiter une question de Grand oral →