Cours 4 : Les arbres binaires. Définition Implémentation Manipulation

Documents pareils
Les structures de données. Rajae El Ouazzani

Les arbres binaires de recherche

ARBRES BINAIRES DE RECHERCHE

Quelques Algorithmes simples

INF601 : Algorithme et Structure de données

Programmation par contraintes. Laurent Beaudou

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

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

MIS 102 Initiation à l Informatique

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

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

Programmation Par Contraintes

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

Chapitre 5 : Flot maximal dans un graphe

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

Rappel sur les bases de données

BIRT (Business Intelligence and Reporting Tools)

Cours de Master Recherche

Algorithmique, Structures de données et langage C

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

Serveurs de noms Protocoles HTTP et FTP

Le langage SQL Rappels

Algorithmes de recherche

145A, avenue de Port Royal, Bonaventure (Québec) G0C 1E0 Sans frais :

Utilisez Toucan portable pour vos sauvegardes

Techniques d interaction dans la visualisation de l information Séminaire DIVA

Compétences en fin de maternelle Comparer des quantités.

Eteindre. les. lumières MATH EN JEAN Mme BACHOC. Elèves de seconde, première et terminale scientifiques :

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Algorithmique et Programmation

GUIDE D UTILISATION DU BROWSER DE BEYOND 20/20

Algorithmes récursifs

Organigramme / Algorigramme Dossier élève 1 SI

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

Fiche pédagogique : ma famille et moi

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

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

La Clé informatique. Formation Internet Explorer Aide-mémoire

Formation des collecteurs de traces. Récupération des traces

La mémoire. Un ordinateur. L'octet. Le bit

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Continuité et dérivabilité d une fonction

RECUPEREZ DES FICHIERS SUPPRIMES AVEC RECUVA

Initiation à la Programmation en Logique avec SISCtus Prolog

Coup de Projecteur sur les Réseaux de Neurones

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

A. Définition et formalisme

Info0804. Cours 6. Optimisation combinatoire : Applications et compléments

Chapitre 7. Récurrences

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/ Présentation. 1.2 Ressources

Commencer avec doo sous OS X

Stopack : logiciel pour l entrepôt

4 Exemples de problèmes MapReduce incrémentaux

Gestion du parc informatique des collèges du département du Cher. Manuel d utilisation de la solution de gestion de Parc

chapitre 4 Nombres de Catalan

Arbres binaires de recherche

Contrainte de flot pour RCPSP avec temps de transfert

L apprentissage automatique

Modes Opératoires WinTrans Mai 13 ~ 1 ~

Atelier «personnaliser l environnement de l ordinateur mai 2015

INTRODUCTION AU DATA MINING

Poste 4 le montage. Le montage

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

Travaux pratiques avec RapidMiner

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

1.1 L EXPLORATEUR WINDOWS

Atelier Travailler vos photos Mars 2015

enquête pour les fautes sur le fond, ce qui est graves pour une encyclopédie.

Programmation C. Apprendre à développer des programmes simples dans le langage C

Tâche complexe produite par l académie de Clermont-Ferrand. Mai 2012 LE TIR A L ARC. (d après une idée du collège des Portes du Midi de Maurs)

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

«Dire et écrire» pour réaliser une composition en travail collaboratif en géographie. Agnès Dullin, lycée J. Racine 20 rue du Rocher, Paris

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

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

BAREME sur 40 points. Informatique - session 2 - Master de psychologie 2006/2007

Intelligence Artificielle Planification

Améliorez votre référencement

Qu est-ce qu un outil de travail collaboratif Google Drive?

Mode d emploi Accès & consultation des certificats d étalonnage MES PV EN LIGNE

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

LE PROBLEME DU PLUS COURT CHEMIN

Système d automation TROVIS 6400 Régulateur compact TROVIS 6493

(Mis à jour : 7 déc. 12)

Optimisation Combinatoire (Méthodes approchées) II. Recherche Locale simple (Les bases)

Big Data et Graphes : Quelques pistes de recherche

Recherche dans un tableau

Fiche- action n Titre Utiliser les jeux sérieux Le marché

DNS : Domaine Name System

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

Réparer un disque dur passé en RAW

Licence Sciences et Technologies Examen janvier 2010

COURS WINDEV NUMERO 3

Chapitre 1 I:\ Soyez courageux!

L exclusion mutuelle distribuée

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

Par combien de zéros se termine N!?

FORMATIONS INFORMATIQUE

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Guide utilisateur des services WASATIS (Manuel Version 1.1)

Connexion sur REDLION G-308 avec le modem GSM GDW-11 pour envoi de SMS

Transcription:

Cours 4 : Les arbres binaires Définition Implémentation Manipulation

Définition Un arbre binaire est un arbre qui possède au maximum deux sous-arbres (d où le binaire) 2013-2014 Algorithmique 2

Deux implémentations Version itérative possibles Un arbre binaire est constitué de nœuds Chaque nœud «pointe» vers deux nœuds de l étage inférieur Version récursive Un arbre binaire peut être vide Un arbre binaire possède un nœud (étiqueté ou pas) Un arbre binaire possède deux sous-arbres «fils» 2013-2014 Algorithmique 3

Utilisation Enormément d applications, que ce soit dans le domaine informatique ou pas : Expressions mathématiques : 3 + 2*5-4 + 4 3 * 2 5 2013-2014 Algorithmique 4

Autres exemples Résultats d un tournoi à élimination directe (tennis par exemple) Arborescence de si-alors-sinon (voir les arbres de décision pour les tris vus à la première séance) 2013-2014 Algorithmique 5

Un peu de vocabulaire Un arbre est constitué de nœuds (ou sommets) Ces sommets sont reliés par des arcs (ou arêtes) orientés : père fils Il existe dans tout arbre un nœud qui n est le point d arrivée d aucun arc : c est la racine 2013-2014 Algorithmique 6

Un peu de vocabulaire (2) Tout autre nœud est la racine d un sous-arbre de l arbre principal Un nœud qui n est le point de départ d aucun arc est appelé feuille Pour les arbres binaires, on distinguera de façon visuelle le fils gauche du fils droit 2013-2014 Algorithmique 7

Un exemple racine + 4 3 * feuilles sommets 2 5 2013-2014 Algorithmique 8

Un exemple sous-arbre gauche de sous-arbre droit de + 4 3 * 2 5 2013-2014 Algorithmique 9

Un peu de vocabulaire (3) La hauteur d un nœud est la longueur du plus long chemin de ce nœud aux feuilles qui en dépendent plus 1 C est le nombre de nœuds du chemin La hauteur d un arbre est la hauteur de sa racine L arbre vide a une hauteur 0 L arbre réduit à une racine étiqueté a une hauteur 1 2013-2014 Algorithmique 10

Un peu de vocabulaire (4) La profondeur d un nœud est le nombre de nœuds du chemin qui va de la racine à ce nœud La racine d un arbre est à une profondeur 0 La profondeur d un nœud est égale à la profondeur de son père plus 1 Si un nœud est à une profondeur p, tous ses fils sont à une profondeur p+1 Tous les nœuds d un arbre de même profondeur sont au même niveau 2013-2014 Algorithmique 11

Premier traitement sur un L affichage arbre Trois façons d afficher Préfixe Infixe Postfixe 2013-2014 Algorithmique 12

Affichages Préfixe : On affiche la racine, puis le sous-arbre gauche, puis le sous-arbre droit Infixe : On affiche le sous-arbre gauche, puis la racine, puis le sous-arbre droit Postfixe : On affiche le sous-arbre gauche, puis le sous-arbre droit, puis la racine 2013-2014 Algorithmique 13

Un exemple 1 2 3 4 5 6 2013-2014 Algorithmique 14

Résultats Préfixe : 1 2 4 3 5 6 Infixe : 4 2 1 5 6 3 Postfixe 4 2 6 5 3 1 2013-2014 Algorithmique 15

Deuxième traitement Recherche d un élément Au moins deux façons de faire : DFS : Depth-First Search ou recherche en profondeur d abord BFS : Breadth-First Search ou recherche en largeur d abord 2013-2014 Algorithmique 16

DFS en détail DFS : On cherche à la racine S il n y est pas : On cherche dans le fils gauche Puis s il n était pas dans le fils gauche, on cherche dans le fils droit Idée : explorer à fond chaque branche avant de passer à la suivante On s arrête quand on a trouvé ou qu il n y a plus de branches à explorer 2013-2014 Algorithmique 17

Réflexions On reconnaît encore une fois un fonctionnement récursif Problème : si l élément est dans le sous arbre droit de la racine, on va quand même explorer tout le sous-arbre de gauche 2013-2014 Algorithmique 18

Exemples 1 2 3 4 5 7 6 2013-2014 Algorithmique 19

Avec DFS : on cherche 4 Racine = 1 non On explore le fils gauche Racine = 2 non On explore le fils gauche Racine = 4 TROUVÉ 2013-2014 Algorithmique 20

Avec DFS (2) : on cherche 3 Racine = 1 non On explore le fils gauche Racine = 2 non On explore le fils gauche Racine = 4 non Pas de fils Pas de fils droit On explore le fils droit Racine = 3 TROUVÉ 2013-2014 Algorithmique 21

BFS en détail BFS : On cherche à la racine Si l élément n y est pas : On cherche dans les nœuds de profondeur 1 S il n est pas dans à la profondeur 1, on cherche à la profondeur 2 Etc 2013-2014 Algorithmique 22

Réflexions Plutôt un fonctionnement itératif On va avoir besoin d une file FIFO (ou autre structure équivalente) pour stocker les nœuds à explorer : On ne peut pas «sauter» d un nœud de profondeur p à un autre Il faut se souvenir de la liste des nœuds à traiter 2013-2014 Algorithmique 23

Fonctionnement de la file Au début, la file contient l arbre principal Si la valeur n est pas à la racine du premier arbre de la file On supprime l arbre de la file On ajoute ses deux sous-arbre en fin de file s ils ne sont pas vides Et on explore l arbre suivant, qui est le premier de la file On s arrête quand on a trouvé ou que la file est vide 2013-2014 Algorithmique 24

Exemples 1 2 3 4 5 7 6 2013-2014 Algorithmique 25

Avec BFS : on cherche 3 File = [arbre «1»] Valeur de la racine = 1 non On enlève l arbre «1» et on ajoute ses deux sous-arbres File = [sous-arbre gauche de «1», sous-arbre droit de «1»] On explore le premier : racine = 2 non On l enlève et on ajoute ses sous-arbres File= [sous-arbre droit de «1», sous-arbre gauche de «2»] On explore le premier : racine = 3 TROUVÉ 2013-2014 Algorithmique 26

Avec BFS (2) : on cherche 4 File = [arbre «1»] Valeur de la racine = 1 non On enlève l arbre «1» et on ajoute ses deux sous-arbres File = [s.-a. gauche de «1», s.-a. droit de «1»] On explore le premier : racine = 2 non On l enlève et on ajoute ses deux sous-arbres File = [s.-a. droit de «1», s.-a. gauche de «2»] On explore le premier : racine = 3 non On l enlève et on ajoute ses deux sous-arbres File = [s.-a. gauche de «2», s.-a. gauche de «3», s.-a. droit de «3»] On explore le premier : racine = 4 TROUVÉ 2013-2014 Algorithmique 27

Comparatif Avec DFS, on n a besoin d aucun stockage en plus mais on peut s attarder trop longtemps dans une branche Avec BFS, on fonctionne par profondeur incrémentale donc on évite le piège mais on a besoin d un stockage dont la taille augmente à chaque étape 2013-2014 Algorithmique 28

Les ABR On voit que la recherche dans les arbres binaires est peu aisée Autre problème : où ajouter un élément? Solution : les ABR ou arbres binaires de recherche 2013-2014 Algorithmique 29

Définition Un arbre binaire de recherche (ABR) est un arbre binaire dans lequel chaque nœud possède une clé telle que chaque nœud du sous-arbre gauche possède une clé inférieure ou égale à celle du nœud considéré chaque nœud du sous-arbre droit possède une clé supérieure ou égale à celle-ci (on pourra interdire ou non des clés de valeur égale) 2013-2014 Algorithmique 30

Pourquoi les problèmes sont-ils réglés? Pour la recherche : à partir de la racine, on sait si on doit explorer le fils gauche ou le fils droit DFS devient très efficace Pour l ajout, le nouveau nœud ajouté devient une feuille Ici aussi il suffit de faire une DFS en descendant systématiquement à droite ou à gauche suivant qu on est inférieur ou supérieur à la racine 2013-2014 Algorithmique 31

Et si on veut supprimer Si c est une feuille Facile, rien à faire On garde un ABR un nœud? Sinon si c est un nœud avec un seul s.-a. On le remplace par son sous-arbre Sinon On lui donne la valeur minimale de son sousarbre droit et on supprime ce nœud (récursif) 2013-2014 Algorithmique 32

Exemple 3 2 6 1 4 7 On supprime 5 5 2013-2014 Algorithmique 33

On supprime 5 3 2 6 1 4 7 2013-2014 Algorithmique 34

Exemple 3 2 6 1 4 7 On supprime 2 5 2013-2014 Algorithmique 35

On supprime 2 3 1 6 4 7 5 2013-2014 Algorithmique 36

Exemple 3 2 6 1 4 7 On supprime 3 5 2013-2014 Algorithmique 37

On supprime 3 43 2 6 1 4 5 7 5 2013-2014 Algorithmique 38