Algorithmique et Programmation Impérative 2 Les arbres binaires de recherche



Documents pareils
ARBRES BINAIRES DE RECHERCHE

Les arbres binaires de recherche

Les structures de données. Rajae El Ouazzani

Arbres binaires de recherche

INF601 : Algorithme et Structure de données

Quelques Algorithmes simples

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

Algorithmique, Structures de données et langage C

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

Recherche dans un tableau

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

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

Chapitre 7. Récurrences

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

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

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

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

STAGE IREM 0- Premiers pas en Python

Licence Sciences et Technologies Examen janvier 2010

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Application 1- VBA : Test de comportements d'investissements

Introduction aux algorithmes répartis

MIS 102 Initiation à l Informatique

Classes et Objets en Ocaml.

Algorithmique et Programmation

Algorithmique & programmation

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

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

Organiser les informations ( approche technique )

Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR

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

Présentation du PL/SQL

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

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

L ARBORESCENCE. Qu est-ce qu un dossier? L arborescence?

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

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Examen Médian - 1 heure 30

Comment créer et utiliser une fonction

Domain Name Service (DNS)

Utilitaires méconnus de StrataFrame

Chapitre 10. Les interfaces Comparable et Comparator 1

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Comment automatiser la création d index multiples avec Word Paul-Henri Dumas - URFIST

DG-ADAJ: Une plateforme Desktop Grid

Paginer les données côté serveur, mettre en cache côté client

Arbres binaires de décision


TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

chapitre 4 Nombres de Catalan

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

Programmation par contraintes. Laurent Beaudou

Serveurs de noms Protocoles HTTP et FTP

EXCEL Les tableaux croisés dynamiques

1 Recherche en table par balayage

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Programmation avec des objets : Cours 7. Menu du jour

1 è r e étape : créer sa base de d o n n é e s

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Débuter avec Excel. Excel

RÉALISATION DE GRAPHIQUES AVEC OPENOFFICE.ORG 2.3

TP1 : Initiation à Java et Eclipse

Un modèle générique de Garbage Collection pour les éditeurs collaboratifs basé sur l approche TO dans les environnements P2P et mobiles

Cours de Systèmes d Exploitation

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Algorithmique I. Algorithmique I p.1/??

Caisses Sociales de Monaco - Déclarations de Salaires DIDACTICIEL. Version 3.2

Manipulations du laboratoire

Introduction au maillage pour le calcul scientifique

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

0 si a=b. Si a^ et b^ sont deux éléments différents du même anneau, alors le résultat de

Algorithmique et programmation : les bases (VBA) Corrigé

Programmation Par Contraintes

Raisonnement probabiliste

Gestion mémoire et Représentation intermédiaire

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Administration réseau Résolution de noms et attribution d adresses IP

Créer un site Web : mode d emploi Sous SPIP, avec le squelette «établissement» de l académie de Versailles

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

.NET - Classe de Log

1. Structure d'un programme FORTRAN 95

Traitement des données avec Microsoft EXCEL 2010

Créer un album photo

Représentation d un entier en base b

Groupe Eyrolles, 2003, ISBN : X

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Mesurer les performances (CPU) sous Linux

INSERER DES OBJETS - LE RUBAN INSERTION... 3 TABLEAUX

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

Cours de Master Recherche

Informatique UE 102. Jean-Yves Antoine. Architecture des ordinateurs et Algorithmique de base. UFR Sciences et Techniques Licence S&T 1ère année

Transcription:

Algorithmique et Programmation Impérative 2 Les arbres binaires de recherche N.E. Oussous oussous@lifl.fr FIL USTL SDC - Licence p.1/16

Arbres binaires de recherche Un arbre binaire T est un arbre binaire de recherche (ABR) si et seulement si SDC - Licence p.2/16

Arbres binaires de recherche Un arbre binaire T est un arbre binaire de recherche (ABR) si et seulement si Soit T est vide. SDC - Licence p.2/16

Arbres binaires de recherche Un arbre binaire T est un arbre binaire de recherche (ABR) si et seulement si Soit T est vide. Soit T contient au moins un nœud (on note v la valeur associée au nœud racine) et SDC - Licence p.2/16

Arbres binaires de recherche Un arbre binaire T est un arbre binaire de recherche (ABR) si et seulement si Soit T est vide. Soit T contient au moins un nœud (on note v la valeur associée au nœud racine) et Toute valeur associée à un nœud de son sous-arbre principal gauche est v SDC - Licence p.2/16

Arbres binaires de recherche Un arbre binaire T est un arbre binaire de recherche (ABR) si et seulement si Soit T est vide. Soit T contient au moins un nœud (on note v la valeur associée au nœud racine) et Toute valeur associée à un nœud de son sous-arbre principal gauche est v Toute valeur associée à un nœud de son sous-arbre principal droit est > v SDC - Licence p.2/16

Arbres binaires de recherche Un arbre binaire T est un arbre binaire de recherche (ABR) si et seulement si Soit T est vide. Soit T contient au moins un nœud (on note v la valeur associée au nœud racine) et Toute valeur associée à un nœud de son sous-arbre principal gauche est v Toute valeur associée à un nœud de son sous-arbre principal droit est > v Tout sous-arbre de T est lui-même un ABR SDC - Licence p.2/16

Arbres binaires de recherche v v ABR > v ABR SDC - Licence p.3/16

Arbres binaires de recherche v Exemples : 7 v > v ABR ABR Des ABR 7 3 9 3 9 2 5 2 5 8 SDC - Licence p.3/16

Arbres binaires de recherche v Exemples : v ABR > v ABR Des ABR 7 7 3 9 3 9 2 5 7 Des arbres non ABR 2 5 8 7 3 9 3 9 2 8 5 2 5 6 8 SDC - Licence p.3/16

Arbres binaires de recherche La recherche en table peut être traitée avec des arbres binaires de recherche. SDC - Licence p.4/16

Arbres binaires de recherche La recherche en table peut être traitée avec des arbres binaires de recherche. Les ABR ont un intérêt quand la table évolue très rapidement. Ils permettent de gérer de gros volumes d informations. Contraintes de mémoire : il faut connaître la taille maxi a priori SDC - Licence p.4/16

Arbres binaires de recherche La recherche en table peut être traitée avec des arbres binaires de recherche. Les ABR ont un intérêt quand la table évolue très rapidement. Ils permettent de gérer de gros volumes d informations. Les ABR réalisent de manière efficace les opérations de recherche, insertion et suppression. SDC - Licence p.4/16

Arbres binaires de recherche La recherche en table peut être traitée avec des arbres binaires de recherche. Les ABR ont un intérêt quand la table évolue très rapidement. Ils permettent de gérer de gros volumes d informations. Les ABR réalisent de manière efficace les opérations de recherche, insertion et suppression. Lorsque l arbre est «équilibré», (selon certains critères) on peut éviter qu il dégénère en une structure proche d une liste. On obtient des temps logarithmiques en fonction du nombre de nœuds. SDC - Licence p.4/16

Arbres binaires de recherche La recherche en table peut être traitée avec des arbres binaires de recherche. Les ABR ont un intérêt quand la table évolue très rapidement. Ils permettent de gérer de gros volumes d informations. Les ABR réalisent de manière efficace les opérations de recherche, insertion et suppression. Lorsque l arbre est «équilibré», on peut éviter qu il dégénère en une structure proche d une liste. L insertion et la suppression peuvent déséquilibrer l arbre. Il faut le rééquilibrer (avec soin). SDC - Licence p.4/16

ABR : recherche Present(x,A) C:Curseur ; begin if estvide(a) then Present := false else begin C := Racine(A) ; if Valeur(C)=x then Present:=true else if Valeur(C) < x then Present:=Present(x,sag(C)) else Present:=Present(x,sad(C)); end; // if end; SDC - Licence p.5/16

ABR : insertion Ajouter(x,A) C:Curseur ; begin C := Racine(A) ; if estvide(c) then begin arbrevide(g) ; arbrevide(d) ; Cons(x, g, d) ; end else if Valeur(C) <= x then Ajouter:=Ajouter(x,sad(C)) else Ajouter:=Ajouter(x,sag(C)); end; SDC - Licence p.6/16

Insertion : exemple 20 3 25 3 12 21 28 8 13 6 On insère le 9 SDC - Licence p.7/16

Insertion : exemple 20 3 25 3 12 21 28 8 13 6 9 SDC - Licence p.8/16

ABR : analyse Le nombre d opérations de la recherche ou de l insertion dépend de la hauteur de l arbre. SDC - Licence p.9/16

ABR : analyse Le nombre d opérations de la recherche ou de l insertion dépend de la hauteur de l arbre. si l arbre est bien équilibré, pour un ABR de n nœuds, on effectuera O(log 2 n) opérations SDC - Licence p.9/16

ABR : analyse Le nombre d opérations de la recherche ou de l insertion dépend de la hauteur de l arbre. si l arbre est bien équilibré, pour un ABR de n nœuds, on effectuera O(log 2 n) opérations si l arbre est un peigne, (complètement filiforme à gauche ou à droite) la hauteur vaudra n et le nombre d opérations sera O(n). SDC - Licence p.9/16

ABR : analyse Le nombre d opérations de la recherche ou de l insertion dépend de la hauteur de l arbre. si l arbre est bien équilibré, pour un ABR de n nœuds, on effectuera O(log 2 n) opérations si l arbre est un peigne, la hauteur vaudra n et le nombre d opérations sera O(n). Il est donc souhaitable d équilibrer les arbres au fur et à mesure des opérations d insertion (ou de suppression). SDC - Licence p.9/16

ABR : suppression Soit x la clé à supprimer et soit N le nœud qui la contient. si N est une feuille, il suffit de la supprimer SDC - Licence p.10/16

ABR : suppression Soit x la clé à supprimer et soit N le nœud qui la contient. si N est une feuille, il suffit de la supprimer si N a un seul fils, on le remplace par son fils unique SDC - Licence p.10/16

ABR : suppression Soit x la clé à supprimer et soit N le nœud qui la contient. si N est une feuille, il suffit de la supprimer si N a un seul fils, on le remplace par son fils unique si N a deux fils (cas général) On se ramène à un des deux cas simples précédents. SDC - Licence p.10/16

ABR : suppression Soit x la clé à supprimer et soit N le nœud qui la contient. si N est une feuille, il suffit de la supprimer si N a un seul fils, on le remplace par son fils unique si N a deux fils (cas général) on cherche son descendant M dont le contenu précède x dans l ordre infixe : c est le nœud le plus à droite dans sag(n) SDC - Licence p.10/16

ABR : suppression Soit x la clé à supprimer et soit N le nœud qui la contient. si N est une feuille, il suffit de la supprimer si N a un seul fils, on le remplace par son fils unique si N a deux fils (cas général) on cherche son descendant M dont le contenu précède x dans l ordre infixe : c est le nœud le plus à droite dans sag(n) on remplace x par le contenu de M SDC - Licence p.10/16

ABR : suppression Soit x la clé à supprimer et soit N le nœud qui la contient. si N est une feuille, il suffit de la supprimer si N a un seul fils, on le remplace par son fils unique si N a deux fils (cas général) on cherche son descendant M dont le contenu précède x dans l ordre infixe : c est le nœud le plus à droite dans sag(n) on remplace x par le contenu de M on supprime M qui n a pas de fils droit. SDC - Licence p.10/16

ABR : suppression Retirer(x,A) C:Curseur ; begin C := Racine(A) ; if x < Valeur(C) then Retirer(x,sag(C)) else if x > Valeur(C) then Retirer(x,sad(C)) else if estvide(sag(c)) then C:=sad(C) else if estvide(sad(c)) then C:=sag(C) else Fixer_Valeur(Supprimer_Max(sag(C)),C); end; SDC - Licence p.11/16

ABR : suppression L appel à la fonction Supprimer_Max se fait si l arbre a deux sous-arbres non vides. SDC - Licence p.12/16

ABR : suppression L appel à la fonction Supprimer_Max se fait si l arbre a deux sous-arbres non vides. Supprimer_Max(C:Curseur):Objet supprime le nœud de plus grande valeur parmi les descendants de l arbre dont la racine est désignée par C. Elle retourne le contenu de ce nœud. SDC - Licence p.12/16

ABR : suppression L appel à la fonction Supprimer_Max se fait si l arbre a deux sous-arbres non vides. Supprimer_Max(C:Curseur):Objet supprime le nœud de plus grande valeur parmi les descendants de l arbre dont la racine est désignée par C. Elle retourne le contenu de ce nœud. Supprimer_Max(C) begin if estvide(sad(c)) then begin Supprimer_Max:=Valeur(C) ; C:=sag(C) ; end else end; Supprimer_Max:=Supprimer_Max(sad(C)); SDC - Licence p.12/16

Suppression : exemple 20 3 25 3 12 21 28 8 13 6 9 On supprime le 13 SDC - Licence p.13/16

Suppression : exemple 20 3 25 3 12 21 28 8 6 9 SDC - Licence p.13/16

Suppression : exemple 20 3 25 3 12 21 28 8 13 6 9 On supprime le 12 SDC - Licence p.14/16

Suppression : exemple 20 3 25 3 12 21 28 8 13 6 9 SDC - Licence p.14/16

Suppression : exemple 20 3 25 3 9 21 28 8 13 6 SDC - Licence p.14/16

Suppression : exemple 16 8 18 4 10 24 2 6 9 12 11 On supprime le 16 SDC - Licence p.15/16

Suppression : exemple 16 8 18 4 10 24 2 6 9 12 11 SDC - Licence p.15/16

Suppression : exemple 16 8 18 4 10 24 2 6 9 12 11 SDC - Licence p.15/16

Suppression : exemple 16 8 18 4 10 24 2 6 9 12 11 SDC - Licence p.15/16

Suppression : exemple 12 8 18 4 10 24 2 6 9 11 SDC - Licence p.15/16

Suppression : coût Une suppression comporte donc un parcours d une unique branche, un éventuel échange de valeur, puis la suppression d un nœud possédant au maximum 1 successeur. SDC - Licence p.16/16

Suppression : coût Une suppression comporte donc un parcours d une unique branche, un éventuel échange de valeur, puis la suppression d un nœud possédant au maximum 1 successeur. Les deux dernières opérations peuvent être implémentées en Θ(1). SDC - Licence p.16/16

Suppression : coût Une suppression comporte donc un parcours d une unique branche, un éventuel échange de valeur, puis la suppression d un nœud possédant au maximum 1 successeur. Les deux dernières opérations peuvent être implémentées en Θ(1). La suppression a donc, comme les autres opérations, un coût maximal en Θ(log 2 n) si l arbre est équilibré. SDC - Licence p.16/16