Arbres de recherche. Structures de données représentant un objet de sorte à supporter efficacement des opérations de certain type



Documents pareils
ARBRES BINAIRES DE RECHERCHE

Les arbres binaires de recherche

L exclusion mutuelle distribuée

Quelques Algorithmes simples

INF601 : Algorithme et Structure de données

Les structures de données. Rajae El Ouazzani

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

Programmation par contraintes. Laurent Beaudou

Arbres binaires de recherche

Introduction aux algorithmes répartis

Parallélisme et Répartition

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

Cours de Master Recherche

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

MIS 102 Initiation à l Informatique

Resolution limit in community detection

Chapitre 7. Récurrences

Chapitre 5 : Flot maximal dans un graphe

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

Programmation Par Contraintes

SPHINX Logiciel de dépouillement d enquêtes

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

Serveurs de noms Protocoles HTTP et FTP

Algorithmique, Structures de données et langage C

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

0.1 Mail & News : Thunderbird

Stratégie de recherche adaptative en programmation par contrainte

Raisonnement probabiliste

Algorithmes de recherche d itinéraires en transport multimodal

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

CONFIGURATION DE BASE. 6, Rue de l'industrie BP130 SOULTZ GUEBWILLER Cedex. Fax.: Tel.:

Arbres binaires de décision

FOCUS Evolution. Lisez-Moi. Version FE 7.0.t

Initiation à LabView : Les exemples d applications :

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

DOCUMENTATION POINT FACTURE

Algorithmes de recherche

Continuité et dérivabilité d une fonction

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

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

Initiation à la Programmation en Logique avec SISCtus Prolog

Domain Name Service (DNS)

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

Créer une trace, obtenir son fichier gpx et sa carte Ou Afficher un fichier trace GPX

Mesurer les performances (CPU) sous Linux

Gratuit jeux interactifs, vidéos et images de la populaire série animée Superbook. Regard sur les récits bibliques.

Service des ressources informatiques - Conseil Scolaire de District Catholique Centre-Sud Page 1

Documentation RBS Change E-Commerce Core

Choisir le mode d envoi souhaité. Option 1 : Envoyer un SMS à un nombre réduit de numéros (0 10 )

gestion des processus La gestion des processus

Équations non linéaires

Introduction à la théorie des graphes. Solutions des exercices

CMS Modules Dynamiques - Manuel Utilisateur

Démonstration d utilisation De NesmaCom

Un algorithme équitable d exclusion mutuelle tolérant les fautes

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

TABLE DES MATIERES MENTIONS LEGALES INTRODUCTION CHAPITRE 1 : INSTALLATION DE L ALGORITHME CHAPITRE 2 : EXECUTION & OPTIMISATION DU BACKTEST

Les 5 différents types d ordres

Plus courts chemins, programmation dynamique

WebSMS. Avril WebSMS Orange Mali - Guide utilisateur

Découvrir l'ordinateur (niveau 2)

Tablette Pegasus PC Notes. Code : Conrad sur INTERNET Version 02/ Conditions du système.

Licence Sciences et Technologies Examen janvier 2010

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

DNS ( DOMAIN NAME SYSTEM)

FlashWizard v4.5b PRO

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

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

MANUEL DRIVELINK DRIVELINK

Algorithmes d'apprentissage

Limites finies en un point

Coup de Projecteur sur les Réseaux de Neurones

GAMME GESTION TEMPS & PRÉSENCE ZX-HP LA MAIN MISE SUR LE TEMPS

TS 35 Numériser. Activité introductive - Exercice et démarche expérimentale en fin d activité Notions et contenus du programme de Terminale S

Chp. 4. Minimisation d une fonction d une variable

Algorithmique I. Algorithmique I p.1/??

L ordinateur quantique (suite)

Open-Sankoré. Mise en route. Guide utilisateur Février 2013 NTICE (E. S.)

Programmation linéaire

Sujet 4: Programmation stochastique propriétés de fonction de recours

RECOPLUS LOGICIEL DE GESTION DES RECOMMANDES NOTICE D UTILISATION DE RECOPLUS RESEAU. N de série

Assistant d e tablissement de Tableaux

données en connaissance et en actions?

Défi 1 Qu est-ce que l électricité statique?

Cours d électricité. Circuits électriques en courant constant. Mathieu Bardoux. 1 re année

Samuel Bassetto 04/2010

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Image d un intervalle par une fonction continue

Architecture des Systèmes d Information Architecture des Systèmes d Information

Administration du site (Back Office)

Algorithmique - Cours et Travaux Dirigés Ecole Normale Supérieure de Lyon

Logiciel de gestion pour restaurants et Bars

Optimisation for Cloud Computing and Big Data

I. COMMENT SOUMETTRE VOTRE CANDIDATURE


Rappels sur les suites - Algorithme

Algorithmique et Programmation

Transcription:

Introduction Arbres de recherche Structures de données représentant un objet de sorte à supporter efficacement des opérations de certain type Exemples: représentation de graphes, CLASS-UNION Cas statique : les opérations ne modifient pas l objet (requêtes uniquement) Cas dynamique : les opérations peuvent modifier l objet (par ex ajouter ou supprimer des éléments de l ensemble). Cas on-line vs. off-line. 601 602 Maintenir un ensemble ordonné Solutions directes Maintenir un ensemble ordonné S par rapport aux opérations suivantes : TROUVER(e) : retourner le pointeur à e (si e S) AJOUTER(e) : ajouter e à S ENLEVER(e) : supprimer e de S MAX(S) : retourner l élément maximal de S MIN(S) : retourner l élément minimal de S SUCC(e) : retourner l élément minimal de S plus grand que e PRED(e) : retourner l élément maximal de S plus petit que e 1) stocker les éléments dans un tableau dans l ordre croissant TROUVER, SUCC, PRED : O(log(n)) MAX, MIN : O(1) AJOUTER, ENLEVER : O(n) 2) stocker les éléments dans une liste doublement chainée AJOUTER : O(1) TROUVER, SUCC, PRED, MAX, MIN, ENLEVER : O(n) 3) même chose mais maintenir la liste ordonnée MAX, MIN : O(1) TROUVER, AJOUTER, ENLEVER, SUCC, PRED : O(n) 603 604

Arbres binaires de recherche Arbres binaires de recherche : exemple Solution proposée : stocker les éléments dans les noeuds d un arbre binaire vérifiant la propriété d arbre de recherche : pour tout nœud x : tous les éléments dans le sous-arbre gauche de x sont < x, tous les éléments dans le sous-arbre droite de x sont > x < x x > x Pour simplicité, dans ce qui suit on va supposer que tous les éléments sont distincts Convention: l ensemble vide est représenté par nil. Chaque nœud stockant un élément possède les deux fils qui peuvent être nil (feuille). Les nœuds nil (feuilles) ne sont pas montrés sur les images. 605 606 Arbres binaires de recherche : application Arbres binaires de recherche : TROUVER Il est facile de sortir tous les éléments dans l ordre croissant (ou décroissant) par le parcours en profondeur (parcours symétrique ou infixe) : SORTIR-CROISSANT(x) si x!nil faire SORTIR-CROISSANT(left(x)) sortir x SORTIR-CROISSANT(right(x)) SORTIR-CROISSANT(root) Trouver un élément : en partant de la racine, descendre dans l arbre en se guidant par les comparaisons : TROUVER(e,x) si e=x faire retourner x; STOP si e<x faire TROUVER(left(x),e) sinon TROUVER(right(x),e) TROUVER(e,root) 607 608

Arbres binaires de recherche : TROUVER Arbres binaires de recherche : MIN, MAX TROUVER(8,root) : MIN : la feuille «la plus à gauche» MAX : la feuille «la plus à droite» MIN(root)=1 MAX(root)=17 609 610 Arbres binaires de recherche : SUCC, PRED Arbres binaires de recherche : AJOUTER SUCC(e)= MIN(right(e)) si right(e)!nil, sinon le plus proche ancêtre de e dont e est dans le sous-arbre gauche, nil sinon /* e=max(root) */ Ajouter un élément : chercher cet élément (comme dans TROUVER) et l insérer comme fils correspondant du nœud terminal SUCC(7)=8 SUCC(11)=12 SUCC(17)=nil PRED(e) est calculé symétriquement AJOUTER(2,root) NB: pas de comparaisons non plus! 611 612

Arbres binaires de recherche : ENLEVER Arbres binaires de recherche : ENLEVER Enlever un élément e : 1) si e est une feuille, supprimer-la Enlever un élément e : 1) si e est une feuille, supprimer-la 2) si e n a qu un fils, attacher le à l ancêtre de e (s il existe), supprimer le nœud de e ENLEVER(1,root) 613 614 Arbres binaires de recherche : ENLEVER Complexité Enlever un élément e : 1) si e est une feuille, supprimer-la 2) si e n a qu un fils, attacher le à l ancêtre de e (s il existe), supprimer le nœud de e 3) si e a les deux fils, trouver s=succ(e)=min(right(e)), copier s dans e et enlever s Toutes les opérations TROUVER, AJOUTER, ENLEVER, SUCC, PRED, MAX, MIN s exécutent en temps O(h), où h est la hauteur de l arbre. L objectif est alors de maintenir la hauteur petite, idéalement O(log n) (n nombre d éléments courant), donc maintenir l arbre équilibré. ENLEVER(6,root) Il existe plusieurs solutions à ce problème : arbres rouge-noirs, arbres AVL, arbres 2-3, splay trees, 615 616

Arbres rouge-noirs : définition Arbres rouge-noirs (red-black trees) Arbre rouge-noir est un arbre de recherche binaire où chaque nœud possède une «couleur» rouge ou noir qui vérifient les propriétés suivantes : 1 le root est noir, les feuilles nil sont noires 2 un nœud rouge a le parent noir 3 tous chemins de root à une feuille ont le même nombre de nœuds noirs (2) implique que un nœud rouge a les fils noirs (3) implique que tous chemins de un nœud interne à une feuille ont le même nombre de nœuds noirs 617 618 Arbres rouge-noirs : exemple Arbres rouge-noirs : hauteur Theorème : La hauteur d un arbre rouge-noir avec n nœuds (hors nil) est bornée par 2 log(n+1) Preuve : h max "2 h min, où h max et h min sont les longueurs maximale et minimale d un chemin de root à une feuille. Comme un arbre de hauteur h a 2 h -1 nœuds, on a h min " log(n+1) " h max " 2 h min 1/2 log (n+1) " h min " log(n+1) h max " 2 h min " 2 log (n+1) 619 620

On ajoute d abord un élément comme précédemment. Il se peut que son coloriage est impossible sans violer les propriétés (2) ou (3). On va le colorier en vert («couleur à définir») et modifier l arbre pour rendre le coloriage possible. La modification va consister en une série de «rotations» : Les rotations vont propager le nœud vert de feuille à la racine jusqu à le faire disparaître Soit X le nœud vert. Cas faciles: Cas 1: X est la racine colorier X en noir Rot-Droite(A) Rot-Gauche(B) 621 622 Les rotations vont propager le nœud vert de feuille à la racine jusqu à le faire disparaître Soit X le nœud vert. Cas faciles: Cas 1: X est la racine X est le seul nœud de l arbre colorier X en noir Cas 3: le parent de X est rouge le parent B de X ne peut pas être la racine il existe un grand-parent A de X Cas 3.1: un oncle C de X existe et il est rouge colorier X en rouge, changer B et C en noir, changer A en vert Cas 2: Le parent de X est noir colorier X en rouge 623 624

Cas 3: le parent de X est rouge le parent B de X ne peut pas être la racine il existe un grand-parent A de X Cas 3.2: un oncle C de X est noir ou bien il n existe pas Cas 3.2.1: X est un fils gauche de son parent effectuer une rotation droite et recoloriage : Rot-Droite(A) Cas 3: le parent de X est rouge le parent B de X ne peut pas être la racine il existe un grand-parent A de X Cas 3.2: un oncle C de X est noir ou bien il n existe pas Cas 3.2.2: X est un fils droite de son parent effectuer une rotation droite et recoloriage : effectuer une rotation gauche, puis rotation droite, puis recoloriage Rot-Gauche(B) Rot-Droite(A) 625 626 Arbres rouge-noirs : ENLEVER Conclusions: Cas 1, 2, 3.2.1, 3.2.2 achèvent l insertion. Cas 3.1 propage le nœud vert vers la racine L algorithme est correcte car chaque cas préserve les propriétés de l arbre rouge-noir (mise à part le nœud vert) Le traitement de chaque cas prend temps O(1) L ajout prend temps O(log n) L algorithme est similaire à celui de AJOUTER. Sa complexité est O(log n). Conclusion finale Arbres rouge-noirs permettent de réaliser les opérations TROUVER, AJOUTER, ENLEVER, SUCC, PRED, MAX, MIN en temps O(log n) 627 628