ARBRES BINAIRES DE RECHERCHE



Documents pareils
Les arbres binaires de recherche

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

Les structures de données. Rajae El Ouazzani

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

INF601 : Algorithme et Structure de données

Quelques Algorithmes simples

Arbres binaires de recherche

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

Algorithmique, Structures de données et langage C

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

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

Algorithmique I. Algorithmique I p.1/??

Groupe Eyrolles, 2004 ISBN :

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

MÉTHODOLOGIE PROJET SYSTÈME D INFORMATION DÉCISIONNEL BI - BUSINESS INTELLIGENCE. En résumé :

Algorithmique et Programmation

MIS 102 Initiation à l Informatique

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

Quelques algorithmes simples dont l analyse n est pas si simple

ITIL. optimal. pour un service informatique. 2 e édition C H R I S T I A N D U M O N T. Préface de Patrick Abad

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Algorithmes d'apprentissage

1 Recherche en table par balayage

L exclusion mutuelle distribuée

Théorie et codage de l information

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

STATUTS DE L ASSOCIATION DE L ESPACE DE VIE ENFANTINE LES MOUSSAILLONS

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

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

Ordre du jour provisoire pour la COP12

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Groupe Eyrolles, 2006, ISBN :

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

affectation après la classe de

UE C avancé cours 1: introduction et révisions

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

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

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

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

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

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

Logiciel Libre Cours 3 Fondements: Génie Logiciel

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Algorithmes récursifs

L EAI. par la pratique. François Rivard. Thomas Plantain. Groupe Eyrolles, 2003 ISBN :

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

BACCALAURÉAT GÉNÉRAL SESSION 2012 OBLIGATOIRE MATHÉMATIQUES. Série S. Durée de l épreuve : 4 heures Coefficient : 7 ENSEIGNEMENT OBLIGATOIRE

DNS : Domaine Name System

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

Gestion de Stock sous Excel (GSE) Version 1.5.2

Education à l'orientation

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

Continuité et dérivabilité d une fonction

Nouvelles propositions pour la résolution exacte du sac à dos multi-objectif unidimensionnel en variables binaires

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

ÉPREUVE COMMUNE DE TIPE Partie D

avast! EP: Installer avast! Small Office Administration

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

4. Les structures de données statiques

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

Serveurs de noms Protocoles HTTP et FTP

Virtualisation. du poste de travail Windows 7 et 8. avec Windows Server 2012

Algorithmique et Programmation, IMA

Qu est-ce que l analyse des données qualitatives? TAMS Analyzer n est: Projets collaboratifs. TAMS Analyzer permet:

DNS ( DOMAIN NAME SYSTEM)

La classification automatique de données quantitatives

Parallélisme et Répartition

Table des matières. Le long terme Partie II. Introduction Liste des figures... Liste des tableaux...

EXCEL TUTORIEL 2012/2013

Arbres binaires de décision

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.

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

Liste des règles 1. Texte original. (Etat le 1 er septembre 2008)

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Sur un ordinateur exécutant Windows 2000 Server Ayant une adresse IP statique

Chapitre 5 : Flot maximal dans un graphe

Tel : Fax :

Le modèle de données

Cours de Master Recherche

Objets Combinatoires élementaires

Cours Excel : les bases (bases, texte)

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

(Enregistré sous le n à la préfecture de Paris en date du 3 juillet 2012)

1 CRÉER UN TABLEAU. IADE Outils et Méthodes de gestion de l information

Initiation à la Programmation en Logique avec SISCtus Prolog

BSM 9.0 ESSENTIALS. Nouveaux utilisateurs de Business Service Management (BSM) 9.0, parmi lesquels :

Licence Sciences et Technologies Examen janvier 2010

Application 1- VBA : Test de comportements d'investissements

Les différents types de relation entre les tables

Les deux points les plus proches

PROJECT AVEC MICROSOFT RÉUSSIR SES PROJETS. pour planifier, piloter et communiquer APPLICATIONS & MÉTIERS

COMMUNICATION TECHNIQUE N TCV060 Ed. 01. OmniVista 4760 Nb de pages : 18 Date : URGENTE NON URGENTE TEMPORAIRE DEFINITIVE

COUCHE 7/OSI : TRANSFERT DE FICHIERS FTAM

Calculabilité Cours 3 : Problèmes non-calculables.

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Transcription:

ARBRES BINAIRES DE RECHERCHE

Table de symboles Recherche : opération fondamentale données : éléments avec clés Type abstrait d une table de symboles (symbol table) ou dictionnaire Objets : ensembles d objets avec clés typiquement : clés comparables (abstraction : nombres naturels) Opérations : insert(x, D) : insertion de l élément x dans D search(k, D) : recherche d un élément à clé k (peut être infructeuse) Opérations parfois supportées : delete(k, D) : supprimer élément avec clé k select(i, D) : sélection de l i-ème élément (selon l ordre des clés) i

Structures de données structures simples : tableau trié ou liste chaînée arbre binaire de recherche tableau de hachage (plus tard) ii

Structures simples liste chaînée ou tableau non-trié : recherche séquentielle temps de Θ(n) au pire (même en moyenne) tableau trié : recherche binaire temps de Θ(log n) au pire tableau trié : insertion/suppression en Θ(n) au pire cas iii

Arbre binaire de recherche Dans un arbre binaire de recherche, chaque nœud a une clé. Accès aux nœuds : gauche(x) et droit(x) pour les enfants de x (null s il n y en a pas) parent(x) pour le parent de x (null pour la racine) cle(x) pour la clé de nœud x (en général, un entier dans nos discussions) Déf. Un arbre binaire est un arbre de recherche ssi les nœuds sont énumerés lors d un parcours infixe en ordre croissant de clés. Thm. Soit x un nœud dans un arbre binaire de recherche. Si y est un nœud dans le sous-arbre gauche de x, alors cle(y) cle(x). Si y est un nœud dans le sous-arbre droit de x, alors cle(y) cle(x). iv

Arbre binaire de recherche exemple 9 6 12 3 8 11 15 1 4 7 19 v

Arbre binaire de recherche (cont) À l aide d un arbre de recherche, on peut implémenter une table de symboles d une manière très efficace. Opérations : recherche d une valeur particulière, insertion ou suppression d une valeur, recherche de min ou max, et des autres. Pour la discussion des arbres binaires de recherche, on va considérer les pointeurs null pour des enfants manquants comme des pointeurs vers des feuilles ou nœuds externes Donc toutes les feuilles sont null et tous les nœuds avec une valeur cle() sont des nœuds internes. vi

Min et max Algo MIN() // trouve la valeur minimale dans l arbre 1 x racine; y null 2 tandis que x null faire 3 y x; x gauche(x) 4 retourner y Algo MAX() // trouve la valeur maximale dans l arbre 1 x racine; y null 2 tandis que x null faire 3 y x; x droit(x) 4 retourner y vii

Recherche Algo SEARCH(x, v) // trouve la clé v dans le sous-arbre de x F1 si x = null ou v = cle(x) alors retourner x F2 si v < cle(x) F3 alors retourner SEARCH(gauche(x), v) F4 sinon retourner SEARCH(droit(x), v) Maintenant, SEARCH(racine, v) retourne - soit un nœud dont la clé est égale à v, - soit null. Notez que c est une recursion terminale transformation en forme itérative viii

Recherche (cont) Solution itérative (plus rapide) : Algo SEARCH(x, v) // trouve la clé v dans le sous-arbre de x F1 tandis que x null et v cle(x) faire F2 si v < cle(x) F3 alors x gauche(x) F4 sinon x droit(x) F5 retourner x ix

Recherche efficacité Dans un arbre binaire de recherche de hauteur h : MIN() prend O(h) MAX() prend O(h) SEARCH(racine, v) prend O(h) x

Insertion On veut insérer une clé v Idée : comme en SEARCH, on trouve la place pour v (enfant gauche ou droit manquant) 9 6 12 3 8 11 15 1 4 7 19 14 insertion de «14» xi

Insertion (cont.) insertion pas de clés dupliquées Algo INSERT(v) // insère la clé v dans l arbre I1 x racine I2 si x = null alors initialiser avec une racine de clé v et retourner I3 tandis que vrai faire // (conditions d arrête testées dans le corps) I4 si v = cle(x) alors retourner // (pas de valeurs dupliquées) I5 si v < cle(x) I6 alors si gauche(x) = null I7 alors attacher nouvel enfant gauche de x avec clé v et retourner I8 sinon x gauche(x) I9 sinon si droit(x) = null I10 alors attacher nouvel enfant droit de x avec clé v et retourner I11 sinon x droit(x) xii

Suppression Suppression d un nœud x 1. triviale si x est une feuille : gauche(parent(x)) null si x est l enfant gauche de son parent, ou droit(parent(x)) null si x est l enfant droit 2. facile si x a seulement un enfant : gauche(parent(x)) droit(x) si x a un enfant droit et il est l enfant gauche (4 cas en total dépendant de la position de x et celle de son enfant) 3. un peu plus compliqué si x a deux enfants xiii

Suppression deux enfants 9 (1) pour supprimer ce nœud x, on cherche un autre qui peut le remplacer 6 12 3 8 11 15 1 4 7 13 19 (2) pour le remplacement, on peut utiliser le successeur de x c'est le min dans le sous-arbre droit 14 Lemme Le nœud avec la valeur minimale dans le sous-arbre droit de x n a pas d enfant gauche. xiv

Insertion et suppression efficacité Dans un arbre binaire de recherche de hauteur h : INSERT(v) prend O(h) suppression d un nœud prend O(h) xv

Hauteur de l arbre Toutes les opérations prendent O(h) dans un arbre de hauteur h. Arbre binaire complet : 2 h+1 1 nœuds dans un arbre de hauteur h, donc hauteur h = lg(n + 1) 1 pour n nœuds est possible. Insertion successive de 1, 2, 3, 4,..., n donne un arbre avec h = n 1. Est-ce qu il est possible d assurer que h O(log n) toujours? Réponse 1 [randomisation] : la hauteur est de O(log n) en moyenne (permutations aléatoires de {1, 2,..., n}) Réponse 2 [optimisation] : la hauteur est de O(log n) en pire cas pour beaucoup de genres d arbres de recherche équilibrés : arbre AVL, arbre rouge-noir, arbre 2-3-4 (exécution des opérations est plus sophistiquée mais toujours O(log n)) Réponse 3 [amortisation] : exécution des opérations est O(log n) en moyenne (coût amortisé dans séries d opérations) pour des arbres splay xvi

Performance moyenne Thm. Hauteur moyenne d un arbre de recherche construit en insérant les valeurs 1, 2,..., n selon une permutation aléatoire est α lg n en moyenne où α 2.99. (preuve trop compliquée pour les buts de ce cours) On peut analyser le cas moyen en regardant la profondeur moyenne d un nœud dans un tel arbre de recherche aléatoire : le coût de chaque opération dépend de la profondeur du nœud accédé dans l arbre. Déf. Soit D(n) la somme des profondeurs des nœuds dans un arbre de recherche aléatoire sur n nœuds. On va démontrer que D(n) n O(log n). (Donc le temps moyen d une recherche fructueuse est en O(log n).) xvii

Performance moyenne (cont.) Lemme. On a D(0) = D(1) = 0, et D(n) = n 1 + 1 n = n 1 + 2 n n 1 ( i=0 n 1 i=0 D(i) + D(n 1 i) D(i). Preuve. (Esquissé) i + 1 est la racine, somme des profondeurs = (n-1)+somme des profondeurs dans le sous-arbre gauche +somme des profondeurs dans le sous-arbre droit. D ici, comme l analyse de la performance du tri rapide... (en fait, chaque ABR correspond à une exécution de tri rapide : pivot du soustableau comme la racine du sous-arbre) ) xviii

Arbres équilibrés Arbres équilibrés : on maintient une condition qui assure que les sous-arbres ne sont trop différents à aucun nœud. Si l on veut maintenir une condition d équilibre, il faudra travailler un peu plus à chaque (ou quelques) opérations... mais on veut toujours maintenir O(log n) par opération xix

Balancer les sous-arbres Méthode : rotations (gauche ou droite) préservent la propriété des arbres de recherche et prennent seulement O(1) y Rotation droite à y Rotation gauche à x x x C A y A B B C xx