Les structures d'arbres en mémoire secondaire

Documents pareils
Techniques d analyse de circuits

Chapitre 2 Le problème de l unicité des solutions

ANALYSE NUMERIQUE NON-LINEAIRE

Statuts ASF Association Suisse Feldenkrais

Université Paris-Dauphine DUMI2E. UFR Mathématiques de la décision. Notes de cours. Analyse 2. Filippo SANTAMBROGIO

Sommaire. 6. Tableau récapitulatif Sophos NAC intégré Vs. NAC Advanced - 17 Février

Influence du milieu d étude sur l activité (suite) Inhibition et activation

LANGAGES - GRAMMAIRES - AUTOMATES

Tout ce qu il faut savoir en math

Synthèse de cours (Terminale S) Calcul intégral

Correction de l épreuve CCP 2001 PSI Maths 2 PREMIÈRE PARTIE ) (

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

Sciences Industrielles Précision des systèmes asservis Papanicola Robert Lycée Jacques Amyot

Algorithmes sur les mots (séquences)

LOGICIEL FONCTIONNEL EMC VNX

Transfert. Logistique. Stockage. Archivage

Electrovanne double Dimension nominale Rp 3/8 - Rp 2 DMV-D/11 DMV-DLE/11

- Phénoméne aérospatial non identifié ( 0.V.N.I )

Turbine hydraulique Girard simplifiée pour faibles et très faibles puissances

STI2D Logique binaire SIN. L' Algèbre de BOOLE

Conseils et astuces pour les structures de base de la Ligne D30

/HVV\VWqPHVFRPELQDWRLUHV

Guide d'utilisation Easy Interactive Tools Ver. 2

Chapitre 11 : L inductance

LITE-FLOOR. Dalles de sol et marches d escalier. Information technique

Thèse Présentée Pour obtenir le diplôme de doctorat en sciences En génie civil Option : structure

Théorème de Poincaré - Formule de Green-Riemann

Pour développer votre entreprise LES LOGICIELS EN LIGNE, VOUS ALLEZ DIRE OUI!

Réalisation de sites Internet PME & Grandes entreprises Offre Premium. Etude du projet. Webdesign. Intégration HTML. Développement.

La pratique institutionnelle «à plusieurs»

Module 2 : Déterminant d une matrice

Baccalauréat S Asie 19 juin 2014 Corrigé

3- Les taux d'intérêt

COURS D ANALYSE. Licence d Informatique, première. Laurent Michel

Guide des bonnes pratiques

Commencer DCP-7055W / DCP-7057W /

A11 : La représentation chaînée (1ère partie)

Directives COV et alternative lipochimique : peintures, encres, nettoyage, dégraissage...

LICENCE DE MATHÉMATIQUES DEUXIÈME ANNÉE. Unité d enseignement LCMA 4U11 ANALYSE 3. Françoise GEANDIER

Toyota Assurances Toujours la meilleure solution

Cours d Analyse IV Suites et Séries de fonctions

Licence M.A.S.S. Cours d Analyse S4

Interview p.10. Francis Delpérée. Dossier pédagogique des Equipes Populaires Bimestriel n 154 Janvier-Février 2013

Partie 4 : La monnaie et l'inflation

Notes de révision : Automates et langages

Introduction à la modélisation et à la vérication p. 1/8

Bilan pédagogique / Projet ipad Contexte

Modification simultanée de plusieurs caractéristiques d un bien hédonique : une nouvelle méthode de calcul de la variation de bien-être des ménages

Avant d utiliser l appareil, lisez ce Guide de référence rapide pour connaître la procédure de configuration et d installation.

Pour développer votre entreprise. Compta LES LOGICIELS EN LIGNE, VOUS ALLEZ DIRE OUI!

Initiation à la programmation en Python

SYSTEME DE TELEPHONIE

ECO ECO. Probablement le chauffe-eau solaire le plus évolué du monde. Eco 200 / Eco 250 / Eco 300 / Eco 450 ENERGIE CATALOGUE 13

ManSafe. pour les Utilitiés. La Protection antichute pour les Industries de l'energie. Français. TowerLatch LadderLatch

Meg Gawler Bréhima Béridogo. Mars 2002

Classeur courtier d assurance. Comment organiser son activité et se préparer à un contrôle

Chapitre VI Contraintes holonomiques

semestre 3 des Licences MISM annnée universitaire

Guide de l'utilisateur

NEWS PRO ACTIV. [Juillet 2015] Ce mois-ci on vous parle de. L arrêté est applicable à compter du 1er Juillet 2015.

L'algèbre de BOOLE ou algèbre logique est l'algèbre définie pour des variables ne pouvant prendre que deux états.

FORMULAIRE UNIQUE DE CANDIDATURE

Séquence 8. Probabilité : lois à densité. Sommaire

LES REGLEMENTS AVEC SOCIEL.NET DERNIERE MISE A JOUR : le 14 juin 2010

Les arbres binaires de recherche

Systèmes de plafonds

Recherche dans un tableau

îundesdruokerei Berlin

INSTRUCTIONS POUR L INSTALLATION ET LE FONCTIONNEMENT DES SERRURES À POIGNÉE BÉQUILLE

Cours A7 : Temps Réel

COACHER VOS COLLABORATEURS

Bac Blanc Terminale ES - Février 2011 Épreuve de Mathématiques (durée 3 heures)

FONDATION CLEMENTINE ET MAURICE ANTILLE

AUTOUR D UN MÉMOIRE INÉDIT : LA CONTRIBUTION D HERMITE AU DÉVELOPPEMENT DE LA THÉORIE DES FONCTIONS ELLIPTIQUES. Bruno BELHOSTE (*)

FONCTIONS FINANCIÈRES

Chapitre 5 : Flot maximal dans un graphe

Algorithmique et structures de données I

FIG. 1 Module de stockage en position horizontale ; positionnement des jauges de déformation.

Guide de l utilisateur Faronics System Profiler Standard

DE CENTRALISE FACTURE CRE ATION

Exercices Alternatifs. Une fonction continue mais dérivable nulle part

Exercices Alternatifs. Une fonction continue mais dérivable nulle part

Algorithmes de recherche

SOCIÉTÉ LINNÉENNE DE LYO N FONDEE EN 182 2

RACCOURCIS CLAVIERS. DEFINITION : Une «combinaison de touches» est un appui simultané sur plusieurs touches.

UTILISATION DE LA BORNE PAR LE CLIENT

Algorithmique et Programmation, IMA

Bloc notes. a À faire tout de suite. Gardez secret votre code confidentiel. À conserver précieusement. Protégez votre carte

Plan de formation Employée/Employé de commerce CFC du 26 septembre 2011 pour la formation initiale en entreprise. Tables des matières

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Organigramme / Algorigramme Dossier élève 1 SI

N L a R e v u e F r a n c o p h o n e d u M a n a g e m e n t d e P r o j e t 2 è m e t r i m e s t r e

INFORMATIONS TECHNIQUES

Intelligence Artificielle Planification

ANALYSE : FONCTIONS D UNE VARIABLE RÉELLE

INSTALLATION DE DETECTION INCENDIE

INTENTION LES PROCESSUS MATHÉMATIQUES

Transcription:

Les structures d'rbres en mémoire secondire Introduction Les méthodes pr tbles d'index sont limités à certins type de fichiers (petits fichiers ou fichiers sttiques). Les méthodes bsées sur les structures d'rbres sont mieux dptées ux fichier volumineux et/ou dynmques. Afin de mieux occuper l'espce des blocs, on utilise des rbres m-ires. Les rbres de recherche m-ires Un rbre de recherche m-ires est l générlistion d'un rbre de recherche binire pour les ordres > 2 Un rbre de recherche m-ires d'ordre n est un rbre où chque noeud peut voir u mximum n fils (Fils[1..n]) et n-1 vleurs (Vl[1..n-1]). Les vleurs à l'intérieur d'un noeud sont ordonnées en ordre croissnt. Les fils sont orgnisés en fonction des vleurs du noeuds, selon les règles suivntes : i) Le Fils[1] pointe un sous-rbre contennt des vleurs < à Vl[1] ii) Le Fils[i] pointe un sous-rbre contennt des vleurs > Vl[i-1] et < Vl[i], pour i=2..n-1 iii) Le Fils[n] pointe un sous-rbre contennt des vleurs > Vl[n-1] Le degré d'un d'un noeud (le nombre de fils) est le nombre de vleurs stockées plus un. L figure ci-dessous montre un rbre de recherche m-ires d'ordre 5 de rcine le noeud. Le noeud b est le fils 1 de et f est le fils 5 de. Un noeud interne peut voir certins fils à nil et d'utres non. Pr exemple tous les fils de b à prt le 3e sont à nil. De même, les fils 1, 3 et 4 du noeud d sont à nil, lors que son fils 2 (pointe h) et son fils 5 (pointe i) sont différents de nil. 24 40 67 82 b c d e f 2 5 12 20 27 30 42 50 55 60 71 80 90 95 97 99 g h i 10 47 48 63 65 66 L recherche d'une vleur C commence dns le noeud rcine P et se poursuit le long d'une brnche : 1- Si C existe dns P lors stop vec succès 2- Si C n'existe ps dns P lors soit k l position dns P où devrit être insérer C (pour que les vleurs restent ordonnées) P := Fils[k] Si P différent de nil lors ller à 1 Sinon stop vec échec. Notes de cours : Arbres en MS Algo2 (Structures de données) 1

Pr exemple, l recherche de 48 dns l'rbre de l figure précédente se déroule comme suit: on commence l recherche dns le noeud. L vleur 48 n'existe ps et est comprise entre 40 et 67. Donc le prochin noeud à visiter est le Fils[3] (le noeud d) l recherche se poursuit dns le noeud d, et le prochin noeud à explorer est le Fils[2], cr 48 est comprise entre 42 et 50 on continue l recherche dns le noeud h. L vleur 48 existe (Vl[2]), on s'rrête donc vec succès. Si on vit recherché l vleur 15, on urit visité d'bord le noeud, puis le noeud b (Fils[1] de, cr 15 < 24). Là on serit rrêté vec un échec, cr 15 est comprise entre 12 et 20 et le Fils[4] de b est à nil. Pour insérer une nouvelle vleur V dns un rbre de recherche m-ires, on recherche d'bord l vleur, pour vérifier qu'elle n'existe ps déjà et pour locliser le noeud P où doit être insérée cette vleur (P est le dernier noeud visité dns l recherche). L recherche retourne ussi l'indice k où devrit être insérée V s'il y vit de l'espce dns P. Si P n'est ps plein, on insère V dns P, pr déclges fin de grder le tbleu de vleurs ordonné. Sinon (P est plein) : on lloue un nouveu noeud Q contennt une seule vleur (Vl[1] =V) et deux fils à nil (Fils[1] = nil et Fils[2] = nil) on fit pointer le nouveu noeud Q pr le Fils[k] de P (qui étit, vnt l'insertion, forcément à nil). L'indice k est celui retourné pr l recherche. Pr exemple, si on insère l vleur 64 dns l'rbre de l figure précédente, on procéder comme suit: 1- recherche de 64 échec (le dernier noeud visité est i et l position où devrit être insérée 64 est k=2) 2- comme le noeud i n'est ps plein, on peut lors insérer 64 à l position 2 en déclnt à droite les vleurs > 64 24 40 67 82 b c d e f 2 5 12 20 27 30 42 50 55 60 71 80 90 95 97 99 g h i 10 47 48 63 64 65 66 Si on insère encore l vleur 62, on llouer lors un nouveu noued (j) qui v contenir 62 et il ser pointé pr le Fils[1] du noeud i (i étnt le dernier noeud visité dns l recherche de 62 et l position ou devrit être insérer 62 dns i, s'il y vit de l'espce, est k = 1) L figure suivnte montre le résultt d'une telle insertion: Notes de cours : Arbres en MS Algo2 (Structures de données) 2

24 40 67 82 b c d e f 2 5 12 20 27 30 42 50 55 60 71 80 90 95 97 99 g h i 10 47 48 63 64 65 66 j 62 Un rbre de recherche m-ires est dit «Top-Down» si tous ces noeuds internes sont remplis à 100%. L'lgorithme d'insertion présenté mintient cette propriété. L suppression d'une vleur V peut être logique (ce qui fvorise le mintient de l propriété top-down) ou bien physique en générlisnt l suppression des rbres de recherche binires (mis le mintient de l propriété top-down est plus difficile). - En mémoire secondire Chque noeud de l'rbre est représenté pr un bloc d'e/s. L structure générle d'un bloc est lors comme suit : type Tbloc = structure Vl : tbleu[n-1] de typeqlq; Fils : tbleu[n] d'entier; degré : entier; Fin; // enregistrements ou (clés-dr) // numéros de blocs // nb d'elt dns Fils Prmi les crctéristiques d'un fichier vu comme rbre, il y l rcine. C'est le numéro du bloc contennt l rcine de l'rbre. Pr exemple, si l'rbre de l figure précédente étit un fichier, le contenu du bloc d serit comme suit: Vl Fils 42 50 55 60-1 h -1-1 i 1 2 3 4 5 5 degré Notes de cours : Arbres en MS Algo2 (Structures de données) 3

lors que le contenu du bloc g serit : Vl Fils 10-1 -1 1 2 3 4 5 2 degré Le module suivnt permet de réliser une recherche dns un fichier orgniser sous forme d'un rbre de recherche m-ires Rech( c:typeqlq; nomf:chine; vr trouv:booleen; vr i,j,prec:entier) /* * recherche c et retourne en plus du booléen trouv, le num de bloc (i) qui contient c insi que s * position (j) dns Vl et le num (prec) du bloc qui précède i. * Si c n'existe ps, lors i ser positionnée à -1 et prec indique le num du dernier bloc visité. * l position ou devrit se trouver c dns le bloc prec est indiquée pr j. */ Debut Si ( nomf <> '' ) Ouvrir( F, nomf, 'A') Fsi; i := Entete(F,1); // le num du bloc rcine prec := -1; j := 1; trouv := FAUX; TQ ( Non trouv et i <> -1 ) LireDir( F, i, buf ); // recherche interne dns le bloc j := 1; TQ ( Non trouv et j < buf.degre ) Si ( c = buf.vl[j].cle ) trouv := VRAI Sinon j := j+1 Fsi FTQ; // fin de l recherche interne. Si ( Non trouv ) prec := i; i := buf.fils[j] Fsi FTQ; Si ( nomf <> '' ) Fermer(F) Fsi; Fin L'insertion d'une nouvelle vleur (enregistrement ou clé/dr) dns le fichier utilise l recherche: Ins( e:tenreg; nomf:chine ) Debut Ouvrir( F, nomf, 'A' ); Si ( Entete(F,1) = -1 ) i := AllocBloc( F ); // Si le fichier est vide Notes de cours : Arbres en MS Algo2 (Structures de données) 4

Aff_entete( F, 1, i ); // l nouvelle rcine buf.degre := 1; buf.vl[1] := e; buf.fils[1] := -1; buf.fils[2] := -1; EcrireDir( F, i, buf ); Sinon Rech( e.cle, '', trouv, i, j, prec ); Si ( Non trouv ) // si le dernier bloc visité n'est ps plein, on y insère l'enreg e Si ( buf.degre < N ) // déclges interne à prtir de j Pour k := buf.degre, j+1, -1 // boucle rrière vec ps = -1 buf.vl[k] := buf.vl[k-1]; buf.fils[k+1] := buf.fils[k]; FinPour // insérer e à l pos j buf.vl[j] := e; // et son «fils droit» à nil buf.fils[j+1] := -1; // incrémenter le degré buf.degre := buf.degre + 1; EcrireDir( F, prec, buf ); Fin Sinon // si le bloc est plein, il fut llouer un nouveu i := AllocBloc( F ); // et le chîner vec le précédent buf.fils[j] := i EcrireDir( F, prec, buf ); // insérer e à l pos 1 du nouveu bloc buf.degre := 1; buf.vl[1] := e; buf.fils[1] := -1; buf.fils[2] := -1; EcrireDir( F, i, buf ) Fsi Fsi // Non trouv Fsi // Entete(F,1) = -1 Fermer(F) Notes de cours : Arbres en MS Algo2 (Structures de données) 5

Les B-Arbres Ceux sont des rbres de recherche m-ires qui restent toujours équilibrés et sont donc très utilisés pour gérer des fichiers volumineux et dynmiques. Inventés pr R. Byer et E. Mc Creight en 1972, les B-Arbres sont devenus un stndrd de fcto à cuse de leurs performnces remrqubles et ce, jusqu'à nos jours. Pour simplifier l présenttion, on choisir un ordre impir ( N = 2d+1 ) Dns un B-Arbre d'ordre N : tous les noeuds à prt l rcine, sont remplis u minimum à 50% (soit d vleurs) l rcine peut contenir u minimum 1 vleur toutes les brnches ont l même longueur (rbre complètement équilibré) L figure ci-dessous montre un B-Arbre d'ordre 5 (d=2) 24 40 70 b c d e 2 5 12 20 27 30 42 50 55 60 71 80 97 L recherche dns un B-Arbre est similire à l recherche dns un rbre de recherche m-ires. L différence se situe dns l'lgorithme d'insertion et l'lgorithme de suppression. Pour insérer une vleur V dns un B-Arbre de rcine R, on procède comme suit : On insère V et son fils droit fd (initilement fd = -1), c--d si V ser insérée à une position j dns un noeud, lors il fudr insérer ussi «son fils droit» fd à l position j+1 (dns le tbleu des fils) 1- rechercher V, pour vérifier qu'elle n'existe ps et trouver le dernier noeud feuille visité (P) 2- si P n'est ps plein, on insère (V,fd) dns P pr déclges internes et on s'rrête. 3- si P est déjà plein, lors il v «éclter» en deux (P et Q, un nouveu noeud lloué) : ) former l «séquence ordonnée» des vleurs de P + l vleur V b) ffecter les d premières vleurs vec les d+1 premiers fils u noeud P c) ffecter les d dernières vleurs vec les d+1 derniers fils u nouveu noeud Q d) insérer l vleur du milieu (celle qui se trouve à l position d+1 dns l séquence ordonnée) dns le noeud prent de P. Le fils droit de cette vleur ser le noeud Q Aller à 2 Pr exemple, l'insertion de 76 dns le B-Arbre de l figure précédente, se déroule comme suit: 1- recherche de 76 trouv =FAUX, le dernier visité = e (c'est une feuille) et l position où doit être insérée 76 est 2 2- comme le noeud e n'est ps plein, on insère lors 76 vec son «fils droit» -1 respectivement ux positions 2 dns le tbleu Vl et 3 dns le tbleu Fils du noeud e On obtient lors le B-Arbre ci-dessous : Notes de cours : Arbres en MS Algo2 (Structures de données) 6

24 40 70 b c d e 2 5 12 20 27 30 42 50 55 60 71 76 80 97 Si on insère mintennt l vleur 57, c'est le noeud d qui ser visité en dernier pr l recherche. L position de 57 dns d devrit lors être 4 (et son fd à l position 5) Comme le noeud d est déjà plein, il y ur lors un «écltement» (cel veut dire, lloction d'un nouveu noeud, f pr exemple) ) formtion de l «séquence ordonnée»: Vl : 42, 50, 55, 57, 60 Fils: -1, -1, -1, -1, -1, -1 b) les d premières vleurs ( 42, 50 ) et les d+1 premiers fils (-1, -1, -1) seront ffectés u noeud e les d dernières vleurs ( 57, 60 ) vec les d+1 derniers fils (-1, -1, -1) seront ffectés u noeud f l vleur du milieu (55) vec comme fils-droit (f) seront insérés dns le noeud prent () comme le noeud n'est ps plein, l'insertion de ( 55, f ) peut se fire pr déclges internes On obtient lors le B-Arbre suivnt: 24 40 55 70 b c d f e 2 5 12 20 27 30 42 50 57 60 71 76 80 97 Si on continue l'insertion de 7, le noeud b v «éclter» (donc lloction d'un nouveu noeud g) l séquence ordonnée des vleurs de b + l vleur 7 est formée: Vl : 2, 5, 7, 12, 20 Fils: -1, -1, -1, -1, -1, -1 Les vleurs (2 et 7) vec les 3 premiers fils restent dns b. Les vleurs (12 et 20) vec les 3 derniers fils seront ffectés u nouveu noeud g. L vleur du milieu (7) vec comme fils-droit le noeud g seront insérés dns le pere (). Comme le noeud est lui ussi plein, il v lors «éclter» à son tour. Un nouveu noeud h est lors lloué et l séquence ordonnée est formée : Vl : 7, 24, 40, 55, 70 Fils: b, g, c, d, f, e Les d premières vleurs (7 et 24) vec les 3 premiers fils (b, g et c) restent dns. Les d dernières vleurs (55 et 70) vec les 3 derniers fils (d, f et e) seront ffectés u nouveu noeud h. L vleur du milieu (40) vec comme fils-droit le noeud h seront insérés dns le père du noeud. Comme le noeud étit l rcine de l'rbre (il n' donc ps de père), une nouvelle rcine (i) est lors llouée contennt uniquement l vleur 40 vec comme fils-guche (Fils[1]), l'ncienne rcine () et Notes de cours : Arbres en MS Algo2 (Structures de données) 7

comme fils-droit (Fils[2]) le noeud h. L figure suivnte, montre l'rbre obtenu : i 40 7 24 h 55 70 b g c d f e 2 5 12 20 27 30 42 50 57 60 71 76 80 97 Qund l rcine d'un B-Arbre éclte (à cuse d'une insertion), l profondeur de l'rbre ugmente d'un niveu. Notes de cours : Arbres en MS Algo2 (Structures de données) 8