Département Informatique Programmation objet. Cours n 8. Structures de données partie 3 Arbres binaires de calcul



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

Arbres binaires de recherche

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

chapitre 4 Nombres de Catalan

Algorithmique, Structures de données et langage C

Les arbres binaires de recherche

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

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

La Gestion de fichiers Supports réalisés avec OpenOffice.org 2.3 Writer. La Gestion de fichiers. Niveau : Débutant Auteur : Antonio da Silva

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

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

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

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

ARBRES BINAIRES DE RECHERCHE

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

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

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

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

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

Gestionnaire de procédure Guide rapide

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

INITIATION A LA PROGRAMMATION

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

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

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

Chapitre 7. Récurrences

Archivage Messagerie Evolution pour usage HTML en utilisant Hypermail

Ebauche Rapport finale

Introduction. Présentation de la plate-forme outils KB3

Algorithmes d'apprentissage

Comment retrouver le fichier "bingo" sauvegardé dans l'ordinateur? Socle commun

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

Théorie des Langages

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

Algorithmique I. Algorithmique I p.1/??

supérieure Vous ne connaissez pas le numéro de version de votre application?

Correction Code nécessaire à la compilation : let bs ="\\" let nl = "\n" ;; let appliquer = List.map ;; (* affichage d'un noeud *)

Cours d Algorithmique et de Langage C v 3.0

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

Réaliser un PUBLIPOSTAGE

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

CORRECTION EXERCICES ALGORITHME 1

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

UNIVERSITÉ DU QUÉBEC À MONTRÉAL

Machines Virtuelles. et bazard autour. Rémi Forax

@telier d'initiation

Formateur : Jackie DAÖN

TEXT MINING von 7

Programmation assembleur : aperçu

Programmation Classique en langage C


Instructions préliminaires P2WW FR Préface

Ce tutoriel ne fera pas de vous un expert sur le déploiement via WDS, mais il vous permettra de comprendre un peu les rouages de ce système.

TP N 57. Déploiement et renouvellement d une constellation de satellites

Date de diffusion : Rédigé par : Version : Mars 2008 APEM 1.4. Sig-Artisanat : Guide de l'utilisateur 2 / 24

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Gérer ses fichiers et ses dossiers avec l'explorateur Windows. Février 2013

Déclarer un serveur MySQL dans l annuaire LDAP. Associer un utilisateur DiaClientSQL à son compte Windows (SSO)

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

FICHE UE Licence/Master Sciences, Technologies, Santé Mention Informatique

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

Compte-rendu de projet de Système de gestion de base de données

Les différents types de données et leurs opérations de base

Déclarer un serveur MySQL dans l annuaire LDAP. Associer un utilisateur DiaClientSQL à son compte Windows (SSO)

Fascicule u7.05 : Impression de résultat pour visualisation

Algorithmique et Programmation

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

GOL-502 Industrie de services. Travaux Pratique / Devoir #7

Manuel d'utilisation: Gestion commerciale - CRM

CS 01 D/B2I/ CONSULTATION ET TRANSMISSION DE L INFORMA-

I. Introduction aux fonctions : les fonctions standards

INF601 : Algorithme et Structure de données

SpaceWISC Système de soumission sur le web pour les renseignements API soumis à la coordination

ITIL Gestion de la capacité

Conception de circuits numériques et architecture des ordinateurs

Introduction à MATLAB R

Exercices INF5171 : série #3 (Automne 2012)

Chapitre 10. Les interfaces Comparable et Comparator 1

Traitement de texte : Quelques rappels de quelques notions de base

1. Cliquez sur dans le coin supérieur gauche de l'écran 2. Sélectionnez la Langue de l'interface désirée 3. Cliquez sur

MPI Activité.10 : Logique binaire Portes logiques

GLPI (Gestion Libre. 2 ième édition. Nouvelle édition. de Parc Informatique)

LE PROBLEME DU PLUS COURT CHEMIN

Conventions d écriture et outils de mise au point

Cours sur Active Directory

SUPPORT DE COURS. Langage C

Cours de Programmation Impérative: Zones de mémoires et pointeurs

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

Bulletin Officiel de la Concurrence, de la Consommation et de la Répression des Fraudes

Stratégie de groupe dans Active Directory

Tout savoir sur le matériel informatique

Vers l'ordinateur quantique

Probabilités Loi binomiale Exercices corrigés

Symantec Enterprise Vault

YAPBA M. Logiciel libre de suivi de vos comptes

Introduction. I Étude rapide du réseau - Apprentissage. II Application à la reconnaissance des notes.

Quelques Algorithmes simples

Transcription:

Programmation objet Cours n 8 Structures de données partie 3 Arbres binaires de calcul 1

Arbre binaire de calcul Nous avons vu l'utilisation des arbres binaires en tant que structure de données optimisée pour la recherche par valeur sur un critère "binaire". La même structure peut également être utilisée dans un autre cas : Un calcul d'expression mathématiques On parle dans ce cas d'arbre binaire de calcul. La structure est identique, mais son fonctionnement est différent. 2

Principe Lorsqu'on effectue un calcul, on effectue en fait une suite d'opérations Chaque opération utilise deux opérandes Chaque opération fournit un résultat qui peut être utilisé pour une autre opération. On remarque donc que l'ensemble de l'expression de calcul peut se modéliser dans un arbre binaire où les feuilles seront les opérandes et les racines les opérations... 3

Exemple Soit le calcul : 6 3 + 4 2-2 Le calcul peut se modéliser par l'arbre binaire suivant : - + 2 6 3 4 2 4

Exemple d'implémentation C++ class arbre_calcul { enum type_operation {aucun=0,plus='+', moins='-', mult='', div='/'}; struct feuille { type_operation Operateur; double Operande; feuille f_gauche; feuille f_droite; double Valeur() const; }; typedef feuille pfeuille; pfeuille racine; double Valeur() const; Département Informatique 5

Effectuer le calcul En utilisant un algorithme récursif, effectuer le calcul est simple. En effet, la valeur d'une racine (d'un sous-arbre) se déduit directement : De l'opérateur contenu dans la racine De la valeur de l'opérande gauche De la valeur de l'opérande droite On voit bien que l'on a besoin d'une méthode Valeur() qui va renvoyer : Soit la valeur contenue dans la feuille si c'est un nombre Soit le résultat d'un calcul si c'est un opérateur 6

double arbre_calcul::valeur() const { double val=0; if(racine) val = racine->valeur(); return val; } La récursivité nous permet le parcours simple de l'arborescence double feuille::valeur() const { double val=0; switch(operateur) { case aucun: val=operande; break; case plus: val=gauche->valeur() + droite->valeur();break; //... return val; } 7

Le "lancement" du calcul est donc extrêmement simple, du fait de la structure de l'arbre binaire et de l'utilisation d'un algorithme récursif pour Valeur() La création de l'arbre est un peu plus complexe, il faut bien évidemment gérer les priorités relatives des 4 opérateurs. Si l'on souhaite gérer des parenthèses, la création de l'arbre se complexifie d'avantage, mais pas le calcul. En effet, une expression entre parenthèses est un sous-arbre. 8

Algorithmes d'ajout (sans parenthèses) Une expression commence obligatoirement par une opérande. Se trouve ensuite un enchaînement opérateur-opérande L'opérateur joue un rôle de "pivot" dans l'analyse de l'expression Suivant celui-ci, sa priorité par rapport au précédent, l'ajout dans l'arbre ne se fera pas de la même manière. Priorité + - / + = = < < - = = < < > > = = / > > = = 9

103-2 Cas n 1 : ajout à priorité inférieure On ajoute le nouvel opérateur comme une racine et on prend l'ancien à gauche et l'opérande à droite 10 3-2 10 3 10

Cas n 2 : ajout à priorité supérieure 10 + 43 10 + 4 On remplace la feuille de droite par le nouvel opérateur, qui prendra à gauche l'ancienne opérande et à droite la nouvelle opérande + 10 4 3 11

Cas 3 : ajout à priorité égale 3 + 4-2 La cas est identique au cas n 1 + - 3 4 + 2 3 4 12

Gestion des parenthèses 3(4+2(1-142)) Le principal problème avec les parenthèses est la détection des sous-expressions complètes. On remarque que l'ouverture d'une parenthèse démarre une expression (donc un sous-arbre) et que la fermeture la termine. La première parenthèse fermante correspond à la dernière parenthèse ouvrante : on remarque que l'utilisation d'une pile peut simplifier la gestion des parenthèses pour la construction de l'arbre... 13

3(4+2(1-142)) On empile la suite de l'expression 3 + 4-2 Puis on dépile, et on relie les feuilles droites. 1 14 2 14

Prochain cours : Structures de données partie 4 arbres non binaires tables de hachage Bonnes vacances! 15