Tas binaire

From Wikipedia, the free encyclopedia

Un tas-max.
Un tas-min.

En informatique, un tas binaire est une structure de données utilisée notamment pour implémenter une file de priorité car elle permet de retirer l’élément de priorité maximale (resp. minimale) d'un ensemble ou d’insérer un élément dans l'ensemble en temps logarithmique tout en conservant la structure du tas binaire[1]. On peut la représenter par un arbre binaire qui vérifie ces deux contraintes :

  • C'est un arbre binaire complet : tous les niveaux sauf le dernier doivent être totalement remplis et si le dernier ne l'est pas totalement, alors il doit être rempli de gauche à droite.
  • C'est un tas : l'étiquette, appelée également clé ou key, de chaque nœud, doit être, soit supérieure ou égale, soit inférieure ou égale aux étiquettes de chacun de ses fils. La signification de supérieur ou égal dépend de la relation d'ordre choisie.

Si la relation d'ordre choisie est "supérieure ou égale", on parle alors de tas-max (ou max-heap). Si la relation est "inférieure ou égale", on parle alors de tas-min (ou min-heap).

Le tas binaire a été introduit par J. W. J. Williams (en) en 1964, en tant que structure de données pour le tri en tas[2].

Implémentation

Un tas binaire est un arbre binaire parfait. On peut donc l'implémenter, de manière compacte, avec un tableau :

  • La racine se situe à l'index
  • Étant donné un nœud à l'index , son fils gauche est à l'index et son fils droit à
  • Étant donné un nœud à l'index , son père est à l'index (arrondi à l'entier inférieur).
Un tas binaire implémenté avec un tableau

Parfois, dans un souci d'efficacité, on ignore l'indice 0 et place la racine à l'indice 1. Ainsi les indices des fils d'un nœud à l'index sont et et l'indice du père est .

L'avantage est que le calcul de ces indices peut se faire simplement par des opérations logiques de décalage de bits, ce qui est plus efficace en pratique que des opérations arithmétiques.

Opérations

Références

Liens externes

Related Articles

Wikiwand AI