MathLvl
Question transversaleMathsNSIAlgorithmes et complexité

Pourquoi trouver le plus court circuit passant par vingt villes est-il si difficile ?

Pour n villes, il y a (n − 1)!/2 circuits différents : 181 440 pour 10 villes, 6 × 10¹⁶ pour 20, soit près de deux ans à un milliard de circuits par seconde. On utilise des heuristiques, comme aller toujours au plus proche voisin, sans garantie d'optimalité.

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.

En regardant un livreur de colis enchaîner ses arrêts dans mon quartier, je me suis demandé comment son application choisissait l'ordre des livraisons. J'ai découvert le « problème du voyageur de commerce », simple à énoncer et pourtant non résolu efficacement. J'ai voulu comprendre pourquoi en comptant les circuits possibles.

L'enjeu et les notions du programme

Dénombrer les circuits par les permutations, comparer factorielle et exponentielle, et justifier le recours aux heuristiques.

Mathématiques

  • Permutations, factorielle (terminale)
  • Comparaison de croissances, ordres de grandeur (terminale)
  • Distances dans un repère (seconde)

Numérique et sciences informatiques

  • Graphes pondérés (terminale)
  • Algorithmes gloutons, heuristiques (première)

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

  1. 1. Introduction

    1 min

    Un voyageur doit visiter n villes une fois chacune et revenir à son point de départ, en parcourant la plus petite distance. Problématique : pourquoi ne peut-on pas simplement essayer tous les circuits ?

  2. 2. Mathématiques : compter les circuits

    4 min

    On fixe la ville de départ. Les n-1 autres peuvent être visitées dans (n-1)! ordres. Chaque circuit est compté deux fois (une fois dans chaque sens) : il y a ((n-1)!)/2 circuits distincts.

    Pour 5 villes : 4!/2=12. Pour 10 villes : 9!/2=181 440, instantané. Pour 20 villes : 19!/2≈6,1×10¹⁶ ; à 10⁹ circuits par seconde, environ 6×10⁷ secondes, près de deux ans. Pour 30 villes, plus de 10³⁰ circuits.

    La factorielle croît encore plus vite que l'exponentielle : n!/2ⁿ tend vers +∞, car à partir de n=4, on multiplie à chaque étape par un facteur (n+1)/2≥2.

  3. 3. NSI : des solutions approchées

    3 min

    On modélise par un graphe complet pondéré : sommets les villes, poids les distances. L'heuristique du plus proche voisin part d'une ville et va toujours à la ville non visitée la plus proche : environ n² opérations, mais le résultat peut être de 20 à 25 % plus long que l'optimum en moyenne.

    On l'améliore ensuite localement, par exemple en échangeant deux arêtes qui se croisent (méthode 2-opt) : un circuit qui se croise n'est jamais optimal. Les logiciels de tournées combinent ces méthodes et trouvent en pratique de très bonnes solutions pour des milliers d'arrêts, sans preuve qu'elles soient les meilleures.

  4. 4. Conclusion

    1,5 min

    Le voyageur de commerce est difficile parce que le nombre de circuits, ((n-1)!)/2, explose plus vite qu'une exponentielle. On se contente d'heuristiques rapides et de bonne qualité. J'ouvre sur l'algorithme de Dijkstra, qui résout vite un problème voisin : le plus court chemin entre deux villes.

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.

nombre de circuits =((n-1)!)/2 n=10: 181 440 n=20: ≈6,1×10¹⁶
6,1×10¹⁶/10⁹ s ≈1,9 an ((n+1)!)/2ⁿ⁺¹=n!/2ⁿ×(n+1)/2

Conclusion : la réponse à la question

Vingt villes suffisent à rendre l'énumération impraticable, car la factorielle dépasse toute exponentielle. L'informatique répond par des heuristiques, rapides et efficaces, mais sans garantie d'optimalité.

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 diviser par 2 ?

Parcourir un circuit dans un sens ou dans l'autre donne la même distance.

Combien de circuits pour 4 villes ? Énumérez-les.

3!/2=3 : ABCD, ABDC, ACBD (en partant de A, sens identifiés).

Pourquoi un circuit qui se croise n'est-il pas optimal ?

Par l'inégalité triangulaire, remplacer les deux segments qui se croisent par les deux autres côtés du quadrilatère raccourcit le trajet.

Quel est le coût de l'heuristique du plus proche voisin ?

À chaque étape, on cherche le minimum parmi les villes restantes : environ n²/2 comparaisons.

Le plus court chemin entre deux villes est-il aussi difficile ?

Non : l'algorithme de Dijkstra le trouve rapidement.

Les pièges qui coûtent des points

  • Oublier de fixer la ville de départ et compter n! circuits.
  • Croire qu'une heuristique donne toujours l'optimum.
  • Confondre le voyageur de commerce et le plus court chemin entre deux points.

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 →