MIGO ET COMPLEXITE1 ARBRES EQUILIBRES Définition : On dit qu’un arbre binaire est H équilibré si en tout nœud de l’arbre, les hauteurs des sous-arbres.

Slides:



Advertisements
Présentations similaires
Structures de données avancées : Principales structures de données
Advertisements


Chapitre 3 Les arbres binaires
Tests et Validation du logiciel
Algorithmes et structures de données avancées Cours 4
Algorithmes et structures de données avancées Cours 6 Patrick Reuter
Sayada le 03 Mars 2009 Réalisé par : Mr. SOUISSI Chaouki
Chapitre 3 (fin). Les arbres AVL
Cours 8 Arbres équilibrés
La structure conditionnelle simple
Cours d’Algorithmique
LOGO Responsable du cours Mlle Amina GHRAB : 1 ère année IAG Institut Supérieur de Gestion de Tunis.
Les dates Recherche d’un algorithme pour déterminer si une année est bissextile ou non.
Les structures de données arborescentes
Arbre binaire de recherche
Les algorithmes: complexité et notation asymptotique
IFT-2000: Structures de Données
Chapitre VII. Tri Tri par tas Tri rapide.
RECURSIVITE ARBRES BINAIRES
Arbre Rouge Noir.
TD4 2 MIC Romaric GUILLERM Algo-Prog en Ada.
Module 4 : Parcours dans un graphe
Arbres Un arbre est une structure de données organisées de façon hiérarchique, à partir d’un nœud distingué appelé racine. Très importante en informatique!.
© 2007 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 Sémantique Formelle Peter Van Roy Département dIngénierie Informatique, UCL
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
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
IFT Structures de données
Les arbres binaires.
Arbres binaires complets
Partie II Sémantique.
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)
Introduction à Linda Béat Hirsbrunner References Nicholas Carriero, David Gelernter : "Linda in context", Communications of ACM, vol. 32 (n° 4, April 1989)
Algorithmique et structures de données en C
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.
201 UMLV  Type « dictionnaire » sous-ensembles finis de E (ordonné) avec les opérations : Ens_vide :  Ens Ajouter : Ens x Elément  Ens Enlever.
23/03/05SE Info2 - S. L'haire UNIGE1 TP 7 PROCEDURE Inserer(VAR a, crt : AgendaPtr; j, h : INTEGER; IN s : Chaine); VAR nouveau, temp : AgendaPtr; BEGIN.
Structures de données avancées : Arbres AVL & Arbres Rouge et Noir
Un exemple détaillé Pour chaque noeud on mettra 0 si ses deux sous-arbres ont la même hauteur +n si le sous-arbre gauche est plus profond avec une différence.
Arithmétique Modulaire
Structures de données avancées : Arbres Red-Black
Rappel sur les variables statiques Ce qui a été vu? variables de type simple (entier, réels, caractère, etc.)variables de type simple (entier, réels,
1 Algorithmique et programmation en Itérations (boucles) Types numériques simples (suite)
Algorithmes de tri et de recherche
Créer des packages.
Arbres binaires et tables de hachage
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Structures de données avancées : Arbres ‘Left Leaning Red-Black’
Structures de données avancées : Arbres AA
B.Shishedjiev - Modèle relationnel
Structures de données avancées : B arbres
Arbres AVL Arbres AVL.
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.
1 Cours 6 Définitions de nouvelles procédures Transmissions de données/résultats Déclarations globales/locales Visibilités Interface/implementation.
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.
Algorithmique Algorithmique  Pascal
Les monceaux (Heap) Monceaux Propriétés des Monceaux
CSI25101 Maps et Dictionnaries. CSI25102 Un dictionnaire (dictionary) est un modèle abstrait de base de données. tel une file à priorité, un dictionnaire.
Arbres AVL - Hauteur d’un arbre AVL - Insertion et restructuration
4/25/2017 4:30 PM Arbres (2,4) CSI2510 CSI2510.
Les arbres Arbres binaires
Aa. b b c a.
Transcription de la présentation:

MIGO ET COMPLEXITE1 ARBRES EQUILIBRES Définition : On dit qu’un arbre binaire est H équilibré si en tout nœud de l’arbre, les hauteurs des sous-arbres gauche et droit diffèrent au plus de 1. Exemple :

MIGO ET COMPLEXITE2 Fonction DESEQUILIBRE sur les arbres binaires Déséquilibre (Ø)= 0 Déséquilibre ( )= hauteur (G) – hauteur (D) Remarque : Un arbre T est H-équilibré si pour tout sous-arbre S de T on a : Déséquilibre (s)Є -1,0,1

MIGO ET COMPLEXITE3 Proposition Tout arbre H-équilibré ayant n nœuds a une hauteur h vérifiant : log 2 (n+1) ≤ h + 1 <1,44 log 2 (n+2) Preuve a)Arbre H-équilibré de hauteur h contenant le plus de nœuds ? Celui dont tous les niveaux sont complètement remplis Déséquilibre o en chaque nœud N max (h) : nombre de nœuds d’un tel arbre N max (h) = 1+2N max (h-1) N max (o) = 1

MIGO ET COMPLEXITE4 Nmax (h) = 2 h+1 – 1 Donc pour tout arbre H-équilibré ayant n nœuds et de hauteur h : n ≤ 2 h+1 – 1 n+1 ≤ 2 h+1 Log2 (n+1) ≤ h+1 b) Arbres H-équilibrés de hauteur h contenant le moins de nœuds ? ▪ si déséquilibre = -1 ou +1 dans tous les noeuds N min (h) : nombre de nœuds d’un tel arbre N min (o)=1, N min (1) = 2 N min (h) = 1+N min (h-1) + N min (h-2)

MIGO ET COMPLEXITE5 Soit F(h) = N min (h) + 1 On a : F(h) = F(h-1) + F (h-2) F(o)є = 2 ; F(1) = 3 Equation de récurrence de Fibonacci F (h) = r h F (h-1) = r h-1 ; F(h-2) = r h-2 r h = r h-1 + r h-2 r h-2 (-r 2 + r + 1) = 0 ≠ 0 r 2 -r-1=0 ∆ = = 5 r1 = 1+√5 = Ø, r2 = 1- √5 = Ø 2 2

MIGO ET COMPLEXITE6 La solution est de la forme F(h) = λ1 Ø h + λ 2 (Ø)h F(o) = 2 2 = λ1 + λ2 (1) F (1) = 3 3 = λ1 Ø + ג 2 Ø 3 = λ1 (1+√5) + λ2 (1-√5) = λ1 (1+√5) + λ2 (1-√5) 6 = λ1 + ג2 + √5 (λ1 - ג2 ) 6 = 2 + √5 (ג1 - ג2 ) 4 = ג1 - ג2 (2) (1)+ (2) : = 2 ג1 √5 λ1 = = √5 + 2 √5 √5

MIGO ET COMPLEXITE7 Ø = 1 + √5 2 Ø-1 = √5 2 λ1 = 2Ø-1+2 = 2Ø+1 2Ø-1 2Ø-1 λ2 = 2- ג1 = 2-(√5 + 2) Ø h + (√5 – 2) √5 √5 F(h)= 1 (√5 + 2) Ø h + (√5 – 2) Ø h √5

MIGO ET COMPLEXITE8 F (h) = 1 (Ø h+3 – Ø h+3 ) √5 N min (h)+1 = 1 ( Ø h+3 – Ø h+3 ) √5 Donc pour tout arbre H-équilibré à n noeuds et de hauteur h N+1 >1 ( Ø h+3 – Ø h+3 ) √5 Or : -1 <Ø h+3 = (1- √5 ) h+3 <1 2 n+1>1 (Ø h+3 – 1) √5 1+ √5(n+1) ≥ Ø h+3 Log Ø 1+√5(n+1) ≥ h+3 Log Ø √5(n+2) ≥ h+3

MIGO ET COMPLEXITE9 Log Ø (x) = (log 2 (Ø)) -1 log 2 (Ø) h+3 < log Ø ( √5) + log Ø (n+2) < log 2 (n+2) log 2 (Ø) Remarque : √5 < Ø 2 = (1+√5) 2 2 log Ø (√5) < log Ø (Ø 2 ) < 2 1 ~1,44 Log2 Ø h+1 < 1,44 log2 (n+2)

MIGO ET COMPLEXITE10 Arbres AVL Adelson – Velskii – Landis Définition Un AVL est un arbre binaire de recherche H-équilibré Equilibrage ? Rotations  Rotation droite, rotation gauche A = q p p q u w v u vw rd (A) rz (A) A, u, v, w : arbres binaires de recherche

MIGO ET COMPLEXITE11  Rotation gauche-droite A = r p q r T q p T w rgd (A) A, T, u, v, w : arbres binaires de recherche uv w uy Remarque : rotation gauche-droite = la composée d’une rotation gauche sur le sous-arbre gauche de A suivie d’une rotation droite sur A

MIGO ET COMPLEXITE12 Function RD (A : ARBRE) : ARBRE ; Var Aux : ARBRE ; Begin Aux : = A.g ; A.g : = Aux.d ; Aux.d = A ; RD : = Aux end RD ; Function RGD (A : ARBRE) : ARBRE ; Begin A.g : = RG (A.g) ; RGD : = RD (A) end RGD ;

MIGO ET COMPLEXITE13 Adjonction dans un AVL et rééquilibrages 12 Exemple : 12, 3, 2, 5, 4, 7, 9, 11, 14, 10 E 1 :E 2 : 12 3 E 3 : rd E 4 : E 5 : rd

MIGO ET COMPLEXITE14 E 6 : rg 4 2 E 7 : rgd E 8 et E 9 :

MIGO ET COMPLEXITE rgd Principe général Soit T= un AVL Supposons que l’adjonction de l’élément x ait lieu sur une feuille de G et qu’elle fasse augmenter de 1 la hauteur de G et que G reste un AVL 1)Si le déséquilibrage de T valait 0 avant l’adjonction, il vaut 1 après. T reste un AVL et sa hauteur a augmenté de 1

MIGO ET COMPLEXITE16 2) Si le déséquilibrage de T valait -1 avant l’adjonction, il vaut 0 après. T reste un AVL et sa hauteur n’est pas modifiée 3) Si le déséquilibre de T valait +1 avant l’adjonction, il vaut +2 après. T n’est plus H-équilibré il faut le restructurer en AVL adj dans sous-arbre 2 cas possibles gauche de G adj dans sous-arbre droit de G

MIGO ET COMPLEXITE17 b a.. rd a..... b... a.. b... c rgd.. a c b

MIGO ET COMPLEXITE18 ALGORITHME D’ADJONCTION DANS UN AVL Ajoutavl : Arbre x Valeur Arbre ajoutavl (Ø,x) = x x ≤ r ajoutavl (, x) = rééquilibrage ( ) x>r ajoutavl (, x) = rééquilibrage ( ) Rééquilibrage :Arbre Arbre Déséquilibre : Arbre {-2,-1,0,1,2}

MIGO ET COMPLEXITE19 Déséquilibre (T)=0 (ou 1 ou -1)rééquilibrage (T) = T Déséquilibre (T)=+2 et Déséquilibre (g (T))=+1 rééquilibrage (T) = rd (T) Déséquilibre (T)=-2 et Déséquilibre (d (T))=-1 rééquilibrage (T)=rg (T) Déséquilibre (T)=+2 et Déséquilibre (g(T))=-1 rééquilibrage (T)=rgd (T) Déséquilibre (T)=-2 et Déséquilibre (d(T))=+1 rééquilibrage (T)= rdg (T) Implémentation type AVL = NŒUD ; NŒUD = record deseq : ; val : VALEUR ; g, d : AVL end ;

MIGO ET COMPLEXITE20 Procédure AJOUTAVL (var T : AVL ; x : VALEUR) ; Var Y, A, AA, PP : AVL ; { AA est le père de A ; PP père de P } begin { création du noeud à ajouter } new (Y) : Y.val : = x ; Y.deseq :=0 ; y.g=nil ; y.d : = nil ; if T = nil then T:=Y Else Begin { descente à la recherche de la feuille, en mémorisant le dernier noeud pointé par A dont le déséquilibre est + 1 } A : = T ; AA : = nil ; P : =T ; PP:= nil; while P <> nil do begin if P. deseq <> 0 then begin A : = P ; AA : = PP : P ; If x ≤P.val then P : = P.g else P:z P.d PP; end { adjonction } If x ≤ PP.val then PP.g : = Y else PP.d : = Y ; {modification du déséquilibre sur le chemin de A à Y}

MIGO ET COMPLEXITE21 P = A; while P <> Y do if x ≤ P.val then begin P.deseq : = P.deseq + 1 ; P : = P.g end else begin P.deseq : = P.deseq - 1 ; P : = P.d end ; { rééquilibrage } Case A.deseq of O, +1,-1 : return ; +2: Case A.g deseq of +1:begin A:=RD(A) ; A deseq :=0 ; A.d.deseq:=0 ; End ; -1:begin A:=RDG (A); Case A.deseq oF +1:begin A.g.deseq :=O ; A.d.deseq :=-1 end ; -1:begin A.g.deseq :=-1 ; A.d.deseq :=0 end ; 0:begin A.g.deseq :=O ; A.d.deseq :=0 end ; End ; A.deseq :=0; End ;

MIGO ET COMPLEXITE22 -2:{ cas symétrique du cas +2 }... End { fin du cas } If AA = mil then T:=A Else if A.val ≤AA.val then AA.g : = A else AA.d:=A End ; +2: Case A.g deseq of +1:begin A:=RD(A) ; A deseq :=0 ; A.d.deseq:=0 ; End ; { descente } End AJOUT VAL ;