La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "Françoise Greffier - IUP GMI - Besançon LES ARBRES IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier."— Transcription de la présentation:

1

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

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

4 Françoise Greffier - IUP GMI - Besançon EXEMPLES un graphe b an ir e z 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 : nœud racine b an ir e z

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

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

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

8 Françoise Greffier - IUP GMI - Besançon Arbres : définitions Un nœud sans fils est un nœud externe ou une feuille. Exemples : n,a,e b an ir e z : nœud racine 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, larbre est binaire.

9 Françoise Greffier - IUP GMI - Besançon Arbres : profondeur 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. b an ir e z : nœud Profondeur 0 Profondeur 1 Profondeur 2 Deux nœuds frères ont la même profondeur. N étant un nœud de larbre : - ou N est racine => niveau=0 - ou niveau (N)= niveau (père(N))+1

10 Françoise Greffier - IUP GMI - Besançon Arbres : hauteur La hauteur d un arbre est égale au niveau maximum de ses feuilles +1. b an ir e z : nœud 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 dun nœud dans un arbre binaire = hauteur (sous-arbre droit) - hauteur (sous-arbre gauche)

11 Françoise Greffier - IUP GMI - Besançon Arbres : facteur déquilibre b an ir e z 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 dun nœud dans un arbre de degré deux : hauteur (sous-arbre droit) - hauteur (sous- arbre gauche) 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

12 Françoise Greffier - IUP GMI - Besançon Arbre complet Un arbre complet est un arbre darité 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 = k h -1 / k-1 b an ir ez Un arbre complet Nombre de nœuds (taille) dans un arbre binaire complet : N = 2 H -1 Hauteur H d un arbre binaire complet ayant N nœuds : H = Log 2 (N)+1

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

14 Françoise Greffier - IUP GMI - Besançon Arbre binaire : définition 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) Définition récursive dun arbre binaire : Un arbre binaire est : - soit vide - soit (sous-arbre gauche, racine, sous-arbre droit) b an ir e t r y gauche f droit Un ABR est défini par : nœud* Ptr Un nœud est défini par : nœud* gauche; nœud* droit; X valeur;

15 Françoise Greffier - IUP GMI - Besançon Arbre binaire de recherche (ABR) Un arbre binaire de recherche (ABR) ordonne totalement les informations quil 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 Propriété caractéristique des ABR: Pour chaque nœud n de larbre : ( 1) n.arbreGauche.maxVal<=n.val

16 Françoise Greffier - IUP GMI - Besançon Arbre binaire de recherche Conditions La classe Valeur doit disposer dune 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 Remarque : Tout ajout se fait par une feuille O 45 gauche 48 droit 29 Exemple : ajouter la valeur 24 24

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

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

19 Françoise Greffier - IUP GMI - Besançon ABR : suppression 23 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 Troisième cas de nœud à supprimer O 45 gauche 48 droit O

20 Françoise Greffier - IUP GMI - Besançon Parcours dans un ABR template 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

21 Françoise Greffier - IUP GMI - Besançon 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 O 45 gauche 48 droit 29 Parcours dans un ABR

22 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 ABR {... bool rechercher (const X& E); // est retourné : vrai si E est dans ABR, faux sinon... }

23 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 sinon si (E retourner rechercher dans sous-arbre gauche sinon retourner rechercher dans sous-arbre droit fsi fsi 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

24 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 Log 2 (N), N étant le nombre de nœuds. Cependant, quand larbre 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.

25 Françoise Greffier - IUP GMI - Besançon 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. Arbre rouge et 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 quun autre. Ainsi, un arbre rouge et noir est un arbre binaire de recherche approximativement équilibré.

26 Françoise Greffier - IUP GMI - Besançon 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. Arbre rouge et noir : propriétés

27 Françoise Greffier - IUP GMI - Besançon On montre que dans un arbre rouge et noir comportant N nœuds, les opérations rechercher, minimum, maximum ont une complexité de lordre de Log 2 (N). 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 nest pas plus de deux fois plus long quun autre. Un arbre rouge et noir comportant N nœuds a une hauteur au plus égale à : 2 Log 2 (N+1). H <= 2 Log 2 (N+1).

28 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

29 Françoise Greffier - IUP GMI - Besançon Dans un arbre rouge et noir : L es 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. O n modifie ces chaînages par rotations. Arbre rouge et noir : insérer/sup

30 Françoise Greffier - IUP GMI - Besançon On insère un nœud 4 que l on colore au départ en rouge 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 x<- p[p[x]]//on itère le traitement … // traitement symétrique à droite Fin tant que couleur (racine) <- noir x Arbre rouge et noir : INSERER - cas 1 (père de x et oncle de x sont rouges)

31 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 x On fait une rotation pour amener la situation au cas 3 x <- p[x] // x =2 Rotation gauche (x) x x

32 Françoise Greffier - IUP GMI - Besançon Arbre rouge et noir : INSERER - cas 2 (x est fils droit et oncle droit noir) 7 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 x x 2 1 On fait une rotation pour amener la situation au cas 3 et nouveau x Cas 2 : frère du père de x est noir et x est un fils droit

33 Françoise Greffier - IUP GMI - Besançon Arbre rouge et noir : INSERER - cas 3 (x est un fils gauche et oncle droit noir) 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 x Cas 3 : frère du père de x est noir et x est un fils gauche On a bien un arbre rouge noir

34 Françoise Greffier - IUP GMI - Besançon ARBRE 2-3 Quand un ABR est déséquilibré : sil 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

35 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

36 Françoise Greffier - IUP GMI - Besançon Un arbre binaire de recherche (ABR) ordonne totalement les informations quil 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. ARBRE 2-3 : propriétés Représentation d une suite ordonnée dans un arbre 2-3 : L es nœuds internes ont pour valeur les clés l es feuilles ont pour valeur les éléments de la suite ordonnée

37 Françoise Greffier - IUP GMI - Besançon ARBRE 2-3 : exemple 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

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

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

40 Françoise Greffier - IUP GMI - Besançon ARBRE 2-3 : insertion - cas 2 Cas 2 : insérer x=10 La feuille x est un 4ème fils Lorsquon insère un 4ème fils dans un nœud N, alors on scinde N en deux x=10

41 Françoise Greffier - IUP GMI - Besançon ARBRE 2-3 : insertion - cas 2 Lorsquon 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) N N1

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


Télécharger ppt "Françoise Greffier - IUP GMI - Besançon LES ARBRES IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier."

Présentations similaires


Annonces Google