Plan du cours. Les arbres (III) Implémentation en Pascal Recherche. Nour-Eddine Oussous, Éric Wegrzynowski. 30 novembre 2009

Documents pareils
Les arbres binaires de recherche

Arbres binaires de recherche

Les structures de données. Rajae El Ouazzani

Quelques Algorithmes simples

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Raisonnement probabiliste

Application 1- VBA : Test de comportements d'investissements

Organigramme / Algorigramme Dossier élève 1 SI

.NET - Classe de Log

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

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

L ALGORITHMIQUE. Algorithme

Algorithmique & programmation

TRIGONOMETRIE Algorithme : mesure principale

Recherche dans un tableau

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

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

DG-ADAJ: Une plateforme Desktop Grid

Chapitre 7. Récurrences

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Initiation à l algorithmique

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

ARBRES BINAIRES DE RECHERCHE

1. Structure d'un programme FORTRAN 95

Examen Médian - 1 heure 30

Programmation Visual Basic. Visite guidée d'un programme Visual Basic 6.0

L exclusion mutuelle distribuée

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

Résolution de systèmes linéaires par des méthodes directes

Théorie et codage de l information

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

Licence Sciences et Technologies Examen janvier 2010

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Introduction à MATLAB R

1 Recherche en table par balayage

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

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

Programmation linéaire

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Activité 11 : Nuage de points ou diagramme de dispersion

Manuel de validation Fascicule v4.25 : Thermique transitoire des structures volumiques

EES : Engineering Equation Solver Fiche récapitulative - Marie-Sophie Cabot

Classes et Objets en Ocaml.

Cours de Génie Logiciel

Corrigé des TD 1 à 5

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

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

Compilation (INF 564)

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

INF601 : Algorithme et Structure de données

Coup de Projecteur sur les Réseaux de Neurones

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

COURS ALGORITHMIE. Mathématiques. Le monde merveilleux des algorithmes!! Croyez-moi, vous allez les adorer. Julien Bordas T.S 3

Conventions d écriture et outils de mise au point

Cours Informatique Master STEP

AWS avancé. Surveiller votre utilisation d EC2

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Simulation de variables aléatoires

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

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

CCP PSI Mathématiques 1 : un corrigé

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Algorithmique et programmation : les bases (VBA) Corrigé

Backtracking asynchrone agile pour les problèmes de satisfaction de contraintes distribués

Équations non linéaires

Chapitre 3. Les distributions à deux variables

Introduction aux algorithmes répartis

CAC: Un algorithme d arc-consistance. configurable, générique et adaptatif.

Cryptographie. Cours 3/8 - Chiffrement asymétrique

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Cours d algorithmique pour la classe de 2nde

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

KL5121. Pour activer des sorties en fonction de la position d'un codeur

MIS 102 Initiation à l Informatique

Qualité du logiciel: Méthodes de test

Objets Combinatoires élementaires

Algorithmes de recherche d itinéraires en transport multimodal

Propagation sur réseau statique et dynamique

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Contexte. Pour cela, elles doivent être très compliquées, c est-à-dire elles doivent être très différentes des fonctions simples,

Analyse des Systèmes Asservis

Ordonnancement temps réel

# 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>

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

Algorithmique, Structures de données et langage C

Algorithmes pour la planification de mouvements en robotique non-holonome

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

Algorithmique et Programmation, IMA

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

INITIATION AU LOGICIEL SAS

Chapitre 10. Les interfaces Comparable et Comparator 1

Vérification de programmes et de preuves Première partie. décrire des algorithmes

Introduction à la programmation concurrente

Rappels sur les suites - Algorithme

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Cryptographie RSA. Introduction Opérations Attaques. Cryptographie RSA NGUYEN Tuong Lan - LIU Yi 1

Transcription:

Nour-Eddine Oussous, Éric Wegrzynowski Plan du cours Algorithmes sur les arbres binaires Arbres binaires ordonnés 0 novembre 009 recherche : E AB(E) Booleen { Vrai si e a e, a Faux sinon recherche(, <; <; ; >; >) = Vrai recherche(, <; <; ; >; >) = Faux Recherche // recherche (e,a) = VRAI si e a // FAUX sinon function recherche ( e : ELEMENT ; a : ARBRE ) : BOOLEAN ; if estarbrevide ( a) then recherche := false else if racine ( a)= e then recherche := true else recherche := recherche (e, gauche (a)) or recherche (e, droit (a )); end { recherche };

Coût de la recherche c(a) = nombre de tests de la condition estarbrevide(a). meilleur cas : e se trouve à la racine, on fait un seul test pire cas : e n est pas dans l arbre ou se trouve dans la dernière feuille, c(a) est linéaire en n Définition On suppose que l ensemble E des étiquettes des nœuds des arbres est un ensemble totalement ordonné par une relation notée. Définition Un arbre A AB(E) est ordonné si. il est vide, A =. ou bien, il ne l est pas, A = <e; g; d >, et il vérifie les quatre conditions suivantes g est un arbre binaire ordonné ; d est un arbre binaire ordonné ; e est inférieur ou égal à toutes les étiquettes de d ; e est supérieur ou égal à toutes les étiquettes de g ; L ensemble des arbres binaires ordonnés est noté ABO(E). 4 5 9 9 5 4

Propriété caractéristique Théorème Soit A AB(E) un arbre binaire. A est un arbre binaire ordonné si et seulement si la liste des étiquettes des nœuds dans l ordre infixé est une liste triée dans l ordre croissant. rechercheabo : E ABO(E) Booleen { Vrai si e a e, a Faux sinon rechercheabo(, ;<; <; ; >; <; ; >> <4; ; <5; ; <9; ; >>> = Vrai rechercheabo(6, ;<; <; ; >; <; ; >> <4; ; <5; ; <9; ; >>> = Faux Recherche dans ABO // rechercheabo (e,a) = VRAI si e a // FAUX sinon function rechercheabo ( e : ELEMENT ; a : ARBRE ) : BOOLEAN ; if estarbrevide ( a) then rechercheabo := false else if racine ( a) = e then rechercheabo := true else if racine ( a) > e then rechercheabo := rechercheabo (e, gauche ( a)) else rechercheabo := rechercheabo (e, droit ( a )); end { rechercheabo }; Coût de la recherche c(a) = nombre de tests de la condition estarbrevide(a). meilleur cas : l élément se trouve à la racine, un seul test pire cas : ce nombre dépend de la hauteur de l arbre si l arbre est bien équilibré, pour un ABO de n nœuds, ce nombre sera majoré par log (n) si l arbre est un peigne, ce nombre sera proportionnel à n Le coût de la fonction rechercheabo dépend de la forme de l arbre.

insererabo : E ABO(E) ABO(E) e, a a a = arbre a modifié par l ajout en feuille du nouvel élément e. 459 insererabo(4, <; <; ; >; >) = <; <; ; >; <4; ; >> insererabo(, <; <; ; >; <4; ; >>) = <; <; <; ; >; >; <4; ; >> 459 Insertion dans ABO 459 459 // insererabo (e,a) // ajoute un nouvel élément e en feuille de // l arbre a. L arbre a est modifié procedure insererabo (e : ELEMENT ; var b: ARBRE ; if estarbrevide (a) then 459 var a : ARBRE ) ; a := creerarbre (e, ARBREVIDE, ARBREVIDE ) else if racine (a) <= e then b := droit (a) ; insererabo (e, b) ; modifierdroit (a, b) ; end else b := gauche (a) ; insererabo (e, b) ; modifiergauche (a, b) ; end ; end { insererabo }; 59

Coût de l insertion c(a) = nombre de tests estarbrevide(a). L insertion se fait en feuille Ce nombre dépend de la hauteur de l arbre si l arbre est bien équilibré, pour un ABO de n nœuds, ce nombre sera majoré par log (n) si l arbre est un peigne, ce nombre sera proportionnel à n Il est donc souhaitable d équilibrer les arbres au fur et à mesure des opérations d insertion Le coût de la fonction insererabo dépend de la forme de l arbre.