Tas binomial

Tas binomial

En informatique, un tas binomial est une structure de données assez proche du tas binaire, mais qui permet aussi de fusionner deux tas rapidement. Ainsi, il supporte les opérations suivantes, toutes en O(ln n):

  • Insérer un nouvel élément au tas
  • Trouver l'élément de plus petite clé
  • Effacer du tas l'élément de plus petite clé
  • Diminuer la clé d'un élément donné
  • Effacer un élément donné du tas
  • Fusionner deux tas en un seul

Le tas binomial est donc une implémentation du type abstrait tas fusionnable, ie une file à priorités permettant des opérations de fusion.

Sommaire

Notion d'arbre binomial

Un tas binomial est en fait un ensemble d'arbres binomiaux (à comparer avec un tas binaire, qui correspond à un unique arbre binaire). Un arbre binomial est défini récursivement comme suit:

  • L'arbre binomial d'ordre 0 est un simple nœud
  • L'arbre binomial d'ordre k possède une racine de degré k et ses fils sont racines d'arbre binomiaux d'ordre k-1, k-2, ..., 2, 1, 0 (dans cet ordre)

Un arbre binomial d'ordre k peut aussi être construit à partir de deux arbres d'ordre k-1 en faisant de l'un des deux le fils le plus à gauche de la racine de l'autre. Un arbre binomial d'ordre k possède 2k nœuds, et a pour taille k.

Des variantes d'arbres binomiaux sont aussi utilisées pour construire les tas de Fibonacci.

Structure des tas binomiaux

Un tas binomial est implémenté en tant qu'ensemble d'arbres binomiaux satisfaisant aux propriétés des tas binomiaux:

  • Chaque arbre binomial du tas possède une structure ordonnée en tas: la clé de chaque nœud est supérieure ou égale à celle de son parent.
  • Pour tout j entier naturel, il existe au plus un tas binomial d'ordre j.

La première propriété nous indique que la racine de chaque arbre binomial possède la plus petite clé de l'arbre. La seconde propriété implique qu'un tas binomial contenant n éléments consiste en au plus ln n + 1 arbres binomiaux.. En fait, le nombre et les ordres de ces arbres est déterminé de manière unique par le nombre n d'éléments: chaque tas binomial correspond au bit 1 dans l'écriture binaire du nombre n. Par exemple, 13 correspond à 1101 en binaire, 23 + 22 + 20, et donc le tas binomial à 13 éléments consistera en 3 arbres binomiaux d'ordres respectifs 3, 2 et 0 (cf. figure ci-dessous) Les racines des arbres binomiaux sont stockées dans une liste indicée par l'ordre des arbres.

Exemple de tas binomial
Exemple de tas binomial contenant des éléments de clés 1, 2, ..., 13. Le tas consiste en 3 arbres binomiaux d'ordre 0, 2, et 3.

Implémentation des opérations

L'opération de fusion de deux tas est sans doute la plus intéressante et est réutilisée dans la plupart des autres opérations. Les listes de racines des deux tas sont parcourues simultanément, de même que pour le tri fusion. Si seul un des deux tas contient un arbre d'ordre j, celui-ci est ajouté au tas fusionné. Si les deux tas contiennent un arbre d'ordre j, les deux arbres sont fusionnés en un arbre d'ordre j+1 en respectant la structure de tas (la plus grande des deux racines devient fille de la plus petite). Notez que l'on peut avoir besoin de fusionner cet arbre avec un arbre d'ordre j+1 présent dans un des deux tas initiaux. Durant l'algorithme, nous examinons au plus 3 arbres de chaque ordre (deux provenant des deux tas que nous fusionnons et un formé à partir de deux arbres plus petits). Or l'ordre maximal d'un arbre est ln n et donc la complexité de la fusion est en O(ln n).

Pour insérer un nouvel élément dans un tas on crée simplement un nouveau tas contenant uniquement cet élément que nous fusionnons ensuite avec le tas initial, et ce en O(ln n).

Pour trouver le plus petit élément du tas, nous avons seulement besoin de trouver le minimum parmi les racines des arbres binomiaux (au nombre maximal de ln n), ce qui ce fait une fois de plus en O(ln n).

Pour supprimer le plus petit élément du tas, on trouve tout d'abord cet élément pour l'enlever de son arbre binomial : on obtient alors une liste de ses sous-arbres, que l'on transforme en un autre tas binomial, ensuite fusionné au tas précédent.

Quand nous diminuons la clé d'un élément, elle peut devenir plus petite que celle de son père, violant l'ordre en tas de l'arbre. Dans ce cas, nous échangeons l'élément avec son père, voire avec son grand-père, et ainsi de suite jusqu'à ce que l'arbre soit de nouveau ordonné en tas. Chaque arbre binomial ayant pour taille maximale ln n, l'opération est en O(ln n).

Enfin pour supprimer un élément, on lui donne pour clé moins l'infini (plus petite que toutes les autres clés...) puis on supprime le plus petit élément du tas, c’est-à-dire lui-même.

Références

Voir aussi

Articles connexes

Lien externe

(en) Une simulation Java d'un tas binomial


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Tas binomial de Wikipédia en français (auteurs)

Игры ⚽ Нужна курсовая?

Regardez d'autres dictionnaires:

  • Tas de fibonacci — En informatique, un tas de Fibonacci est une structure de données similaire au tas binomial, mais avec un meilleur temps d exécution amorti. Les tas de Fibonacci ont été conçus par Michael L. Fredman et Robert E. Tarjan en 1984 et publiés pour la …   Wikipédia en Français

  • Tas (mathématique) — Tas (informatique) Pour les articles homonymes, voir Tas. Un exemple de tas En informatique, un tas, en anglais …   Wikipédia en Français

  • Tas binaire — Tas (informatique) Pour les articles homonymes, voir Tas. Un exemple de tas En informatique, un tas, en anglais …   Wikipédia en Français

  • Tas de Fibonacci — En informatique, un tas de Fibonacci est une structure de données similaire au tas binomial, mais avec un meilleur temps d exécution amorti. Les tas de Fibonacci ont été conçus par Michael L. Fredman et Robert E. Tarjan en 1984 et publiés pour la …   Wikipédia en Français

  • Tas (informatique) — Pour les articles homonymes, voir Tas. Un exemple de tas En informatique, un tas, en anglais heap, (ou plus précisémen …   Wikipédia en Français

  • Binomial — Binôme Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom …   Wikipédia en Français

  • Données struturées — Structure de données En informatique, une structure de données est une structure logique destinée à contenir des données, afin de leur donner une organisation permettant de simplifier leur traitement. Une structure de données implémente… …   Wikipédia en Français

  • Structuration des données — Structure de données En informatique, une structure de données est une structure logique destinée à contenir des données, afin de leur donner une organisation permettant de simplifier leur traitement. Une structure de données implémente… …   Wikipédia en Français

  • Structure de donnees — Structure de données En informatique, une structure de données est une structure logique destinée à contenir des données, afin de leur donner une organisation permettant de simplifier leur traitement. Une structure de données implémente… …   Wikipédia en Français

  • Structure de donnée — Structure de données En informatique, une structure de données est une structure logique destinée à contenir des données, afin de leur donner une organisation permettant de simplifier leur traitement. Une structure de données implémente… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”