MathLvl
Question transversaleMathsNSIAlgorithmes et complexité

Pourquoi couper un problème en deux permet-il de le résoudre beaucoup plus vite ?

Le coût du tri fusion vérifie C(n) = 2C(n/2) + n et C(1) = 0. Pour n = 2^k, une récurrence donne C(n) = n log₂ n : 1 024 éléments demandent environ 10 240 opérations au lieu des 523 776 comparaisons du tri par sélection.

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'ai été frappé en NSI par l'idée du tri fusion : au lieu de trier une liste, on trie deux listes deux fois plus petites, puis on les fusionne. Cela semblait reporter le problème plutôt que le résoudre. Pourtant, ce tri est bien plus rapide. Je voulais comprendre pourquoi, et la réponse est une suite définie par récurrence que l'on peut résoudre exactement.

L'enjeu et les notions du programme

Traduire un algorithme récursif en une relation de récurrence, la résoudre et la démontrer par récurrence.

Mathématiques

  • Suites définies par récurrence (première)
  • Raisonnement par récurrence (terminale)
  • Logarithme en base 2, puissances (terminale)

Numérique et sciences informatiques

  • Méthode « diviser pour régner » (terminale)
  • Récursivité, tri fusion (terminale)

Le plan de l'exposé en 9,5 min

  1. 1. Introduction

    1 min

    La méthode « diviser pour régner » découpe un problème en sous-problèmes plus petits, les résout récursivement, puis combine les résultats. Problématique : comment calculer le coût d'une telle méthode, et pourquoi est-il si faible ?

  2. 2. Mathématiques : résoudre la récurrence

    4 min

    Notons C(n) le nombre d'opérations pour trier n éléments. Trier deux moitiés coûte 2C (n/2), les fusionner coûte au plus n. D'où C(n)=2C (n/2)+n et C(1)=0.

    On pose n=2^(k) et uₖ=C(2^(k)) : uₖ=2uₖ₋₁+2^(k). En divisant par 2^(k) : uₖ/2^(k)=uₖ₋₁/(2^(k-1))+1. La suite vₖ=uₖ/2^(k) est arithmétique de raison 1 et v₀=0, donc vₖ=k et uₖ=k 2^(k).

    Conclusion : C(n)=nlog₂ n. Démonstration par récurrence : vrai pour k=0 ; si uₖ₋₁=(k-1)2^(k-1), alors uₖ=2(k-1)2^(k-1)+2^(k)=k 2^(k).

    Pour n=1 024=2¹⁰ : C=10 240, contre 1024×1023/2=523 776 pour le tri par sélection, cinquante fois plus.

  3. 3. NSI : programmer la fusion

    3 min

    La fonction fusion parcourt deux listes triées avec deux indices et place à chaque étape le plus petit des deux éléments en tête : au plus n comparaisons. La fonction tri_fusion s'appelle elle-même sur les deux moitiés, avec pour cas de base une liste de longueur 0 ou 1.

    Le gain vient de ce que la fusion de deux listes triées est linéaire, alors que trier directement est quadratique. Le prix à payer est une mémoire supplémentaire pour les listes intermédiaires. La même méthode accélère la recherche dichotomique, l'exponentiation rapide ou la multiplication de grands nombres.

  4. 4. Conclusion

    1,5 min

    Couper en deux fonctionne parce que les sous-problèmes sont beaucoup moins chers que le problème entier et que la recombinaison est linéaire : la récurrence C(n)=2C(n/2)+n donne nlog₂n. J'ouvre sur les cas où le découpage ne paie pas, quand la recombinaison coûte trop cher.

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.

C(n)=2C (n/2)+n, C(1)=0 uₖ=C(2^(k))=2uₖ₋₁+2^(k)
vₖ=uₖ/2^(k)=vₖ₋₁+1 ⇒ uₖ=k 2^(k) ⇒ C(n)=nlog₂n

Conclusion : la réponse à la question

Le tri fusion se résume à une suite récurrente que l'on résout en la divisant par 2^(k) : son coût est nlog₂ n. Diviser pour régner transforme un coût quadratique en un coût presque linéaire.

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.

Calculez C(8) avec la récurrence.

C(2)=2, C(4)=2×2+4=8, C(8)=2×8+8=24=8×3.

Pourquoi la fusion coûte-t-elle au plus n comparaisons ?

Chaque comparaison place un élément dans le résultat ; il y en a n à placer.

Que se passe-t-il si n n'est pas une puissance de 2 ?

On coupe en deux parties de tailles voisines ; le coût reste de l'ordre de n log₂ n.

Pourquoi diviser par 2^k pour résoudre la récurrence ?

Cela transforme la relation en une suite arithmétique, dont on connaît le terme général.

Citez un autre algorithme « diviser pour régner ».

La recherche dichotomique : C(n) = C(n/2) + 1, d'où un coût en log₂ n.

Les pièges qui coûtent des points

  • Oublier le coût de la fusion dans la récurrence.
  • Confondre log₂ n niveaux et n niveaux.
  • Présenter la formule sans la démontrer.

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 →