MathLvl
Question transversaleMathsNSIAlgorithmes et complexité

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. 1. Introduction

    1 min

    Chercher 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. 2. Mathématiques : compter les comparaisons

    4 min

    Mé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. 3. NSI : la table des sauts

    3 min

    Avant 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. 4. Conclusion

    1,5 min

    Un 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.

naïf, pire cas : (n-m+1) m≈5×10⁶ (n=10⁶, m=5)
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é

Toutes les questions maths-nsi →

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 →