Structures de données, IMA S6



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

INF601 : Algorithme et Structure de données

ARBRES BINAIRES DE RECHERCHE

Arbres binaires de recherche

Les arbres binaires de recherche

Quelques Algorithmes simples

Algorithmique, Structures de données et langage C

Algorithmes récursifs

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

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

Algorithmique et Programmation, IMA

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

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

L exclusion mutuelle distribuée

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

Quelques algorithmes simples dont l analyse n est pas si simple

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

Plan du cours : Zippers. Des fonctions sur les listes avec position. Des fonctions sur les listes avec position

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

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

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

Algorithmique et Programmation

Codage d information. Codage d information : -Définition-

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

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

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

chapitre 4 Nombres de Catalan

Chapitre 5 : Flot maximal dans un graphe

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

1 Recherche en table par balayage

STAGE IREM 0- Premiers pas en Python

MIS 102 Initiation à l Informatique

t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre :

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Excel Avancé. Plan. Outils de résolution. Interactivité dans les feuilles. Outils de simulation. La valeur cible Le solveur

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

Algorithmes de recherche

Initiation. àl algorithmique et à la programmation. en C

TP3 : Manipulation et implantation de systèmes de fichiers 1

Sommaire. Structure. Liste simplement chaînée ALGORITHME ET STRUCTURES DE DONNÉES II

Traduction des Langages : Le Compilateur Micro Java

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

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Théorie des Langages

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

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

Correction TD Algorithmique 5.3 Pile Liste 5.3 Pile

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Chapitre VI- La validation de la composition.

Université Bordeaux 1, Licence Semestre 3 - Algorithmes et struct...

Représentation d un entier en base b

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

Microprocesseur + Logiciel

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

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Licence Sciences et Technologies Examen janvier 2010

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Algorithmes d'apprentissage

Formats d images. 1 Introduction

Algorithmique et structures de données I

Continuité et dérivabilité d une fonction

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

M é ca n ism e Pr o lo g. Ex e m p le

Cours d initiation à la programmation en C++ Johann Cuenin

Initiation à la Programmation en Logique avec SISCtus Prolog

TD de supervision. J.P. Chemla. Polytech Tours Département productique 2ème année

Correction TD algorithmique

Styler un document sous OpenOffice 4.0

LES TOUT PREMIERS PAS

Limites finies en un point

Java Licence Professionnelle CISII,

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

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

données en connaissance et en actions?

Initiation à l algorithmique

Cours de Master Recherche

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

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

Seconde Généralités sur les fonctions Exercices. Notion de fonction.

Numbers sur ipad. Atelier Formation Numbers sur ipad. [Notes extraitres de l'aide en ligne]

Fondements de l informatique Logique, modèles, et calculs

Baccalauréat ES/L Métropole La Réunion 13 septembre 2013 Corrigé

EXCEL TUTORIEL 2012/2013

Recherche dans un tableau

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

Microsoft Excel. Tableur

La fonction exponentielle

Optimisation for Cloud Computing and Big Data

Les algorithmes de base du graphisme

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

Conventions d écriture et outils de mise au point

Etude comparative de différents motifs utilisés pour le lancé de rayon

Gestion mémoire et Représentation intermédiaire

Resolution limit in community detection

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

Arbres binaires de décision

Chapitre 3. Mesures stationnaires. et théorèmes de convergence

Conversion d un entier. Méthode par soustraction

Synthèse d'images I. Venceslas BIRI IGM Université de Marne La

Transcription:

Structures de données, IMA S6 Arbres Binaires d après un cours de N. Devésa, Polytech Lille. Laure Gonnord http://laure.gonnord.org/pro/teaching/ Laure.Gonnord@polytech-lille.fr Université Lille 1 - Polytech Lille Février 2011

Plan 1 Introduction aux arbres, premières définitions 2 Algorithmique classique sur les Arbres Binaires 3 Implémentation d un arbre binaire en C Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 2 / 27

Introduction aux arbres, premières définitions 1 Introduction aux arbres, premières définitions 2 Algorithmique classique sur les Arbres Binaires 3 Implémentation d un arbre binaire en C Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 3 / 27

Introduction aux arbres, premières définitions Introduction Jusqu à présent, on a vu : Les listes contiguës (tableaux). Les listes chaînées simples, doublement chaînées... Des variantes des listes : piles, files Pour l instant, aucune SD ne permet la hierarchie. Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 4 / 27

Introduction aux arbres, premières définitions Exemples classiques Quelques exemples classiques : Arbre généalogique Organigramme d une entreprise Table des matières d un livre Les expressions arithmétiques Un programme! Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 5 / 27

Introduction aux arbres, premières définitions Terminologie - 1 Dessin! Noeuds, racine, feuilles, arêtes Fils, père, frère Sous-arbre Branche, chemin Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 6 / 27

Introduction aux arbres, premières définitions Terminologie - 2 Niveau d un noeud : nombre d arêtes entre le noeud et la racine Hauteur d un arbre : niveau max des feuilles de l arbre Arbre ordonné (ordre entre chaque fils) Degré d un noeud : nombre de fils Arbre n-aire : les noeuds (hors feuilles) sont de degré n. Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 7 / 27

Introduction aux arbres, premières définitions Arbre Binaire - Définition Définition récursive d un arbre binaire (grammaire) : type Noeud type Arbre ::= Vide <Noeud,Arbre,Arbre> Dans <Noeud,Arbre,Arbre>, le premier arbre désigne le sous-arbre gauche (G) et le deuxième le sous-arbre droit (D). Exemple : expression arithmétique. Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 8 / 27

Introduction aux arbres, premières définitions Arbre Binaire - Déclaration et primitives Arbre Binaire dont les feuilles sont de type < T > : A : Arbre Binaire de T Primitives sur les arbres binaires (avec effets de bord) : initarbre(a) crée un arbre binaire (AB) vide A. estvide(a) teste si A est vide <T> valeur(a) retourne la valeur de la racine. Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 9 / 27

Introduction aux arbres, premières définitions Arbre Binaire - Primitives 2 Autres primitives ArbreBinaire getgauche(a) retourne le sous-arbre gauche (pas de copie) (de même AB getdroite(a)). putvaleur(a,v) range la valeur V (de type < T > à la racine de A. putdroite(a,d) : D devient le sous-arbre droit (de même putgauche). cons(r,g,d) construit l arbre < R, G, D >. Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 10 / 27

Algorithmique classique sur les Arbres Binaires 1 Introduction aux arbres, premières définitions 2 Algorithmique classique sur les Arbres Binaires 3 Implémentation d un arbre binaire en C Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 11 / 27

Algorithmique classique sur les Arbres Binaires Premières remarques On ne connait rien sur l implémentation, on utilise les primitives de base. Remarque : la structure récursive d un AB nous invite à écrire des fonctions récursives. Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 12 / 27

Algorithmique classique sur les Arbres Binaires AB = 1 feuille? Fonction estfeuille(ab) :Booléen D: ab : ArbreBinaire Si estvide(ab) alors Retourner faux Sinon Retourner estvide(getgauche(ab))et estvide(getdroite(ab)) Fsi FFonction Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 13 / 27

Algorithmique classique sur les Arbres Binaires Nombre de noeuds d un AB Algorithme récursif : Si ab = V ide : résultat = 0 Si ab =< R, G, D > : 1 + nb noeuds(g) + nb neuds (D). Fonction nbnoeuds(ab) :Entier D: ab : ArbreBinaire Si estvide(ab) alors Retourner 0 Sinon Retourner 1 + nbnoeuds(getgauche(ab))+nbnoeuds(getdroite(ab)) Fsi FFonction Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 14 / 27

Algorithmique classique sur les Arbres Binaires Hauteur d un AB Algorithme récursif : Si ab = V ide : résultat = 0 Si ab =< R, G, D > :? Fonction hauteurab(ab) :Entier FFonction Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 15 / 27

Algorithmique classique sur les Arbres Binaires Les Parcours - 1 But : Effectuer un traitement sur chacun des noeuds d un AB. Deux possibilités : Parcours en profondeur : récursif (ou pile!), 3 variantes. Parcours en largeur (à l aide d une file). les parcours en profondeur sont les plus simples à implémenter. Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 16 / 27

Algorithmique classique sur les Arbres Binaires Les Parcours - 2 Parcours en profondeur : Traitement de la racine Appel récursif sur chacun des sous-arbres L effet va dépendre de la place des appels récursifs. Préfixe : racine, gauche, droite a Infixe : gauche, racine, droite b e Suffixe (ou postfixé) : gauche, droite, racine c d (vide) f (vide) (vide) (vide) (vide) (vide) (vide) Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 17 / 27

Algorithmique classique sur les Arbres Binaires Les Parcours - 3 Parcours en profondeur suffixe pour l évaluation d une expression : Fonction evalexpr(ab) :Entier + * / 2 7 6 2 FFonction Attention! cet arbre n a pas le même type de noeuds. Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 18 / 27

Algorithmique classique sur les Arbres Binaires La Recherche - 1 Constat : Dans un arbre binaire classique, chercher un élément revient à le chercher dans le sous-arbre gauche ET le sous-arbre droit. Et si on triait? Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 19 / 27

Algorithmique classique sur les Arbres Binaires Définition d un ABR Définition récursive A =< R, G, D > est un arbre binaire de recherche (ABR) si : Tout noeud n g de G vérifie valeur(n g ) R Tout noeud n d de G vérifie R < valeur(n d ) G et D sont des ABR Remarque : on appelle aussi arbre ordonné. Les parcours : GRD (infixe) voit les valeurs par ordre croissant DRG voit les valeurs par ordre décroissant Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 20 / 27

Algorithmique classique sur les Arbres Binaires La Recherche - 2 Du coup, la recherche dans un ABR : Fonction rechercheelem(ab,elem) : Booléen D: ab : ArbreBinaire d entiers (ordonné) D: elem : Entier FFonction Coût de la recherche = hauteur de l arbre Techniques de constructions d ABR équilibrés Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 21 / 27

Algorithmique classique sur les Arbres Binaires Ajout dans un ABR - avec effet de bord Ajout(A,V) : Si A est vide? Si A =< R, G, D >? Action ajoutelem(ab,elem) D/R: ab : ArbreBinaire d entiers (ordonné) D: elem : Entier FAction Passage en D/R de ab (cf ajout dans une liste triée). Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 22 / 27

Algorithmique classique sur les Arbres Binaires D autres algorithmes/variations classiques ajout d un élément à la racine d un ABR arbres binaires équilibrés par construction : les AVL (cf http://fr.wikipedia.org/wiki/arbre_avl les tas : utilisation pour implémenter les files de priorité et aussi trier. Biblio : Chapitre 4 de http://www.enseignement.polytechnique. fr/profs/informatique/jean-jacques.levy/poly/ polyx-cori-levy.ps.gz Chapitres 12 et 13 de l excellent livre Introduction à l algorithmique (Cormen/Leseison/Rivest/Stein). Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 23 / 27

Implémentation d un arbre binaire en C 1 Introduction aux arbres, premières définitions 2 Algorithmique classique sur les Arbres Binaires 3 Implémentation d un arbre binaire en C Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 24 / 27

Implémentation d un arbre binaire en C Quelques implémentations classiques (en C) Suivant l usage, un AB peut être représenté par : Un chaînage (similaire à une liste chaînée, mais chaque noeud a deux fils) Un tableau qui stocke les noeuds, la racine à première position, les autres noeuds ont la position qu on veut. Un tableau où les noeuds ont une position définie à l avance. La racine est à la position 1. Le noeud à la position p est le père des noeuds des positions 2p et 2p + 1. Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 25 / 27

Implémentation d un arbre binaire en C Implémentation par chaînage - 1 type ArbreBinaire = pointeur de Noeud type Noeud = Structure val : <T> gauche : ArbreBinaire droit : ArbreBinaire FStruct Alors on a : estvide(a) : Retourner (A = NULL) initarbre(a) : A NULL Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 26 / 27

Implémentation d un arbre binaire en C Implémentation par chaînage - 2 Autres fonctions de base : valeur(a) : Retourner (A ).val) getgauche(a) : Retourner (A ).gauche) putvaleur(a,v)? cons(r,g,v)? Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Arbres (Binaires) Février 2011 27 / 27