1 Définition. 2 Recherche dans un Arbre-B. 3 Insertion dans un Arbre-B. 4 Suppression dans un Arbre-B. Arbre-B



Documents pareils
Architecture des Systèmes d Information Architecture des Systèmes d Information

Arbres binaires de recherche

ARBRES BINAIRES DE RECHERCHE

Les structures de données. Rajae El Ouazzani

INF601 : Algorithme et Structure de données

Les arbres binaires de recherche

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Algorithmes récursifs

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

T. A. D. pile. Chapitre 7 (suite) Listes particulières. T. A. D. file. représentation chaînée de la file algorithmique. Files

L exclusion mutuelle distribuée

Quelques Algorithmes simples

Algorithmique, Structures de données et langage C

Structure fonctionnelle d un SGBD

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Définitions. Numéro à préciser. (Durée : )

chapitre 4 Nombres de Catalan

Excel Avancé. Plan. Outils de résolution. Interactivité dans les feuilles. Outils de simulation. La valeur cible Le solveur

1 Recherche en table par balayage

SUPPORT DE COURS. Dr. Omari Mohammed Maître de Conférences Classe A Université d Adrar Courriel : omarinmt@gmail.com

Feuille TD n 1 Exercices d algorithmique éléments de correction

Université de Strasbourg UFR de Mathématique et d'informatique. L2 Informatique Semestres S3 et S4. Structures de Données et Algorithmes 1 et 2

Chapitre 7. Récurrences

Université Bordeaux 1, Licence Semestre 3 - Algorithmes et struct...

Algorithmes d'apprentissage

Adama MBODJI MBODJ.SYSTEM

Compression de Données - Algorithme de Huffman Document de Conception

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Bases de données documentaires et distribuées Cours NFE04

CORRECTION EXERCICES ALGORITHME 1

Unix/Linux I. 1 ere année DUT. Université marne la vallée

Big Data et Graphes : Quelques pistes de recherche

Représentation d un entier en base b

Traitement des données avec Microsoft EXCEL 2010

données en connaissance et en actions?

6. Hachage. Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses

Bases de programmation. Cours 5. Structurer les données

Recherche dans un tableau

Organiser les informations ( approche technique )

Algorithmique et Programmation

Programmation Objet - Cours II

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Découvrir l'ordinateur (niveau 2)

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

4D v11 SQL Release 5 (11.5) ADDENDUM

Master IMEA 1 Calcul Stochastique et Finance Feuille de T.D. n o 1

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

STAGE IREM 0- Premiers pas en Python

Génie Logiciel avec Ada. 4 février 2013

Travaux Dirigés n 1 : chaînes de caractères

Administration des bases de données relationnelles Part I

Big Data et Graphes : Quelques pistes de recherche

Introduction au maillage pour le calcul scientifique

Initiation à LabView : Les exemples d applications :

LES TYPES DE DONNÉES DU LANGAGE PASCAL

TP3 : Manipulation et implantation de systèmes de fichiers 1

La présente publication est protégée par les droits d auteur. Tous droits réservés.

Arbres binaires de décision

Le Langage De Description De Données(LDD)

Système de Gestion de Fichiers

Cours d initiation à la programmation en C++ Johann Cuenin

SYSTÈME DE GESTION DE FICHIERS

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Structures dynamiques Listes chaînées

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

LES BIBLIOTHEQUES DE WINDOWS 7

MAÎTRISE DE L ENVIRONNEMENT WINDOWS VISTA

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Algorithmique et structures de données I

4. Les structures de données statiques

Utilitaires méconnus de StrataFrame

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Publication dans le Back Office

Sommaire. Structure. Liste simplement chaînée ALGORITHME ET STRUCTURES DE DONNÉES II

SOMMAIRE AIDE À LA CRÉATION D UN INDEX SOUS WORD. Service général des publications Université Lumière Lyon 2 Janvier 2007

Cours de Master Recherche

Conception. Génie Logiciel. Renaud Marlet. LaBRI / INRIA (d'après A.-M. Hugues) màj 17/04/2007

Initiation à l algorithmique

Groupe Eyrolles, 2003, ISBN : X

1 Prise en main des machines

Sauvegarde collaborative entre pairs Ludovic Courtès LAAS-CNRS

La société Klippan France dont l usine est à Gournay-en-Bray en Normandie, La société Autoliv S.A. dont l usine est à Seclin dans le Nord, Normandie.

Introduction aux SGBDR

Évaluation et optimisation de requêtes

Écriture de journal. (Virement de dépense)

Cours Bases de données 2ème année IUT

Algorithmique et Programmation, IMA

CH.6 Propriétés des langages non contextuels

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Chapitre 5 : Flot maximal dans un graphe

IFT785 Approches Orientées Objets. FINAL Été Remise : Jeudi 19 août 2002 à 9h00 am

Note de cours. Introduction à Excel 2007

Initiation à Excel. Frédéric Gava (MCF)

Introduction à LDAP et à Active Directory Étude de cas... 37

1.1 L EXPLORATEUR WINDOWS

Transcription:

Déition Recherche Arbre-B Insertion Arbre-B Suppression Arbre-B Déition Recherche Arbre-B Insertion Arbre-B Suppression Arbre-B Plan... Les arbres-b Géraldine Del Mondo, Nicolas Delestre 1 Déition 2 Recherche dans un Arbre-B 3 Insertion dans un Arbre-B 4 Suppression dans un Arbre-B Basé sur le cours de M. Michel Mainguenaud - Dpt ASI arbre-b 1 / 30 arbre-b 2 / 30 Déition Recherche Arbre-B Insertion Arbre-B Suppression Arbre-B Contexte Déition Recherche Arbre-B Insertion Arbre-B Suppression Arbre-B Arbre-B L arbres-b (où B-Tree en anglais) est un SDD utilisée dans les domaines des : systèmes de gestion de fichiers : ReiserFS (version modifiée des arbres-b) ou Btrfs (B-Tree file system) bases de données : gestion des index L arbres-b reprend le concept d ABR équilibré mais en stockant dans un nœud k valeurs (nommées clés dans le contexte des arbres-b) et en référençant k +1 sous arbres : minimise la taille de l arbre et réduit le nombre d opérations d équilibrage (Wikipédia) utile pour un stockage sur une unité de masse Déition Arbre-B Un arbre-b d ordre m est un arbre tel que : 1 Chaque nœud contient k clées triées avec : m k 2m (nœud non racine) et 1 k 2m (nœud racine). 2 Chaque chemin de la racine à une feuille est de même longueur à 1 près 3 Un nœud est : Soit terminal (feuille) Soit possède (k +1) fils tels que les clés du ième fils ont des valeurs comprises entre les valeurs du (i 1)ème et ième clés du père arbre-b 3 / 30 arbre-b 4 / 30

Déition Recherche Arbre-B Insertion Arbre-B Suppression Arbre-B Structure d un nœud Déition Recherche Arbre-B Insertion Arbre-B Suppression Arbre-B Capacité Déition Nœud k clés triées k +1 pointeurs tels que : - Tous sont différents de NIL si le nœud n est pas une feuille - Tous à NIL si le nœud est une feuille P 0 k 1 P 1 k 2 P 2.. P k 1 k k P k k < k 1 k 1 < k < k 2 k 2 < k < k 3 k k 1 < k < k k k > k k Nombre de clés Arbre-B d ordre m et de hauteur h : Nombre de clé(s) minimal = 2 (m+1) h 1 Nombre de clés maximal = (2 m+1) h+1 1 Exemple : m = 100, h = 2 : Nombre de clés maximal = 8 000 000 Stockage sur disque Un noeud = Une page arbre-b 5 / 30 arbre-b 6 / 30 Déition Recherche Arbre-B Insertion Arbre-B Suppression Arbre-B Conception Conception détaillée Type ArbreB = ˆNoeud Type Noeud = Structure nbcles : NaturelNonNul cles : Tableau[1..MAX] de Valeur sousarbres : Tableau[0..MAX] de ArbreB structure... tel que le type Valeur possède un ordre total Information Contrairement au premier cours sur les SDD, nous utiliserons ici aucune fonction/procédure d encapsulation arbre-b 8 / 30

Recherche d un élément de clé c 1 / 3 Recherche d un élément de clé c 2 / 3 P 0 k 1 P 1 k 2 P 2.. P k 1 k k P k k < k1 k1 < k < k2 k2 < k < k3 kk 1 < k < kk k > kk Principe À partir de la racine, pour chaque nœud examiné : La clé C est présente (recherche qui peut être dichotomique) succès C < k 1 recherche dans le sous-arbre le plus à gauche (via le pointeur P 0 ) C > k k recherche dans le sous-arbre le plus à droite (via le pointeur P k ) k i < C < k i+1 (recherche qui peut être dichotomique) recherche dans le sous-arbre (via le pointeur P i ) Si l arbre est vide (pointeur vaut NIL) échec fonction estpresent (a : ArbreB, c : Valeur) : Booleen si a=nil alors retourner FAUX si c<aˆ.cles[1] alors retourner estpresent(aˆ.sousarbres[0]) si c>aˆ.cles[aˆ.nbcles] alors retourner estpresent(aˆ.sousarbres[aˆ.nbcles]) rechercherdansnoeud(aˆ,c,res,ssarbre) si res alors retourner VRAI retourner estpresent(ssarbre,c) Recherche d un élément de clé c 3 / 3 Insertion dans un arbre-b d ordre m procédure rechercherdansnoeud (E n : Noeud, c : Valeur, S estpresent : Booleen, sousarbre : ArbreB) Déclaration g,d,m : NaturelNonNul g 1 d n.nbcles tant que g d faire m (g+d) div 2 si n.cles[m] c alors d m g m+1 tantque si n.cles[g]=c alors estpresent VRAI sousarbre NIL estpresent FAUX si n.cles[g]>c alors sousarbre n.sousarbres[g-1] sousarbre n.sousarbres[g] Principe 1 L insertion se fait récursivement au niveau des feuilles 2 Si un nœud a alors plus 2m+1 clés, il y a éclatement du nœud et remontée (grâce à la récursivité) de la clé médiane au niveau du père 3 Il y a augmentation de la hauteur de l arbre lorsque la racine se retrouve avec 2m+1 clés l augmentation de la hauteur de l arbre se fait donc au niveau de la racine!

Algorithme 1 / 2 Algorithme 2 / 2 Prérequis On suppose posséder les fonctions/procédures suivantes : fonction creerfeuille (v :Tableau[1..MAX] de Valeur, nb : NaturelNonNul) : ArbreB fonction estunefeuille (a : ArbreB) : Booleen fonction eclatement (a : ArbreB) : ArbreB fonction positioninsertion (a : ArbreB, v : Valeur) : NaturelNonNul procédure insererdansnoeudunevaleur (E/S n : Noeud, E v : Valeur, pos : NaturelNonNul) procédure insererdansnoeudunarbre (E/S n : Noeud, E a : ArbreB, pos : NaturelNonNul) procédure inserer (E/S a : ArbreB, E v : Valeur, ordre : NaturelNonNul) a insertion(a,v,ordre) fonction insertion (a : ArbreB, v : Valeur, ordre : NaturelNonNul) : ArbreB Déclaration tab : Tableau[1..MAX] de Valeur si a = NIL alors tab[1] v retourner creerfeuille(tab,1) pos positioninsertion(a,v) si estunefeuille(a) alors insererdansnoeudunevaleur(a,v,pos) si aˆ.nbcles 2*m alors retourner eclatement(a) ssarbre aˆ.sousarbres[pos] temp insertion(ssarbre,v,ordre) si ssarbre = temp alors insererdansnoeudunarbreaˆ,v,pos si aˆ.nbcles 2*m alors retourner eclatement(a) Supression dans un arbre-b d ordre m Principe 1 La suppression se fait toujours au niveau des feuilles Si la clé à supprimer n est pas dans une feuille, alors la remplacer par la plus grande valeur des plus petites (ou plus petite valeur des plus grandes) et supprimer cette dernière 2 Si la suppression de la clé d une feuille (récursivement d un nœud) amène à avoir moins de m clés : 1 Combinaison avec un nœud voisin (avant ou après) 2 Descente de la clé associant ces deux nœuds (éclatement du nœud si nécessaire) la récursivité de ce principe peut ammener à diminuer la hauteur de l arbre (par le haut)

Algorithme 1 / 4 Prérequis On suppose posséder les fonctions/procédures suivantes : fonction plusgrandevaleur (a : ArbreB) : Valeur précondition(s) non a NIL fonction positionvaleurdansnoeudracine (a : ArbreB) : Entier précondition(s) non a NIL procédure supprimervaleurdansnoeudfeuille (E/S n : Noeud, E v : Valeur) procédure copiervaleurs (E/S tdest, tsource : Tableau[1..MAX] de Valeur, E indicedebutdest, indicedebutsource, nb : NaturelNonNul) fonction positionssarbrepouvantcontenirvaleur (a : Arbre, v : Valeur) : Naturel procédure decalerversgauchevaleursetssarbres (E/S n : Noeud, E apartirde : NaturelNonNul, nbcran : NaturelNonNul) procédure supprimer (E/S a : ArbreB, E v : Valeur, ordre : NaturelNonNul) a suppression(a,v,ordre,nil,nil,unevaleur) Algorithme 2 / 4 Cas simples fonction suppression (a : ArbreB, v : Valeur, ordre : NaturelNonNul, frereg, frered : ArbreB, valpere : Valeur) : ArbreB Déclaration... si a = NIL alors pos positionvaleurdansnoeudracine(a,v) si estunefeuille(a) alors si p = -1 alors si frereg = NIL et frered = NIL et aˆ.nbcles=1 alors desallouer(a) Cas n 1 : une feuille qui n est pas la racine si p = -1 alors posssarbre positionssarbrepouvantcontenirvaleur(a,v) vremplacement plusgrandevaleur(aˆ.sousarbres[pos]) aˆ.valeurs[p] vremplacement v vremplacement posssarbre p-1 Cas n 2 : supprimer v dans le sous-arbre

Algorithme 3 / 4 Cas n 1 : une feuille qui n est pas la racine supprimervaleurdansnoeudfeuille(aˆ,v) si aˆ.nbcles ordre ou (frereg = NIL et frered = NIL) alors si frereg NIL alors copiervaleurs(tab,freregˆ.valeurs,1,1,freregˆ.nbcles) tab[freregˆ.nbcles+1] v copiervaleurs(tab,aˆ.valeurs,freregˆ.nbcles+2,1,aˆ.nbcles) nb 1+aˆ.nbCles+frereGˆ.nbCles copiervaleurs(tab,aˆ.valeurs,1,1,aˆ.nbcles) tab[aˆ.nbcles+1] v copiervaleurs(tab,freredˆ.valeurs,aˆ.nbcles+2,1,freredˆ.nbcles) nb 1+aˆ.nbCles+frereDˆ.nbCles res creerfeuille(tab,nb) desallouer(a) si nb>2*ordre alors retourner eclatement(res) retourner res Algorithme 4 / 4 Cas n 2 : supprimer v dans le sous-arbre frereg NIL frered NIL si posssarbre>0 alors frereg aˆ.sousarbres[posssarbre-1] si posssarbre<aˆ.nbcles alors frered aˆ.sousarbres[posssarbre+1] res suppression(aˆ.sousarbres[posssarbre],v,ordre,frereg,frered, aˆ.valeurs[ posssarbre]) si resˆ.nbcles=1 alors aˆ.valeurs[posssarbre] resˆ.valeurs[1] aˆ.sousarbres[posssarbre-1] resˆ.sousarbres[0] aˆ.sousarbres[posssarbre] resˆ.sousarbres[1] decalerversgauchevaleursetssarbres(aˆ,posssarbre),1 aˆ.sousarbres[posssarbre] res