LES ARBRES IUP 2 Génie Informatique

Slides:



Advertisements
Présentations similaires
Structures de données avancées : MLH (Multidimensional linear hashing)
Advertisements

La recherche de chemin optimal
Structures de données avancées : B arbres
Structures de données avancées : Principales structures de données
Chapitre 3 Les arbres binaires
Algorithmes et structures de données avancées Cours 7
Algorithmes et structures de données avancées Cours 6 Patrick Reuter
Arbre-B+ Hypothèse initiale : clé simple et unique Nœud = bloc.
Introduction à l’Algorithmique
1 UMLV Optimalité des tris par comparaisons : O(n logn) Classements linéaires Tris lexicographiques Tri lexicographique.
Le Modèle Logique de Données
Chap. 1 INTRODUCTION Beaucoup de problèmes de la vie courante, tels la gestion de réseaux de communication ou l'ordonnancement de tâches, correspondent.
Leçon 3 : Héritage IUP 2 Génie Informatique
Chapitre VI. Arbres (définition, parcours, représentation)
Chapitre VIII. Introduction aux graphes
Cours 8 Arbres équilibrés
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
Arbre binaire de recherche
Chapitre VII. Tri Tri par tas Tri rapide.
Heuristiques A. Introduction B. Recherche d ’une branche
Leçon 6 : Structures de données dynamiques IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier.
Détection de co-évolution de gènes Master 2 : Informatique à Finalité Professionnelle et Recherche Unifiée (IFPRU) Parcours Ingénierie de lIntelligence.
Arbre Rouge Noir.
Théorie des graphes Un peu de vocabulaire.
Bases de données lexicales
Gestion de Fichiers Arbres B.
Les fichiers indexés (Les B-arbres)
Arbres Rouge noir Démo : INF3105 Structures de données et algorithmes
Structures de données IFT-2000
Structures de données IFT-10541
Structures de données IFT-2000
Coloration gap sommet identifiante de graphes
Algorithmes d ’approximation
Recherche Opérationnelle
Les arbres binaires.
Les arbres et tas binomiaux
Exposé en structures de données
IV. Arbres  Arbre binaire (AB) Représentation SDD d’un AB
Atelier de formation : MAT optimisation II (les graphes).
Structures de données IFT-2000
LES ARBRES Un arbre est une structure homogène dont chaque élément,
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.
Structures de données IFT-2000
Graphes 1. Introduction 2. Définition 3. Représentation mémoire
Structures de données avancées : Arbres Red-Black
Mathématiques Discrètes
Arbres binaires et tables de hachage
Structures de données avancées : Fichiers uni-dimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Structures de données avancées : Arbres AA
Problème de double digestion
Structures de données avancées : LH (Hachage linéaire) D. E ZEGOUR Institut National d ’Informatique.
Alignement de génomes. MUMmer (1999) Utilise l’arbre des suffixe. Basé sur le principe de « Maximum Unique Match » (MUM). Étant donné deux génomes A et.
Algorithmique et Conception Objet
B.Shishedjiev - Modèle relationnel
Structures de données avancées : B arbres
Structures de données avancées : Variantes des B arbres
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 avancées : Principales structures de fichiers
Structures de données avancées : Principales structures de données
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Semaine 10 Les algorithmes de recherche Les structures arborescentes Département d’informatique et de génie.
VI. Tri par tas.
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.
Raison d'être de la structure de fichiers : Les premiers travaux : Début des années 1960 : En 1963 : Près de 10 ans plus tard... (à peu près 1973) : Durant.
. Le B-Arbre.
Les arbres Arbres binaires
Chapitre 4 Equations différentielles ordinaires à n variables.
Transcription de la présentation:

LES ARBRES IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier Françoise Greffier - IUP GMI - Besançon

LES ARBRES Définitions et généralités sur les arbres Arbre binaire Arbre binaire de recherche (ABR) Arbre rouge noir Arbre 2-3 Françoise Greffier - IUP GMI - Besançon

EXEMPLES : nœud racine b a n i r e z b a n i r e z un graphe un arbre Un arbre est un graphe - non orienté - connexe : mise à part la racine de l ’arbre, tout nœud possède un père - acyclique : ne comporte pas de cycle Françoise Greffier - IUP GMI - Besançon

EXEMPLES arbre généalogique d ’une famille table des matières d ’un livre livre C1.2 C1 C2 C3 C1.1 C1.3 C3.2 C3.1 (livre(C1((C1.1),(C1.2),(C1.3))),(C2),(C3 ((C3.1),(C3.2)))) Arbre non vide :: (racine (fils1, fils2, …,filsN)) Françoise Greffier - IUP GMI - Besançon

Arbres : propriétés b a n i r e z : nœud racine Un arbre comprend un nombre fini de sommets (appelés aussi nœud). Un des nœuds de l’arbre est particulier il n ’a pas de père : c’est la racine de l’arbre Il existe un chemin unique entre la racine de l ’arbre et chaque sommet. Françoise Greffier - IUP GMI - Besançon

Arbres : définitions b a n i r e z : nœud racine i est le père de n et de a n est un descendant de i i est un ascendant de a Le sous-arbre de racine i est l’arbre composé des descendants de i, enraciné en i On appelle aussi ce sous-arbre : fils de b ==> algorithmes récursifs Françoise Greffier - IUP GMI - Besançon

Arbres : définitions b a n i r e z : nœud racine Un nœud sans fils est un nœud externe ou une feuille. Exemples : n,a,e Un nœud qui n ’est pas une feuille est un nœud interne. Exemples : b,i,r Le nombre de fils d ’un nœud x est appelé degré de x. Lorsque chaque nœud doit avoir au plus n fils (n fixé) alors l ’arbre est n-aire. Exemple : si n=2, l’arbre est binaire. Françoise Greffier - IUP GMI - Besançon

Arbres : profondeur b a n i r e z : nœud Deux nœuds frères ont la même profondeur. Profondeur 0 Profondeur 1 Profondeur 2 La profondeur ou niveau d ’un nœud est le nombre de liens sur l ’unique chemin qui conduit de la racine à ce nœud. N étant un nœud de l’arbre : - ou N est racine => niveau=0 - ou niveau (N)= niveau (père(N))+1 Françoise Greffier - IUP GMI - Besançon

Arbres : hauteur b a n i r e z : nœud La hauteur d ’un arbre est égale au niveau maximum de ses feuilles +1. Hauteur = 3 Un arbre est équilibré si pour tout nœud, la valeur absolue de son facteur d ’équilibre est inférieure ou égale à 1. Facteur d’équilibre d’un nœud dans un arbre binaire = hauteur (sous-arbre droit) - hauteur (sous-arbre gauche) Françoise Greffier - IUP GMI - Besançon

Arbres : facteur d’équilibre Hauteur = 3 Un arbre est équilibré si pour tout nœud, la valeur absolue de son facteur d ’équilibre est inférieure ou égale à 1. Facteur d ’équilibre d’un nœud dans un arbre de degré deux : hauteur (sous-arbre droit) - hauteur (sous-arbre gauche) b a n i r e z Un arbre est dégénéré si tous les nœuds de cet arbre ont au plus un descendant. Un arbre dégénéré est équivalent à une liste linéaire Françoise Greffier - IUP GMI - Besançon

Arbre complet b a n i r e z Un arbre complet Nombre de nœuds (taille) dans un arbre binaire complet : N = 2H-1 Hauteur H d ’un arbre binaire complet ayant N nœuds : H = Log2(N)+1 Un arbre complet est un arbre d’arité k pour lequel toutes les feuilles ont même profondeur (h) et tous les nœuds ont pour degré k. Exemple : k=2 et h = 3. => nombre de feuilles d ’un arbre complet = kh-1 / k-1 Françoise Greffier - IUP GMI - Besançon

Arbre binaire Dans un arbre binaire chaque nœud a un degré inférieur ou égal à deux. b a n i r e t y gauche f droit L ’information de position : gauche, droit caractérise un arbre binaire. (a-b)+4 (b-a)+4 + b a - 4 gauche droit + a b - 4 gauche droit == Françoise Greffier - IUP GMI - Besançon

Arbre binaire : définition Définition récursive d’un arbre binaire : Un arbre binaire est : - soit vide - soit (sous-arbre gauche, racine, sous-arbre droit) b a n i r e t y gauche f droit Un arbre binaire est un arbre dans lequel chaque nœud a un sous-arbre droit (fils droit) et un sous-arbre gauche (fils gauche). (Un sous-arbres peut-être éventuellement vide) Un ABR est défini par : nœud<X>* Ptr Un nœud est défini par : nœud<X>* gauche; nœud<X>* droit; X valeur; Françoise Greffier - IUP GMI - Besançon

Arbre binaire de recherche (ABR) Un arbre binaire de recherche (ABR) ordonne totalement les informations qu’il stocke(par clé) : Toutes les clés des valeurs inférieures ou égales à celle de la racine sont stockées dans le descendant gauche de la racine Toutes les clés des valeurs strictement supérieures à celle de la racine sont stockées dans le descendant droit de la racine 34 30 20 23 5O 45 gauche 48 droit 29 Propriété caractéristique des ABR: Pour chaque nœud n de l’arbre : (1) n.arbreGauche.maxVal<=n.val<n.arbreDroit.minVal Françoise Greffier - IUP GMI - Besançon

Arbre binaire de recherche 34 30 20 23 5O 45 gauche 48 droit 29 Conditions La classe Valeur doit disposer d’une fonction de comparaison sur les clés Tout ajout, toute suppression de nœud doit maintenir la propriété (1) vraie Exemple : ajouter la valeur 49 : 49 Exemple : ajouter la valeur 24 24 49 24 Remarque : Tout ajout se fait par une feuille. Françoise Greffier - IUP GMI - Besançon

ABR : suppression Analyse : l ’algorithme de suppression 34 30 20 23 5O 45 gauche 48 droit 29 Analyse : l ’algorithme de suppression d ’un nœud présente 3 cas : une feuille : trivial 48 34 30 20 23 5O 45 29 48 Françoise Greffier - IUP GMI - Besançon

ABR : suppression Deuxième cas de nœud à supprimer un nœud simple : 34 30 20 23 5O 45 gauche 48 droit 29 Deuxième cas de nœud à supprimer un nœud simple : on le remplace par son unique fils 50 50 34 30 20 23 48 29 45 Françoise Greffier - IUP GMI - Besançon

ABR : suppression Troisième cas de nœud à supprimer 34 30 20 23 5O 45 gauche 48 droit 29 Troisième cas de nœud à supprimer un nœud double : on lui donne la valeur minimale de son sous-arbre droit (ex: 29), et on supprime le nœud qui a cette valeur 23 23 34 30 20 45 48 29 5O Françoise Greffier - IUP GMI - Besançon

Parcours dans un ABR template <class X> class ABR { ... void infixe (void); // les valeurs de IC sont éditées par ordre // croissant sur les clés ... } si (non vide) alors infixe du sous-arbre gauche cout << valeur de la racine infixe du sous-arbre droit fsi Parcours infixé: Gauche Racine Droit Françoise Greffier - IUP GMI - Besançon

Parcours dans un ABR 3 types de parcours : infixés 34 30 20 23 5O 45 gauche 48 droit 29 3 types de parcours : infixés Gauche, Racine, Droite Droite, Racine, Gauche préfixé Racine, Gauche, Droite Racine, Droite, Gauche postfixés Gauche, Droite, Racine, Droite, Gauche, Racine Françoise Greffier - IUP GMI - Besançon

ABR et algorithmique Les arbres binaires de recherche présentent deux avantages : tri efficace car les valeurs sont maintenues ordonnées recherche efficace par dichotomie template <class X> class ABR { ... bool rechercher (const X& E); // est retourné : vrai si E est dans ABR, faux sinon ... } Françoise Greffier - IUP GMI - Besançon

ABR : recherche dichotomique bool rechercher (const X& E); // est retourné : vrai si E est dans ABR, faux sinon si vide => retourner faux sinon si (E = valeur racine) => retourner vrai si (E<valeur racine) => retourner rechercher dans sous-arbre gauche sinon retourner rechercher dans sous-arbre droit fsi Si N est le nombre de nœuds et si l ’ABR est équilibré alors la complexité de l ’algorithme de recherche dichotomique est de l ’ordre de Log 2 (N). Exemple : N=1024 => complexité ~ 10 Françoise Greffier - IUP GMI - Besançon

Conclusions ABR (algorithmique) Les arbres binaires de recherche sont des structures de données efficaces pour implanter des suites ordonnées dynamiques. Les opérations associées sont:RECHERCHER, MINIMUM,MAXIMUM, SUCCESSEUR, PREDECESSEUR , INSERER et SUPPRIMER . Pour un ABR complet, les opérations de base sur les arbres binaires de recherche ont une complexité de l ’ordre de Log2(N), N étant le nombre de nœuds. Cependant, quand l’arbre est dégénéré : s ’il se réduit par exemple à une liste linéaire chaînée alors les opérations ont une complexité de l ’ordre de (N). Pour garantir de bonnes performances, il existe une variante des ABR : les arbres rouge et noir. Françoise Greffier - IUP GMI - Besançon

Arbre rouge et noir Un arbre rouge et noir est un arbre binaire de recherche comprenant une donnée supplémentaire par nœud définissant sa couleur : rouge ou noir. En contrôlant les manières dont sont colorés les nœuds on garantit que tout chemin menant de la racine à une feuille n ’est pas plus de deux fois plus long qu’un autre. Ainsi, un arbre rouge et noir est un arbre binaire de recherche approximativement équilibré. Françoise Greffier - IUP GMI - Besançon

Arbre rouge et noir : propriétés Dans un arbre rouge et noir : Chaque nœud est soit rouge, soit noir Si un nœud est rouge alors ses deux nœuds fils sont noirs Chaque chemin reliant un nœud à une feuille descendante a le même nombre de nœuds noirs. 26 17 41 30 38 19 14 21 28 47 11 16 Françoise Greffier - IUP GMI - Besançon

Arbre rouge et noir : complexité En contrôlant les manières dont les nœuds sont colorés on garantit que tout chemin menant de la racine à une feuille n’est pas plus de deux fois plus long qu’un autre. Un arbre rouge et noir comportant N nœuds a une hauteur au plus égale à : 2 Log2(N+1). H <= 2 Log2(N+1). On montre que dans un arbre rouge et noir comportant N nœuds, les opérations rechercher, minimum, maximum ont une complexité de l’ordre de Log2(N). Françoise Greffier - IUP GMI - Besançon

Arbre rouge et noir : opérations Par rapport aux ABR, les opérations : RECHERCHER, MINIMUM, MAXIMUM, SUCCESSEUR et PREDECESSEUR sont inchangées dans un arbre rouge et noir Par rapport aux ABR, les opérations : INSERER et SUPPRIMER ne sont pas directement supportées dans un arbre rouge et noir Françoise Greffier - IUP GMI - Besançon

Arbre rouge et noir : insérer/sup Dans un arbre rouge et noir : Les opérations INSERER et SUPPRIMER modifient l ’arbre. Aussi, pour garantir les propriétés des arbres rouge et noir, il faut changer les couleurs de certains nœuds et changer aussi les chaînages par pointeurs. On modifie ces chaînages par rotations. Françoise Greffier - IUP GMI - Besançon

Arbre rouge et noir : INSERER - cas 1 (père de x et oncle de x sont rouges) 4 On insère un nœud 4 que l ’on colore au départ en rouge 11 2 14 5 1 7 8 15 Couleur (x) <- rouge Tant que (x<>racine) et (p[x] est rouge) faire si (p[x] = gauche p[p[x]]) alors y <- droit p[p[x]] si (couleur (y) = rouge) alors //cas 1 couleur (p[x] )<- noir couleur (y) <- noir couleur (p[p[x]] )<- rouge 5 7 8 4 x 5 8 Quand on insère un noeud on le colore tjrs en rouge au départ. HYPOTHESE : racine est noire (maintenue : dernière instrction) Arrêt : ou bien ce noeud est racine ou bien son père est noir Car si son père est rouge alors les ptés des ARN sur les couleurs ne sont plus respectées. Rqe : les autres ptés sont maintenues. tant que non arrêt : on applique le traitement T T : si père de x est à gauche de son g-père alors y = frère droit du père de x si y est rouge alors : père de x et son frère deviennent noir et le g-père rouge. x<- son grand père et on itère 4 7 x<- p[p[x]] //on itère le traitement … // traitement symétrique à droite Fin tant que couleur (racine) <- noir Françoise Greffier - IUP GMI - Besançon

Arbre rouge et noir : INSERER - cas 2 (x est fils droit et oncle droit noir) Couleur (x) <- rouge Tant que (x<>racine) et (p[x] est rouge) faire si (p[x] = gauche p[p[x]]) alors y <- droit p[p[x]] //oncle droit si (couleur (y) = rouge) alors // cas 1 (diapo précédente) sinon // cas 2 si (x=droit(p[x] )) alors 5 7 8 4 x 2 1 14 x 11 7 14 5 8 15 2 1 4 14 x x <- p[x] // x =2 2 Rotation gauche (x) On fait une rotation pour amener la situation au cas 3 Françoise Greffier - IUP GMI - Besançon

Arbre rouge et noir : INSERER - cas 2 (x est fils droit et oncle droit noir) Couleur (x) <- rouge Tant que (x<>racine) et (p[x] est rouge) faire si (p[x] = gauche p[p[x]]) alors y <- droit p[p[x]] //oncle droit si (couleur (y) = rouge) alors // cas 1 (avant dernière diapo) sinon // cas 2 si (x=droit(p[x] )) alors 5 7 8 4 x 2 1 11 7 14 5 8 15 2 1 4 7 x Cas 2 : frère du père de x est noir et x est un fils droit On fait une rotation pour amener la situation au cas 3 et nouveau x Françoise Greffier - IUP GMI - Besançon

Arbre rouge et noir : INSERER - cas 3 (x est un fils gauche et oncle droit noir) 11 7 14 5 8 15 2 1 4 11 Couleur (x) <- rouge Tant que ... faire ... sinon si (x=droit(p[x] )) alors // cas 2 ... Sinon // cas 3 couleur (p[x] ) <- noir couleur (p[p[x]]) <- rouge Rotation droite (p[p[x]])) fsi 7 x 11 7 14 5 8 15 2 1 4 Cas 3 : frère du père de x est noir et x est un fils gauche On a bien un arbre rouge noir Françoise Greffier - IUP GMI - Besançon

ARBRE 2-3 Quand un ABR est déséquilibré : s’il se réduit par exemple à une liste linéaire chaînée alors les opérations ont une complexité de l ’ordre de (N). Pour garantir de bonnes performances une deuxième variante des ABR est les arbres 2-3 Françoise Greffier - IUP GMI - Besançon

ARBRE 2-3 : propriétés Dans un arbre 2-3 : Chaque nœud interne a exactement 2 ou 3 fils Tout chemin de la racine à une feuille a une longueur fixe Françoise Greffier - IUP GMI - Besançon

ARBRE 2-3 : propriétés Un arbre binaire de recherche (ABR) ordonne totalement les informations qu’il stocke(par clé) : A gauche d ’un nœud : valeurs de clés inférieures ou égales à la clé du nœud. A droite : valeurs de clés supérieures strictement. Représentation d ’une suite ordonnée dans un arbre 2-3 : Les nœuds internes ont pour valeur les clés les feuilles ont pour valeur les éléments de la suite ordonnée Françoise Greffier - IUP GMI - Besançon

ARBRE 2-3 : exemple Relation d ’ordre R : 5 2 7 7 16 5 - 8 12 12 8 19 - 19 16 Relation d ’ordre R : a R b <=> clé(a) R clé(b) Représentation d ’une suite ordonnée dans un arbre 2-3 : Un nœud interne a pour valeur : la clé de l ’élément minimal du deuxième fils la clé de l ’élément minimal du troisième fils Feuille ont pour valeur les éléments de la suite Françoise Greffier - IUP GMI - Besançon

ARBRE 2-3 : complexité Un arbre 2-3 de profondeur k a un nombre de feuilles compris entre 2 k-1 et 3 k-1 La profondeur d ’un arbre 2-3 comprenant N éléments est comprise entre 1+Log 3 (N) et 1+Log 2 (N) Par rapport aux ABR, les opérations : RECHERCHER, MINIMUM, MAXIMUM, SUCCESSEUR et PREDECESSEUR sont triviales dans un arbre 2-3 Par rapport aux ABR, les opérations : INSERER et SUPPRIMER ne sont pas directement supportées dans un arbre 2-3 Françoise Greffier - IUP GMI - Besançon

ARBRE 2-3 : insertion - cas 1 5 2 7 7 16 5 - 8 12 12 8 19 - 19 16 Cas 1 : insérer x=18 Cas où le nœud père de x n ’a que deux feuilles. 5 2 7 7 16 5 - 8 12 12 8 18 19 18 16 19 Françoise Greffier - IUP GMI - Besançon

ARBRE 2-3 : insertion - cas 2 5 2 7 7 16 5 - 8 12 12 8 18 19 16 18 19 Cas 2 : insérer x=10 La feuille x est un 4ème fils x=10 Lorsqu’on insère un 4ème fils dans un nœud N , alors on scinde N en deux. 5 2 7 16 5 - 18 19 16 18 19 8 - 12 - 7 8 10 12 Françoise Greffier - IUP GMI - Besançon

ARBRE 2-3 : insertion - cas 2 5 2 7 7 16 5 - 8 - 8 18 19 16 18 19 10 12 - 12 N N1 Lorsqu’on insère un 4ème fils dans un nœud N alors on scinde N en deux, Les deux éléments les plus petits restent avec N Les deux plus grands ont pour père un nouveau nœud N1 N1 est inséré parmi les pères de N (on itère l ’insertion) Françoise Greffier - IUP GMI - Besançon

ARBRE 2-3 : insertion - cas 2 5 2 7 7 16 5 - 8 - 8 18 19 16 18 19 10 12 - 12 5 2 7 10 - 5 - 8 - 8 18 19 16 18 19 10 12 - 12 7 - 16 - (12 -) est un 4ème fils de (7 16). on scinde(7 16) en deux nœuds Nouvelle racine 10 Françoise Greffier - IUP GMI - Besançon