4/25/2017 4:30 PM Arbres (2,4) 9 2 5 7 10 14 CSI2510 CSI2510.

Slides:



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

Structures de données avancées : MTH ( Multidimensional trie hashing )
Cours d’Algorithmique
Chapitre VI. Arbres (définition, parcours, représentation)
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
Cours 8 Arbres équilibrés
Cours d’Algorithmique
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
IFT-2000: Structures de Données
Chapitre VII. Tri Tri par tas Tri rapide.
RECURSIVITE ARBRES BINAIRES
Arbre Rouge Noir.
Gestion de Fichiers Arbres B.
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
Indexes à Arbres et Indexes à Hachage
Indexes à Arbres et Indexes à Hachage
Les arbres binaires.
Arbres binaires complets
Les arbres et tas binomiaux
Exposé en structures de données
IV. Arbres  Arbre binaire (AB) Représentation SDD d’un AB
Algorithmique et structures de données en C
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.
Transformer pour régner
Structures de données IFT-2000
Structures de données avancées : Arbres Red-Black
Gestion de Fichiers GF-12: Comment Gerer les Indexes qui ne tiennent pas en Memoire de Maniere Efficace?: II. Arbres B (Base sur les Sections de.
Mathématiques Discrètes
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
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 ‘Left Leaning Red-Black’
Exploration systématique de graphes
Structures de données avancées : Arbres AA
Algorithmique et Conception Objet
Structures de données avancées : B arbres
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.
Structures de données avancées : Range Partionning: RP*
Structures de données avancées : Principales structures de données
Structures de données avancées : MTH ( Multidimensional trie hashing ) D. E ZEGOUR Institut National d ’Informatique.
Structures de données IFT-2000
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.
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.
Arbres AVL - Hauteur d’un arbre AVL - Insertion et restructuration
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.
1 CSI 4506: Introduction à l’Intelligence Artificielle La Recherche Adversariale.
Traversées (Parcours ) de graphes
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
Transcription de la présentation:

4/25/2017 4:30 PM Arbres (2,4) 9 2 5 7 10 14 CSI2510 CSI2510

Arbres (2,4) Arbres de recherche généralisés (Multi-way search tree) 4/25/2017 4:30 PM Arbres (2,4) Arbres de recherche généralisés (Multi-way search tree) Définition Recherche Arbres (2,4) Insertion Suppression CSI2510 CSI2510

Arbre de recherche multi-branches 4/25/2017 4:30 PM Un arbre de recherche généralisé (ou arbre de recherche m-aire) est un arbre ordonné tel que: Chaque nœud interne a au moins deux enfants et emmagasine d -1 entrées clé-élément (ki, oi), où d est le nombre des enfants de a Un nœud ayant comme enfants v1 v2 … vd emmagasine les clés k1 k2 … kd-1 de telle façon que: Les clés dans le sous-arbre v1 sont inférieures à k1 Les clés dans le sous-arbre vi sont comprises entre ki-1 et ki (i = 2, …, d - 1) Les clés dans le sous-arbre vd sont supérieures à kd-1 Les feuilles n’emmagasinent aucune clé 11 24 2 6 8 15 27 32 30 CSI2510 CSI2510

Parcours infixe de l’arbre généralisé de recherche 4/25/2017 4:30 PM Cas particulier avec d=2: arbre de recherche binaire Extension du parcours infixe des arbres binaires Nous visitons l’entrée (ki, oi) du nœud v entre les traversées récursive des sous-arbres de v enracinés aux enfants vi et vi + 1 La parcours infixe d’un arbre de recherche généralisé visite les clés dans l’ordre croissant 11 24 8 12 2 6 8 15 27 32 2 4 6 10 14 18 30 1 3 5 7 9 11 13 16 19 15 17 CSI2510 CSI2510

Recherche dans un arbre de recherche généralisé 4/25/2017 4:30 PM Semblable à la recherche dans les arbres de recherche binaires Pour chaque nœud interne d’enfants v1 v2 … vd et emmagasinant les clés k1 k2 … kd-1 k = ki (i = 1, …, d - 1): la recherche est accomplie avec succès k < k1: nous continuons la recherche dans le sous-arbre enfant v1 ki-1 < k < ki (i = 2, …, d - 1): nous continuons la recherche dans le sous-arbre enfant vi k > kd-1: nous continuons la recherche dans l’enfant vd Si un nœud externe est atteint, la recherche échoue Exemple: chercher 30 11 24 2 6 8 15 27 32 30 CSI2510 CSI2510

Arbre (2,4) 4/25/2017 4:30 PM un arbre (2,4) (appelé aussi arbre 2-4 ou arbre 2-3-4) est un arbre de recherche généralisé qui satisfait les propriétés suivantes: Propriétés de taille des nœuds: chaque nœud interne a au maximum quatre enfants et au minimum 2 enfants Propriétés de profondeur: tous les nœuds externes ont la même profondeur Un nœud interne d’un arbre (2,4) est nommé un 2-nœud, 3-nœud ou 4-nœud suivant le nombre de ses enfants 10 15 24 2 8 12 18 27 32 CSI2510 CSI2510

Hauteur d’un arbre (2,4) 4/25/2017 4:30 PM Théorème: un arbre (2,4) emmagasinant n entrées a une hauteur O(log n) : Soit h la hauteur d’un arbre (2,4) avec n entrées Comme il y a au moins 2i entrées à la profondeur i = 0, … , h - 1 et aucune entrée à la profondeur h, nous avons: n  1 + 2 + 4 + … + 2h-1 = 2h - 1 Alors, h  log (n + 1) La recherche dans un arbre (2,4) avec n entrées prend un temps O(log n) profondeur elements 1 1 2 h-1 2h-1 h CSI2510 CSI2510

Hauteur d’un arbre (2,4) 4/25/2017 4:30 PM Quand tous les nœuds internes ont 1 clé et 2 enfants arbre binaire parfait: n = 2h-1 h = O(log n) # min. d’entrées, n: Quand tous les nœuds internes ont 3 clés et 4 enfants n = 3* 4i =3* # clés = 4h-1 h = O(log4 n)  Rechercher = O( log n ) h-1 # max. d’entrées, n:  (4h-1) 4-1 i=0 CSI2510 CSI2510

Insertion 4/25/2017 4:30 PM nous insérons une nouvelle entrée (k, o) dans le nœud parent v de la feuille atteinte en recherchant k Nous conservons la propriété de profondeur mais… Nous pouvons causer un débordement (overflow) (c.-à-d., le nœud v peut devenir un 5-nœud) Exemple: insertion d’une clé 30 cause un débordement 10 15 24 v 2 8 12 18 27 32 35 10 15 24 v 2 8 12 18 27 30 32 35 CSI2510 CSI2510

Débordement et fractionnement 4/25/2017 4:30 PM 10 15 24 10 15 24 32 au parent 35 27 30 32 35 27 30 10 15 24 32 Overflow ! 27 30 35 CSI2510 CSI2510

Débordement et fractionnement 4/25/2017 4:30 PM 24 au parent 10 15 24 32 27 30 35 32 10 15 24 10 15 32 2 8 12 18 27 30 35 CSI2510 CSI2510

Débordement et fractionnement 4/25/2017 4:30 PM Nous contrôlons un débordement (overflow) à un nœud v avec une opération de fractionnement  (ou séparation-split): Soit v1 … v5 les enfants de v et k1 … k4 les clés de v nœud v est remplacé par deux nœuds v' et v" tel que: v' est un 3-nœud avec les clés k1 k2 et les enfants v1 v2 v3 v" est un 2-nœud avec une clé k4 et les enfants v4 v5 La clé k3 est insérée dans le parent u de v (une nouvelle racine peut être créée) Le débordement peut se propager au parent du nœud u u u 15 24 15 24 32 v v' v" 12 18 27 30 32 35 12 18 27 30 35 v1 v2 v3 v4 v5 v1 v2 v3 v4 v5 CSI2510 CSI2510

Analyse d’insertion (en remontant) 4/25/2017 4:30 PM Soit T un arbre (2,4) avec n entrées: L’arbre T a une hauteur O(log n) L’étape 1 prend un temps O(log n) parce que nous visitons O(log n) nœuds L’étape 2 prend un temps O(1) L’étape 3 prend un temps O(log n) parce que chaque séparation prends un temps O(1) et nous effectuons O(log n) séparations au max. Alors, une insertion dans un arbre (2,4) prends un temps O(log n) Algorithm insertItem(k, o) Nous cherchons une clé k pour localiser le nœud d'insertion v 2. Nous ajoutons le nouvel item (k, o) au noeud v 3. while overflow(v) if isRoot(v) Créer une nouvelle racine vide au dessus de v v  split(v) CSI2510 CSI2510

Suppression 4/25/2017 4:30 PM Il suffit de considérer les cas où la clé à supprimer est dans un nœud avec des enfants feuilles Sinon, nous remplaçons l’entrée avec son successeur (ou prédécesseur) dans le parcours infixe et nous enlèverons cette dernière entrée Exemple: pour enlever la clé 24, nous la remplaçons par la clé 27 (son successeur en parcours infixe ) 27 32 35 10 15 24 2 8 12 18 10 15 27 2 8 12 18 32 35 CSI2510 CSI2510

Underflow et Fusion u u w v v' 4/25/2017 4:30 PM La suppression d’une entrée d’un nœud v peut causer un underflow où le nœud v devient un 1-nœud avec un enfant et aucune clé Pour contrôler un underflow au nœud v de parent u, nous considérons deux cas Cas 1: Les 2 frères adjacents de v sont des 2-nœud ou v possède un seul frère adjacent qui est 2-noeud: Fusion : fusionner v avec un frère adjacent w et déplacer une entrée de u dans le nœud fusionné v' Après la fusion, l’underflow peut se propager au parent u Si l’underflow se produit à la racine, alors le parent et les deux enfants deviennent un 3-noeud u u 9 14 9 w v v' 2 5 7 10 2 5 7 10 14 CSI2510 CSI2510

Underflow et transfert 4/25/2017 4:30 PM Pour contrôler un underflow au nœud v de parent u, nous considérons deux cas Cas 2: un frère adjacent w de v est un 3-nœud ou un 4-nœud Transfert: 1. déplacer un enfant de w dans v 2. déplacer une entrée de w dans u 3. déplacer une entrée de u dans v Après le transfert, plus d’underflow possible u u 4 9 4 8 w v w v 2 6 8 2 6 9 CSI2510 CSI2510

Analyse de suppression (en remontant) 4/25/2017 4:30 PM Soit T un arbre (2,4) avec n entrées Un arbre T a une hauteur O(log n) Lors d’une suppression Nous visitons O(log n) nœuds pour localiser le nœud dans lequel aura lieu la suppression Nous résolvons l’underflow avec une série de O(log n) fusions au max., suivie d’un transfert dans le pire des cas Chaque fusion ou transfert prend un temps O(1) Alors, la suppression d’une entrée d’un arbre (2,4) prend un temps O(log n) CSI2510 CSI2510

Insertion et suppression en descendant Il est aussi possible d’effectuer l’insertion en descendant Chaque fois qu’un 4-nœud est rencontré lors de la descente, celui-ci est éclaté. Si c’est la racine, elle est éclaté en trois 2-nœuds. Sinon, son parent est forcément un 2-nœud ou un 3-nœud Pour effectuer la suppression en descendant: On s’arrange pour que l’élément à supprimer soit un 3-nœud ou un 4-nœud (sauf pour la racine) Si les 2 enfants de l’élément supprimé sont 2-nœud, alors on les fusionne Sinon, on remplace par successeur infixe Donc, chaque fois que je rencontre un 2-nœud, celui-ci est transformé en un 3-nœud Si mon frère est un 3-nœud ou un 4-nœud, je vais lui chercher un élément Si mon frère est un 2-nœud, alors je dois aller chercher un élément en le prenant au parent qui sera forcement un 3-nœud ou un 4-nœud et je forme un 4-noeud A moins que le parent soit la racine, je créé alors un 4-noeud CSI2510

Exemple Insérer Retirer 10,5,8,7,15,20,12,9,13,22,16,24 8,7,10,16,20 CSI2510