Structures de données avancées : Arbres ‘Left Leaning Red-Black’

Slides:



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

Structures de données avancées : Principales structures de fichiers
Structures de données avancées : B arbres
Structures de données avancées : Principales structures de données
Structures de données avancées : MBT ( Multidimensional B-trees )
Structures de données avancées : MTH ( Multidimensional trie hashing )
Structures de données avancées : Introduction
Traitement sémantique et grammaire dattributs Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)
Sémantique des déclarations pour le langage Z minimal
Portée des variables VBA & Excel
L’ interruption de boucle
Algorithme et structure de données
Cours 8 Arbres équilibrés
Structures collectives en Java
Cours d’Algorithmique
POO-L3 H. Fauconnier1 Chapitre IV 1. classe Object, clonage 2. interfaces 3. classes internes et imbriquées.
Expressions et assignations
IFT-2000: Structures de Données
RECURSIVITE ARBRES BINAIRES
Arbre Rouge Noir.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
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
/* */ /* **** btutil.c **** Contient les fonctions utilitaires du programme create_root() -- Obtient.
Présentation Structures de Données et TDA
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
Les arbres binaires.
Arbres binaires complets
Les arbres et tas binomiaux
Analyse lexicale Pr ZEGOUR DJAMEL EDDINE
Table des symboles Pr ZEGOUR DJAMEL EDDINE
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) Plate-forme.NET.
Exposé en structures de données
/* */ /*Mise en garde….. Notez bien: dans les exemples qui suivent, la clé d ’indexation est un.
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 Orienté Objet en C++ Ricard julien.
Le langage C Structures de données
Structures de données avancées : Arbres AVL & Arbres Rouge et Noir
Structures de données avancées : Hachage dynamique
Structures de données avancées : Arbres Red-Black
Structures de données avancées : Introduction
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
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.
Sémantique des expressions arithmétiques pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Tables de compilation pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Arbres binaires et tables de hachage
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Le langage Z minimal Pr ZEGOUR DJAMEL EDDINE
Structures de données avancées : Fichiers uni-dimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
L’analyse lexicale Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Structures de données avancées : Arbres AA
Structures de données avancées : Fichiers multidimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) zegour.esi.dz
Interprétation/Génération de code pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Expressions sur les chaînes de caractères Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Schéma de conception Factory Method Exemple Sylvain Giroux.
B.Shishedjiev - Modèle relationnel
Structures de données avancées : Variantes des 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.
Dictionnaire On veut une structure permettant d’insérer, d’enlever et de rechercher des enregistrements. Concepts importants: Clef de recherche: Décrit.
Structures de données IFT-2000
Les monceaux (Heap) Monceaux Propriétés des Monceaux
4/25/2017 4:30 PM Arbres (2,4) CSI2510 CSI2510.
. Le B-Arbre.
Transcription de la présentation:

Structures de données avancées : Arbres ‘Left Leaning Red-Black’ Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) http://zegour.esi.dz email: d_zegour@esi.dz

Left Leaning Red-Black Tree Motivation : code actuel difficile à maintenir et à réutiliser (100 à 200 lignes de code) Objectif : Réduire considérable du code ‘Left Leaning’ : éliminer les fils droits rouges Solution : Insertion Top down (version récursive) Ajouter 3 lignes de code à l’algorithme d’insertion dans un BST Ajouter 5 lignes de code pour supprimer le minimum (maximum) Ajouter 30 lignes de code pour l’opération de suppression Garder les opérations : Eclatement (Flipcolor), Rotation gauche ( Rotateleft )et rotation droite( Rotateright)

Left Leaning Red-Black Tree Rotation gauche Node rotateLeft(Node h) { x = h.right; h.right = x.left; x.left = h; x.color = h.color; h.color = RED; return x; } b a x h Rotation gauche a b x h Rotation droite Rotation droite Node rotateRight(Node h) { x = h.left; h.left= x.right; x.right= h; x.color = h.color; h.color = RED; return x; } b a h x a b h x x c a h b Eclatement/Fusion d’un 4-noeud c a x h b Eclatement/Fusion d’un 4-noeud void flipColors(Node h) { h.color = !h.color; h.left.color = !h.left.color; h.right.color = !h.right.color; }

Left Leaning Red-Black Tree public class LLRB<Key extends Comparable<Key>, Value> { private static final boolean RED = true; private static final boolean BLACK = false; private Node root; private class Node private Key key; private Value val; private Node left, right; private boolean color; Node(Key key, Value val) this.key = key; this.val = val; this.color = RED; } Boolean représente un champ à un bit Les nouveaux noeuds sont toujours Rouge Code Java pour implémenter les arbres LLRB ( Arbre de recherche binaire sans le code en bleu)

Left Leaning Red-Black Tree public Value search(Key key) { Node x = root; while (x != null) int cmp = key.compareTo(x.key); if (cmp == 0) return x.val; else if (cmp < 0) x = x.left; else if (cmp > 0) x = x.right; } return null;

Left Leaning Red-Black Tree public void insert(Key key, Value value) { root = insert(root, key, value); root.color = BLACK; } private Node insert(Node h, Key key, Value value) if (h == null) return new Node(key, value); if (isRed(h.left) && isRed(h.right)) colorFlip(h); int cmp = key.compareTo(h.key); if (cmp == 0) h.val = value; else if (cmp < 0) h.left = insert(h.left, key, value); else h.right = insert(h.right, key, value); if (isRed(h.right) && !isRed(h.left)) h = rotateLeft(h); if (isRed(h.left) && isRed(h.left.left)) h = rotateRight(h); return h; Déplacer cette ligne à la fin pour avoir un RB 2-3 tree Code Java pour implémenter les arbres LLRB ( Arbre de recherche binaire sans le code en bleu)

Left Leaning Red-Black Tree Généralisation : famille des arbres Red Black Algorithme d'insertion TOP DOWN (4 modes) RB 2-4 tree RB 2-3 tree LLRB 2-4 tree LLRB 2-3 tree Programmation Pascal Utilisation des opérations (Flipcolor, Rotateleft et Rotateright) Mode_arbre désigne les 4 modes Si Mode_arbre est différent des 4 modes, il s’agit d’un arbre de recherche binaire

Left Leaning Red-Black Tree procedure insert ( val : typequelconque; var A : Ptr_noeud); begin if A = nil then New(A); aff_info(A, val); aff_fg(A, nil); Aff_fd(A, nil); Aff_couleur(A, Rouge) end else // eclatemement pendant la descente if (mode_arbre = Mode_RB24) or (mode_arbre = Mode_LLRB24) if (couleur(fg(A))= rouge) and (couleur(fd(A))= rouge) then Flipcolors(A); if val= info(A) then aff_info(A, Val) if Val < info(A) then insert( val, A.fg) else insert( val, A.fd) ;

Left Leaning Red-Black Tree // Restructuration pendant la remontée if (mode_arbre = Mode_LLRB24) Or (mode_arbre = Mode_LLRB23) Then if (couleur(fd(A))= rouge) and (couleur(fg(A))= noir) then A := rotateLeft(A); if (mode_arbre = Mode_RB24) or (mode_arbre = Mode_RB23) then if (couleur(fg(A))= rouge) and (couleur(fd(fg(A)))= rouge) then A.Fg := rotateleft(fg(A)); if (couleur(fg(A))= rouge) and (couleur(fg(fg(A)))= rouge) then A := rotateRight(A); if (mode_arbre = Mode_RB24)or (mode_arbre = Mode_RB23) if (couleur(fd(A))= rouge) and (couleur(fg(fd(A)))= rouge) then A.fd := Rotateright(fd(A)); if (couleur(fd(A))= rouge) and (couleur(fd(fd(A)))= rouge) then A := rotateleft(A); if (mode_arbre = Mode_LLRB23) or (mode_arbre = Mode_RB23) if (couleur(fg(A))= rouge) and (couleur(fd(A))= rouge) then Flipcolors(A); end end;

Left Leaning Red-Black Tree Arbre RB 2-4 Propriétés de l'arbre RB Noir avec un fils gauche rouge =1 Noir avec un fils droit rouge =0 Noir avec deux fils rouges =1 Noir feuille =2 65 16 56 33 73 69 78 76 79

Left Leaning Red-Black Tree Arbre RB 2-3 Propriétés de l'arbre RB Noir avec un fils gauche rouge =1 Noir avec un fils droit rouge =1 Noir avec deux fils rouges =0 Noir feuille =4 65 16 56 33 73 69 78 76 79

Left Leaning Red-Black Tree Arbre LLRB 2-4 Propriétés de l'arbre RB Noir avec un fils gauche rouge =1 Noir avec un fils droit rouge =0 Noir avec deux fils rouges =1 Noir feuille =2 65 16 56 33 73 69 78 76 79

Left Leaning Red-Black Tree Arbre LLRB 2-3 Propriétés de l'arbre RB Noir avec un fils gauche rouge =2 Noir avec un fils droit rouge =0 Noir avec deux fils rouges =0 Noir feuille =4 65 16 56 33 78 73 69 76 79

Left Leaning Red-Black Tree Suppression pour les arbres LLRB 2-3 Basé sur l’approche inverse de l’algorithme d’insertion Top down d’un arbre 2-3-4 Pendant la recherche: entreprendre des rotations et les fusions (Flipcolors) des 4-noeuds pour s’assurer que la recherche ne s’arrete pas sur un 2-noeuds. De cette manière, il suffit de supprimer l’élément au niveau de la feuille. Utiliser ensuite la méthode Fixup Pour vérifier les propriétés LLRB Fixup if (isRed(h.right) && !isRed(h.left)) h = rotateLeft(h); if (isRed(h.left) && isRed(h.left.left)) h = rotateRight(h); if (isRed(h.left) && isRed(h.right)) colorFlip(h); Suppression pour les arbres LLRB 2-4 Exige une rotation suppléméntaire (voir technique ascendante pour les arbres 2-4)