MathLvl
Question transversaleMathsNSIArbres et structures de données

Comment un hôpital ou un ordinateur peut-il toujours traiter en premier le cas le plus urgent, sans trier sans cesse ?

Un tas binaire range n éléments dans un tableau : les enfants de la case i sont en 2i + 1 et 2i + 2. Le plus urgent est toujours à la racine, et chaque insertion ou retrait ne coûte qu'environ log₂ n échanges : 20 pour un million d'éléments, au lieu de trier à chaque fois.

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.

Aux urgences, les patients ne passent pas dans l'ordre d'arrivée mais selon la gravité, et de nouveaux patients arrivent sans cesse. Je me suis demandé comment un logiciel gérerait cela efficacement. En NSI, j'ai découvert le tas binaire, une structure astucieuse où un arbre est caché dans un simple tableau, grâce à une numérotation qui rappelle l'écriture binaire.

L'enjeu et les notions du programme

Exploiter une numérotation des nœuds d'un arbre par des calculs d'indices et majorer le coût des opérations par la hauteur.

Mathématiques

  • Suites et relations entre indices (première)
  • Logarithme, partie entière (terminale)
  • Écriture binaire et puissances de 2 (seconde)

Numérique et sciences informatiques

  • Arbres binaires, structure de tas (terminale)
  • Tableaux, files de priorité (première, terminale)

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

  1. 1. Introduction

    1 min

    Une file de priorité doit permettre d'ajouter un élément et de retirer le plus prioritaire, rapidement, un grand nombre de fois. Trier toute la liste à chaque arrivée coûterait trop cher. Problématique : quelle structure fait mieux ?

  2. 2. Mathématiques : un arbre dans un tableau

    4 min

    Un tas est un arbre binaire complet (tous les niveaux pleins sauf peut-être le dernier, rempli de gauche à droite) où chaque parent est plus prioritaire que ses enfants. Le plus prioritaire est donc à la racine.

    On numérote les nœuds niveau par niveau à partir de 0. Les enfants du nœud i sont 2i+1 et 2i+2, son parent est lfloor(i-1)/2rfloor. Ces formules se démontrent : le niveau k occupe les indices 2^(k)-1 à 2^(k+1)-2, et le j-ième nœud d'un niveau a ses enfants en position 2j et 2j+1 du niveau suivant.

    Un arbre complet à n nœuds a une hauteur lfloorlog₂nrfloor. Pour un million d'éléments : 19 niveaux sous la racine. Insérer : on place l'élément à la fin et on le fait remonter en l'échangeant avec son parent tant qu'il est plus prioritaire : au plus 19 échanges. Retirer la racine : on la remplace par le dernier élément, qu'on fait descendre : au plus 19 étapes, chacune avec deux comparaisons.

  3. 3. NSI : usages

    3 min

    Le tas sert dans l'algorithme de Dijkstra (extraire le sommet le plus proche), dans les ordonnanceurs des systèmes d'exploitation (quel processus exécuter) et dans le tri par tas : on insère les n éléments puis on retire n fois la racine, soit environ 2nlog₂n opérations au pire, sans mémoire supplémentaire.

    En Python, le module heapq implémente un tas dans une liste. Comparaison de coût pour un million d'opérations sur une file d'un million d'éléments : avec un tas, environ 2×10⁷ étapes ; en triant à chaque fois, des milliards.

  4. 4. Conclusion

    1,5 min

    Le tas binaire garde toujours le plus urgent à la racine et ne coûte que la hauteur de l'arbre, environ log₂n, par opération. La numérotation 2i+1, 2i+2 range cet arbre dans un tableau sans pointeur. J'ouvre sur le tri par tas, qui en découle directement.

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.

enfants de i: 2i+1, 2i+2 parent : lfloor(i-1)/2rfloor
hauteur =lfloorlog₂nrfloor n=10⁶: 19 niveaux, donc au plus 19 échanges

Conclusion : la réponse à la question

Une file de priorité efficace n'a pas besoin d'être triée : il suffit que chaque parent l'emporte sur ses enfants. Le tas exploite la hauteur logarithmique d'un arbre complet et une numérotation simple.

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.

Quels sont les enfants du nœud d'indice 3 ?

Les indices 7 et 8.

Quel est le parent du nœud 10 ?

lfloor9/2rfloor=4.

Pourquoi la hauteur vaut-elle ⌊log₂ n⌋ ?

Un arbre complet de hauteur h a entre 2^(h) et 2^(h+1)-1 nœuds.

Un tas est-il trié ?

Non : seul l'ordre entre parents et enfants est garanti, pas entre frères ou cousins.

Avec une numérotation à partir de 1, que deviennent les formules ?

Enfants en 2i et 2i + 1, parent en ⌊i/2⌋ : c'est l'écriture binaire de i décalée d'un bit.

Les pièges qui coûtent des points

  • Confondre tas et arbre binaire de recherche.
  • Se tromper d'indices selon que l'on commence à 0 ou à 1.
  • Croire qu'il faut trier le tableau après chaque insertion.

Revoir les notions

Autres questions : arbres et structures de données

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 →