Chercher dans un tas coûte
Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 11 — Arbres de recherche, tas et files de priorité
Énoncé
Le tableau de synthèse du chapitre porte la mention « impossible en mieux que » pour la recherche dans un tas. Le justifier.
Corrigé
L'argument tient en une observation : dans un tas minimum, le maximum est nécessairement une feuille. En effet, si un nœud interne portait le maximum, ses fils porteraient des valeurs supérieures ou égales, donc égales au maximum — et à valeurs distinctes, c'est impossible.
Or un arbre complet à nœuds a feuilles : ce sont exactement les indices à du tableau. Mesuré : donne feuilles aux indices à ; donne feuilles aux indices à .
Conclusion. Chacune de ces feuilles peut porter le maximum, et l'invariant de tas ne fournit aucune information pour les départager : il ne compare un nœud qu'à ses descendants, jamais deux nœuds incomparables. Un algorithme qui n'aurait pas examiné toutes les feuilles ne pourrait pas conclure — un adversaire placerait le maximum dans une feuille non examinée. Donc chercher le maximum coûte comparaisons, et a fortiori chercher une valeur quelconque aussi.
Ce que cela dit de la structure. Le tas répond à « quel est le minimum ? » en et ne sait rien dire d'autre. Son invariant est plus faible que celui de l'ABR : il n'ordonne pas les frères entre eux. Un invariant plus faible se maintient plus facilement — d'où l'insertion en sans rééquilibrage — et interdit d'autant plus d'usages. C'est le marché à lire avant de choisir sa structure, et le tableau du chapitre le résume.
Le seul élagage possible reste utile en pratique : cherchant dans un tas minimum, on n'explore pas un sous-arbre dont la racine dépasse . Cela ne change pas la borne — au pire tous les nœuds sont inférieurs à — mais rend la recherche rapide quand est petit.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.