Les arbres et tas binomiaux

Slides:



Advertisements
Présentations similaires
La recherche de chemin optimal
Advertisements

Structures de données avancées : Principales structures de données
A l’issue des conseils de classe de 3ème,
Tris.
Portée des variables VBA & Excel
Classification et prédiction
Fonctions & procédures
Introduction à l’Algorithmique
Calculs de complexité d'algorithmes
Le Modèle Logique de Données
Chap. 1 Structures séquentielles : listes linéaires
Chapitre VI. Arbres (définition, parcours, représentation)
Initiation aux bases de données et à la programmation événementielle
Utilisation des tableaux
1 Théorie des Graphes Cycle Eulérien. 2 Rappels de définitions On dit qu'une chaîne est un chemin passant par toutes les arêtes du graphe. On dit qu'un.
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Développement d’applications web
Cours 8 Arbres équilibrés
ALGORITHMES RECURSIFS
Structures de données linéaires
LOGO Responsable du cours Mlle Amina GHRAB : 1 ère année IAG Institut Supérieur de Gestion de Tunis.
OCaml – Les arbres L3 MI.
Les structures de données arborescentes
Algorithmes Branch & Bound
IFT-2000: Structures de Données
Chapitre VII. Tri Tri par tas Tri rapide.
1.2 COMPOSANTES DES VECTEURS
Détection de co-évolution de gènes Master 2 : Informatique à Finalité Professionnelle et Recherche Unifiée (IFPRU) Parcours Ingénierie de lIntelligence.
Algorithme d’addition #1
Arbre Rouge Noir.
Les tris.
Gestion de Fichiers Arbres B.
Les fichiers indexés (Les B-arbres)
LA STRUCTURE D'ARBRE-B Institut National des Sciences Appliquées – Rouen Département Architecture des Systèmes d’Information.
LES ARBRES IUP 2 Génie Informatique
Algorithme de Bellman-Ford
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Ensembles Définition d’un ensemble. Opérations sur les ensembles. Accès, suppression et ajout d’éléments d’un ensemble. Fonctions permettant de manipuler.
Arbres Rouge noir Démo : INF3105 Structures de données et algorithmes
Structures de données IFT-2000
Courbes de Bézier.
Indexes à Arbres et Indexes à Hachage
Indexes à Arbres et Indexes à Hachage
1.1 LES VECTEURS GÉOMÉTRIQUES
1 Licence dinformatique Algorithmique des graphes Problèmes dordonnancement. Utilisation de ce document strictement réservée aux étudiants de l IFSIC dans.
Algorithmes d ’approximation
Les arbres binaires.
Arbres équilibrés Les transformation restructurantes dans leur ordre de définition: LL RR LR RL Facteur d’équilibre de noeud = (hauteur de s-arbre a gauche)
Les Algorithmes de Tri Introduction Tri par Sélection
Résoudre une équation du 1er degré à une inconnue
Programmation dynamique
Atelier de formation : MAT optimisation II (les graphes).
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Semaine 11 Gestion des arbres binaires de tri et de recherche. Les arbres cousus. Les arbres n-aires Département.
Programmation linéaire en nombres entiers : les méthodes de troncature
201 UMLV  Type « dictionnaire » sous-ensembles finis de E (ordonné) avec les opérations : Ens_vide :  Ens Ajouter : Ens x Elément  Ens Enlever.
Structures de données IFT-2000
LES PILES ET FILES.
Programmation linéaire en nombres entiers
Arbres binaires et tables de hachage
1 UMLV  FICHIERS Mémoire de masse découpée en blocs Fichier :liste chaînée de blocs, ou arbre de blocs (répertoires - fichiers)‏ Bloc d’éléments Bloc.
Structures de données IFT-2000
VI. Tri par tas.
Les monceaux (Heap) Monceaux Propriétés des Monceaux
Arbres AVL - Hauteur d’un arbre AVL - Insertion et restructuration
4/25/2017 4:30 PM Arbres (2,4) CSI2510 CSI2510.
CSI25101 Tri Plus efficace. CSI25102 Tri récursif Le tri récursif divise les données de grande taille en deux presque moitiés et est appelé récursivement.
. Le B-Arbre.
Chap. 3 Récursion et induction. Les définitions par récurrence consistent à construire des objets finis, à partir d'autres, selon certaines règles. Les.
Cycle, Cocycle, Arbre et Arborescence
Transcription de la présentation:

Les arbres et tas binomiaux

Arbres binomiaux Définition: Un arbre binomial est un arbre enraciné dans lequel les fils de chaque noeud sont ordonnés. Autrement dit, si un noeud a k fils, alors il existe un premier, deuxième, …etc fils Un arbre binomial est défini récursivement comme suit:

est constitué d’un noeud unique. est constitué de deux arbres binomiaux reliés entre eux de la manière suivante: La racine de l’un est le fils le plus à gauche de la racine de l’autre. L’illustration est comme suit:

Propriétés des arbres binomiaux Soit un arbre binomial. Le nombre de noeuds de est La hauteur de l’arbre est k. Il existe exactement noeuds à la profondeur i, i = 1,2, …, k. La racine a un degré k (supérieur au degré de tout autre noeud).

5. Si les fils de la racine sont numérotés de la gauche vers la droite par k-1, …1,0, alors le fils i est la racine de l’arbre . Lemme: Le degré maximum d’un noeud quelconque dans un arbre binomial à n noeuds est log n.

Preuve (par récurrence sur k): Pour chaque propriété, la base est l’arbre binaire Vérifier que chaque propriété est valide pour est trivial. Supposons que ce résultat soit vrai pour . Maintenant: L’arbre est constitué de deux copies de . Par conséquent,

l’arbre contient + = noeuds.

Tas binomiaux Définition: Un tas binomial T est un ensemble d’arbre binomiaux ayant les propriétés suivantes: Chaque arbre binomial de T est ordonné en min-tas (max-tas) Il existe dans T au plus un arbre binomial dont la racine possède un degré donné

Le seconde propriété implique qu’un tas binomial T à n noeuds est constitué d’au plus log n + 1 arbres bonomiaux. En effet, soit la représentation binaire de n c’est-à-dire

Comme le nombre de sommets d’un arbre binomial est , l’arbre binomial apparaît dans l’arbre T si, et seulement si, nous avons Exemple: pour n =13, nous avons bien binaire(13) = <1,1,0,1> Pour un arbre T binomial à 13 noeuds, il esr constitué des arbres binomiaux et

qui comportent, respectivement, 8, 4 et 1 noeuds. Un autre example 5 8 7 N=210=102 22 = 4 21 = 2 20 = 1 N=410=1002 22 = 4 21 = 2 20 = 1 4 9 4 9 8 5 8 7 N=310=112 22 = 4 21 = 2 20 = 1 N=510=1012 22 = 4 21 = 2 20 = 1

Comparaison des efficacités Opération pire cas (tas binaire) pire cas (tas binomial) création (1) (1) insertion (log n) (log n) minimum (1) (log n) suppression racine (log n) (log n) Union (n) (log n) diminuer clé (log n) (log n) supprimer un noeud (log n) (log n)

Représentation des tas binomiaux Chaque arbre binomial se trouvant à l’intérieur d’un tas binomial est stocké dans la représentation “fils gauche, frère droit” Chaque noeud x comporte: Une clé ou tout autre information utile à l’application en question. Un champ degre[x] représentant le nombre de fils de x.

3. Un pointeur p[x] sur son père 4. Un pointeur fils[x] sur son fils le plus à gauche 5. Un pointeur frere[x] sur le frère qui se trouve immédiatement à sa droite.

Les racines des arbres binomiaux, contenues dans un TAS binomial, sont organisées en liste chaînée, appelée liste des racines. Les degrés des racines augmentent strictement lorsqu’on parcourt la liste des racines. Si x est la racine d’un arbre binomial, frere[x] pointe sur la racine suivante dans la liste des racines. On accède un tas binomial T, par le champ head[T] qui est le pointeur sur le premier élément de la liste des racines du TAS binomial T.

Opérations sur les tas binomiaux Création d’un tas binomial Recherche du minimum Union de deux tas binomiaux Insertion d’une nouvelle valeur Suppresion de la racine Diminuer une clé. Suppresion d’un noeud

1. La création d’un nouveau tas binomial Pour se faire, on crée un objet H avec head[H]=null. Cette opération se fait bien entendu en (1).

2. Recherche du minimum (maximun) Puisqu’un TAS binomial est vant tout un tas, la clé minimum se trouve alors dans un noeud racine. Pour ce faire, nous cherchons donc le minimum parmi les élements qui sont atockés dans les racines, reliés à head de H. Il est clair que la complexité de cette recherche est O(log n), pour la simple raison qu’il faut recherche ce minimum parmi les log n racines qui sont reliées entre elles.

Procédure de base Avant de procéder aux autres opérations citées précédement, regardond de plus prés l’opération suivante: Lien binomial qui est l’opération de base des autres opérations. Cette opération consiste à fusionner deux tas binomiaux dont les racines ont le même degré. Soit donc un arbre Bk-1 de racine y et un autre arbre Ck-1 de racine z. Le noeud z devient la nouvelle racine d’un nouvelle Bk. On suppose ici que le noeud z est plus petit que le noeud y (min-tas). Mais s’il s’agit d’un max-tas, on prend le max comme illsutré par l’exemple suivant.

Fonction Lien binomial P[y] = z; le père de y est z. Fere[y] = fils[z] Fisl[z] = y degre[z] = degre[z]+1 Exemple:

Insertion d’un nouvel élément dans H L’algorithme est comme suit: Convertir l’élément à insérer en un tas binomial Mettre i = 0; Si H contient déjà un a. enlever de H b. appliquer la fonction lien binomial à et pour former c. mettre i à i+1; d. répéter l’étape 3. 4. Mettre comme dans H en mettant à jour le degré de sa racine

Illustration Soit un tas de 4 arbre binomiaux (de 23 éléments) auquel on veut insérér un autre.

i = 0: on enlève de H et on le lie avec pour former : i =1: enlever de H; ensuite lier à pour donner

i =2: enlever de H; ensuite lier à pour donner i = 3: H ne contient pas . Par conséquent, on va lier H avec . Le tas tas binomial H est constitué de deux arbres binomiaux; Il contient 24 noeuds.

séquence d’insertions et complexité amortie Insérer 10 insérer 20

Insérer 3

Insérer 8: pour ce faire, on enlève 3 de l’arbre; ensuite 3 et 8 sont liés entre eux; et finalement les deux tas binomiaux sont liés entre eux.

Insérer 30:

Insérer 15: pour ce faire, on enlève 30 de l’arbre; ensuite 30 et 15 sont liés entre eux; et finalement les deux tas binomiaux de dimension 2 et 4 sont liés entre eux.

Complexité amortie de cette suite d’insertions Supposons insertions à faire. Alors, il est facile de constater ce qui suit: Pour n/2 insertions, le tas binomial n’a pas de . Donc, on aura un seul lien à former. Pour n/4 insertions, le tas binomial a mais pas de . Autrement dit, on aura 2 liens à effectuer. Pour n/8 insertions, le tas binomial a et , mais pas de . Autrement dit, on aura 3 liens à faire.

En continuant de cette manière, on arrive à: Pour insertions, le tas binomial possède , , …., mais point de En additionnant les liens effectués, on obtient: Autrement dit, la complexité amortie d’une opération d’insertion est O(1).

Union (fusion) de deux TAS binomiaux Cette opération consiste à fusionner deux tas binomiaux, H1 et H2, en un tas binomial Resultat. Étape 0: Si aucun de H1 et H2 ne contient , alors ne rien faire Si seul H1 ou H1 contient , alors le mettre dans Resultat. Si H1 et H2 contienent tous les deux , alors on les lie entre eux pour former . Ensuite, on sauvegarde ce TAS pour l’étape suivante.

Étape i (i = 1,2,…., log n) Il peut y avoir de 0 à 3 : un de H1, un de H2 et un autre de l’étape précédente. S’il n’y a pas , ne rien faire. S’il n’ y a qu’un seul , le mettre dans le TAS Resultat Sinon, lier deux pour avoir et le sauvegarder pour l’étape suivante. 4. S’il reste encore un , le mettre dans Resultat S’il reste à la fin un de sauvegardé de la dernière étape, le mettre dans Resultat.

Il y a exactement log n étapes, chacune se fait en O(1) Il y a exactement log n étapes, chacune se fait en O(1). Par conséquent, l’algorithme s’exécute, dans le pire cas, en O(log n).

12 7 15 18 3 6 H1 H2 25 28 33 37 8 29 10 44 41 30 23 22 48 31 17 45 32 24 50 55

12 18 7 3 15 6 H1H2 25 37 28 33 8 29 10 44 41 30 23 22 48 31 17 45 32 24 50 55

12 7 3 15 6 H1H2 18 25 37 28 33 8 29 10 44 41 30 23 22 48 31 17 45 32 24 50 55

12 3 15 6 H1H2 18 7 37 28 33 8 29 10 44 25 41 30 23 22 48 31 17 45 32 24 50 55

12 3 6 H1H2 18 15 7 37 8 29 10 44 28 33 25 30 23 22 48 31 17 41 45 32 24 50 55

Suppression du maximum (minimum) Supprimer le Bi contenant le maximum (minimum) de H. Joindre les parties restantes de H en un nouvel arbre binomial H1 Supprimer la racine de Bi . Relier les sous-arbres binomiaux de la racine supprimée en un nouvel arbre binomial H2. Fusionner H1 et H2.

Complexité: L’étape 1 est clairement en O(1) L’étape 2 se calcule comme suit: Comme Bi possède i enfants, il y a i pointeurs. Bi contient 2i n noeuds, donc i  log n. Ce qui nous donne un pire cas de O(log n). L’étape 3 est clairement en O(log n) La complexité totale, dans le pire cas, est donc O(log n).

Exemple de suppression du minimum 12 15 6 18 28 33 8 29 10 44 41 30 23 22 48 31 17 45 32 24 50 55

12 15 6 18 28 33 8 29 10 44 41 30 23 22 48 31 17 45 32 24 50 55

12 15 44 10 29 8 18 28 33 17 48 31 30 23 22 41 50 45 32 24 55

44 12 10 15 29 8 18 17 28 33 48 31 30 23 22 41 50 45 32 24 55

44 10 15 29 8 12 17 28 33 48 31 30 23 22 18 41 50 45 32 24 55

44 10 15 8 12 17 29 28 33 30 23 22 18 48 31 41 45 32 24 50 55

44 10 8 12 17 15 30 23 22 18 29 28 33 45 32 24 48 31 41 55 50

Diminuer une clé donnée procedure DecreaseKey(BinomialHeap H, Node P, int Key): Parent  P.Parent while Parent  0 and P.Key < Parent.Key do P.Key  Parent.Key P.Data  Parent.Data P  Parent Parent  Parent.Parent

Diminuer une clé 44 10 8 12 17 15 30 23 22 18 29 28 33 45 32 24 48 31 41 55 10 50

44 10 8 12 17 15 30 23 22 18 29 28 33 45 32 24 48 31 41 55 10

44 10 8 12 17 15 30 23 22 18 29 28 33 45 32 24 10 31 41 55 48

44 10 8 12 17 15 30 23 22 18 10 28 33 45 32 24 29 31 41 55 48

44 10 8 12 17 10 30 23 22 18 15 28 33 45 32 24 29 31 41 55 48