Arbres AVL - Hauteur d’un arbre AVL - Insertion et restructuration

Slides:



Advertisements
Présentations similaires
Structures de données avancées : B arbres
Advertisements

Structures de données avancées : MBT ( Multidimensional B-trees )
Arbre-B+ Hypothèse initiale : clé simple et unique Nœud = bloc.
Cours d’Algorithmique
Chapitre 3 (fin). Les arbres AVL
Cours 8 Arbres équilibrés
Créer une animation simple Gif avec ImageReady.
Cours d’Algorithmique
LOGO Responsable du cours Mlle Amina GHRAB : 1 ère année IAG Institut Supérieur de Gestion de Tunis.
Les structures de données arborescentes
Arbre binaire de recherche
IFT-2000: Structures de Données
RECURSIVITE ARBRES BINAIRES
Arbre Rouge Noir.
Gestion de Fichiers Arbres B.
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!.
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-2000
Présentation Structures de Données et TDA
Gestion de Fichiers Indexes basés sur les structures d’arbres binaires et indexes à niveaux multiples.
Les arbres binaires.
Arbres binaires complets
Les arbres et tas binomiaux
1ère PARTIE.
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)
Gestion de Fichiers GF-12: Comment Gerer les Indexes qui ne tiennent pas en Memoire de Maniere Efficace?: I. Indexes Bases sur les Structures dArbres Binaires.
Exposé en structures de données
IV. Arbres  Arbre binaire (AB) Représentation SDD d’un AB
Les rotations Voici un autre exemple dajout. Celui-ci engendre un cas simple de déséquilibre, car larbre.
Structures de données IFT-2000
Structures de données IFT Abder Alikacem Semaine 10 Les arbres SPLAY Département dinformatique et de génie logiciel Édition septembre
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.
Isoler une variable Dans cette présentation, vous découvrirez les étapes à suivre pour isoler une variable dans une équation plus complexe mais ne contenant.
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.
Structures de données avancées : Arbres Red-Black
Mathématiques Discrètes
Programmation linéaire en nombres entiers
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.
Arbres binaires et tables de hachage
Structures de données avancées : MBT ( Multidimensional B-trees )
Structures de données avancées : Arbres AA
Les tris Tri Action de mettre une structure de données en ordre (croissant ou décroissant). Le plus simple est d’insérer en ordre. Les algorithmes de tri.
Structures de données avancées : LH (Hachage linéaire) D. E ZEGOUR Institut National d ’Informatique.
Algorithmique et Conception Objet
B.Shishedjiev - Modèle relationnel
Structures de données avancées : Variantes des B arbres
Arbres AVL Arbres AVL.
Ajouts et retraits dans un arbre de connexion Nicolas Thibault et Christian Laforest, Équipe OPAL Laboratoire IBISC (regroupement LaMI et LSC), Évry 8.
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 : Arbres B+ avec expansion partielle D. E ZEGOUR Institut National d ’Informatique.
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.
Files de priorité (Priority Queue)
Les monceaux (Heap) Monceaux Propriétés des Monceaux
Arbres Arbres Arbres binaires Propriétés des arbres binaires
CSI25101 Maps et Dictionnaries. CSI25102 Un dictionnaire (dictionary) est un modèle abstrait de base de données. tel une file à priorité, un dictionnaire.
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.
CSI2510 Structures de données et algorithmes Plus court chemin
Page: 1-Ali Walid Gestion de fichiers. B-Arbre +.
CSI2510 Structures de données et algorithmes Arbres couvrants minimaux
. Le B-Arbre.
Les arbres Arbres binaires
La compression de données
Transcription de la présentation:

Arbres AVL - Hauteur d’un arbre AVL - Insertion et restructuration - Suppression et restructuration - Complexité arbre AVL, nommé après les initiales de ses inventeurs: Adel’son-Vel’skii and Landis CSI2510

Arbre AVL Les arbres AVL sont équilibrés Un arbre AVL est un arbre de recherche binaire où, pour tout nœud interne v de T, la hauteur des enfants de v sont égales ou diffèrent de 1. Voici un exemple d’arbre AVL où les hauteurs sont indiquées près des nœuds CSI2510

Facteur de balancement Hauteur( droit ) – hauteur( gauche) {-1, 0, 1} pour an arbre AVL + 1 – 1 – 1 CSI2510

Hauteur d’un arbre AVL Proposition: La hauteur d’un arbre AVL T emmagasinant n clés est O(log n). Justification: l’approche la plus simple est d’essayer de trouver n(h): le nombre minimal de nœuds internes d’un arbre AVL de hauteur h Nous observons que n(1) = 1 et n(2) = 2 2 1 CSI2510

n(h): le nombre minimal de nœuds internes d’un arbre AVL de hauteur h Pour n ≥ 3, un arbre AVL de hauteur h avec n(h) contient au minimum le noeud racine, un sous-arbre AVL de hauteur n-1 et un autre de hauteur n-2. h h-2 h-1 Ainsi n(h) = 1 + n(h-1) + n(h-2) CSI2510

Hauteur d’un arbre AVL n(h) = 1 + n(h-1) + n(h-2) h-2 h-1 Sachant que n(h-1) ≥ n(h-2), nous obtenons n(h) ≥ 1+ n(h-2) +n(h-2) c'est-à-dire ≥ 2n(h-2) donc n(h) ≥ 2n(h-2) CSI2510

mais alors aussi : n(h-4) ≥ 2n(h-6) Maintenant nous savons: n(h) ≥ 2n(h-2) Donc à la hauteur h-2 nous avons: n(h-2) ≥ 2n(h-4) Ce qui nous permet d’écrire n(h) ≥ 4n(h-4) mais alors aussi : n(h-4) ≥ 2n(h-6) n(h) ≥ 8n(h-6) Et nous continuons: n(h) ≥ 2n(h-2) n(h) ≥ 4n(h-4) … n(h) ≥ 2in(h-2i) CSI2510

n(h) ≥ 2in(h-2i) avec n(1) = 1 n(2) = 2 h-2i = 2 pour i = h/2 - 1 n(h) ≥ 2h/2 - 1 n(2) log n ≥ log 2h/2 n(h) ≥ 2h/2 - 1 2 log n ≥ h/2 n ≥ n(h) ≥ 2h/2 h < 2 log n(h) où n est le nombre de nœud dans l’arbre donc h est O(log n) ! CSI2510

Insertion Un arbre de recherche binaire T est équilibré si, pour chaque nœud v, la hauteur des enfants de v est égale ou différentes de 1 niveau. L’insertion d’un nœud dans un arbre AVL implique une expansion de l’arbreT, ce qui peut changer les hauteurs de quelques-uns des nœuds de T. Si une insertion fait que T devient déséquilibré, nous devons faire une restructuration... CSI2510

Insertion Après l’insertion à droit Après l’insertion à gauche Avant – 1 + 1 A A A + 1 + 2 A A A rééquilibrer – 1 – 2 A A A CSI2510 rééquilibrer

Rééquilibrer après insertion Nous allons identifier 3 nœuds qui forment un triplet de grand parent, parent, et enfant et les 4 sous-arbres attachés. Nous réarrangerons ces éléments pour créer un nouvel arbre équilibré CSI2510

rééquilibrer Étape 1: Nous traversons l’arbre vers la racine à partir du nœud w qui vient d'être inséré jusqu'à ce que nous trouvons le premier nœud déséquilibré z. Soit y l’enfant de z ayant la plus grande hauteur, et x l’enfant de y ayant la plus grande hauteur. (x, y, z sont ancêtres du nœud inséré w) z z Exemples ….. y y x x CSI2510

rééquilibrer Étape 2: Ces nœuds ont 4 sous-arbres connectés à eux. Soient T0, T1, T2, T3 ces arbres nommés de gauche à droite Exemples ….. z z y y x x T3 T3 T0 T2 T0 T1 T2 T1 CSI2510

rééquilibrer Étape 3: Renommer les nœuds x, y, z avec a, b, c selon le parcours infixe. Par exemple, si y x z est l’ordre des ces nœuds dans le parcours infixe, alors soit y ‘a’, x ‘b’ et z ‘c’ Exemple c = z a=y b= x CSI2510

équilibre rétabli ! rééquilibrer Étape 4: Remplacer l’arbre enraciné à z avec l’arbre suivant: b a c T0 T1 T2 T3 équilibre rétabli ! CSI2510

Exemple c a b a c x z y T T T T z y x b 2 1 3 T T T T 44 17 62 32 50 78 y b 32 50 88 x 48 62 T 54 3 T T 2 T 1 b 44 x 17 a 62 z y c 32 50 78 48 54 88 T 2 T T T 1 3 CSI2510

Est-ce que ça fonctionne vraiment? Pour vérifier le résultat: Un arbre binaire de recherche: le parcours infixe du nouvel arbre fournit il l’ordre croissant des nœuds? Équilibré: avons-nous réparé le problème du déséquilibre ? CSI2510

AVL- rééquilibrage: rotation gauche L’arbre de racine z penche à droite et son sous arbre droit de racine y penche à droite; Fe(z)=2 et Fe(y)=1 => Rotation gauche de z a z y b y h z x c x T0 h+2 h h h h-1 h T1 h-1 h T0 T1 T2 T3 T2 T3 Parcours infixe: T0 z T1 y T2 x T3 CSI2510

AVL- rééquilibrage: rotation droite L’arbre de racine z penche à gauche et son sous arbre gauche de racine y penche à gauche; Fe(z)=-2 et Fe(y)=-1 => Rotation droite de z c z b y y h a x x z T3 h+2 h h h h -1 h h h-1 T2 T0 T1 T2 T3 T0 T1 Parcours infixe: T0 x T1 y T2 z T3 CSI2510

AVL- rééquilibrage: rotation double gauche-droite L’arbre de racine z penche à gauche et son sous arbre gauche de racine y penche à droite; Fe(z)=-2 et Fe(y)=1 => Rotation gauche-droite= rotation gauche de y suivie d’une rotation droite de z c z x a y y z b h h+2 x T3 h h-1 h h h h-1 h T0 T1 T2 T3 T0 T1 T2 Parcours infixe: T0 y T1 x T2 z T3 CSI2510

AVL- rééquilibrage: rotation double droite-gauche L’arbre de racine z penche à droite et son sous arbre gauche de racine y penche à gauche; Fe(z)=2 et Fe(y)=-1 => Rotation droite-gauche= rotation droite de y suivie d’une rotation gauche de z a z x y c y z h b h+2 x T0 h h-1 h h h T0 T1 T2 T3 T3 T1 T2 Parcours infixe: T0 z T1 x T2 y T3 CSI2510

Rééquilibrer un AVL après insertion En partant du nœud inséré w, considérons le premier sous-arbre S de l’AVL déséquilibré suite à l’insertion de ce nouveau nœud Le déséquilibre de S est causée par l’insertion de w qui a augmenté de 1 la hauteur d’un sous-arbre de S. Or la hauteur de S est elle-même incrémentée du coup ce qui peut entrainer le déséquilibre global de l’AVL Le rééquilibrage de S rétablit son équilibre local et réduit sa taille de 1 et du coup S retrouve sa hauteur initiale (avant insertion de w). Ainsi on rétablit en conséquent l’équilibre global de l’AVL Un seul rééquilibrage est donc suffisant après l’insertion d’un nouveau nœud dans un arbre AVL. CSI2510

Insertion AVL T’= insert(x,T) { if (T.vide()) T= new noeud(x); else { else if (x<T.element) { T.gauche= insert(x,T.gauche); if (T.desequilibre()) { if (x<T.gauche.element) T=rotationDroite(T); else T=rotationGaucheDroite(T); } else { T.droite= insert(x,T.droite); if (T.desequilibre()) { if (x>T.droite.element) T=rotationGauche(T); else T=rotationDroiteGauche(T); } return T; CSI2510

Suppression dans un AVL Nous pouvons constater facilement que le retrait d’un noeud peut causer un déséquilibre dans un AVL T Soit z le premier nœud déséquilibré rencontré en traversant l’arbre vers la racine à partir de w (ou du nœud qui s’est subsititué à w dans le cas d’un retrait général). Soit y l’enfant de z ayant la plus grande hauteur, et x l’enfant de y ayant la plus grande hauteur. (y et x ne sont pas ancêtres de w) Nous pouvons appliquer la même stratégie de restructuration = restructure(x) pour rééquilibrer le sous-arbre enraciné à z Cette restructuration réduit de 1 la hauteur du sous-arbre initialement enraciné à z et ainsi pourrait déséquilibrer un autre nœud plus haut dans l’arbre. Alors, nous devons continuer à vérifier l’équilibre jusqu’à ce que la racine de T soit atteinte. Donc on peut faire jusqu’à O(log n) rotations lors d’un retrait CSI2510

Suppression (suite) Le choix de x n’est pas unique !!! a b c z a 88 44 17 78 32 50 48 62 1 4 2 3 54 T b y c x Déséquilibré! T 2 T 1 3 Équilibré de nouveau! CSI2510

Suppression (suite) Nous pourrions choisir un différent x: a c b b a c Déséquilibré! b a c Équilibré de nouveau! CSI2510

COMPLEXITÉ Le ré-équilibrage d’un arbre AVL est une opération locale à un sous-arbre Le nombre d’opérations à effectuer est constant peut importe la hauteur du sous-arbre Rechercher: findElement(k): Insertion: insertItem(k, o): Suppression: removeElement(k): O(log n) CSI2510