Arbres Binaire. PSI DAKHLA Prof Youssef El marzak. 1 Prof Youssef Elmarzak



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

INF601 : Algorithme et Structure de données

chapitre 4 Nombres de Catalan

Quelques Algorithmes simples

ARBRES BINAIRES DE RECHERCHE

Arbres binaires de recherche

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

Les arbres binaires de recherche

Ebauche Rapport finale

Algorithmique et Programmation

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

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

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

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

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

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

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

Nom : Groupe : Date : 1. Quels sont les deux types de dessins les plus utilisés en technologie?

Test : principe fondamental de la dynamique et aspect énergétique

Vous devez tout d abord réaliser l esquisse (le dessin de la pièce en 2 dimensions) avant de mettre cette pièce en volume.

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

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

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

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 de réseaux : Domain Name Server.

GÉNÉALOGIE 201. octobre 2014

Formats d images. 1 Introduction

Organiser les informations ( approche technique )

1 Recherche en table par balayage

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

Cahier n o 6. Mon ordinateur. Fichiers et dossiers Sauvegarde et classement

Algorithmique, Structures de données et langage C

Domain Name System. F. Nolot

Générer du code à partir d une description de haut niveau

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

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

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

Un radar pour Internet

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

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS

Serveurs de noms Protocoles HTTP et FTP

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

Arborescence et création de dossiers

PRISE EN MAIN D UN TABLEUR. Version OPEN OFFICE

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

Initiation à la Programmation en Logique avec SISCtus Prolog

Algorithmes d'apprentissage

Importation et exportation de contenu

Représentation d un entier en base b

Découvrir l'ordinateur (niveau 2)

Domain Name Service (DNS)

Partie publique / Partie privée. Site statique site dynamique. Base de données.

Arbres binaires de décision

A. Définition et formalisme

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

TUTORIAL 1 ETUDE D UN MODELE SIMPLIFIE DE PORTIQUE PLAN ARTICULE

Fête de la science Initiation au traitement des images

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

Salle de technologie

Mesurer les performances (CPU) sous Linux

Notice ARES Version 5.20 Française

OLYMPIADES ACADEMIQUES DE MATHEMATIQUES. 15 mars 2006 CLASSE DE PREMIERE ES, GMF

Le transfert de fichiers avec Filezilla Initiation à l'utilisation d'un client FTP

«Aucune investigation humaine ne peut être qualifiée de science véritable si elle ne peut être démontrée mathématiquement.

Stratégie de groupe dans Active Directory

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

STRUCTURE DE L ORDINATEUR

Tutorial NL220. Objectifs : Fournir un guide utilisateur pour NL220. Présenter une méthodologie efficace pour la création de projet

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

B1-4 Administration de réseaux

Théorie des Langages

JADT /06/2010 Rome Utilisation de la visualisation en nuage arboré pour l'analyse littéraire

SEMAINE DES MATHEMATIQUES

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

Mini_guide_Isis_v6.doc le 10/02/2005 Page 1/15

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

- Université Paris V - UFR de Psychologie ASDP4 Info Introduction à Windows

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

Systèmes d information et bases de données (niveau 1)

1.1 L EXPLORATEUR WINDOWS

L exclusion mutuelle distribuée

Big Data et Graphes : Quelques pistes de recherche

Date : Tangram en carré page

Problèmes de dénombrement.

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Raisonnement probabiliste

DNS ( DOMAIN NAME SYSTEM)

TP1 : Initiation à l algorithmique (1 séance)

Web Sémantique. Examen

Domain Name System ot ol F. N 1

MAT2027 Activités sur Geogebra

Notes pour l utilisation d Expression Web

@telier d'initiation

Chapitre 7. Récurrences

Styler un document sous OpenOffice 4.0

Huygens et le ressort spiral Fiche professeur

My Custom Design ver.1.0

Transcription:

Arbres Binaire PSI DAKHLA Prof Youssef El marzak 1 Prof Youssef Elmarzak

1.introduction: Les arbre sont très utilisées en informatique, d une part parce que les informations sont souvent hiérarchisées, et peuvent être représentées naturellement sous une forme arborescente, et d autre part, parce que les structures de données arborescentes permettent de stocker des données volumineuses de façon que leur accès soit efficace. 2 Prof Youssef Elmarzak

III.Définitions et terminologie Un arbre binaire est un ensemble fini de valeurs qui est : soit vide, soit constitué d une racine et des valeurs de deux arbres binaires disjoints appelés sous-arbre gauche et sous-arbre droit de la racine. 3 Prof Youssef Elmarzak

III.Définitions et terminologie Un arbre est un graphe sans cycle, où des nœuds sont reliés par des arêtes. On distingue trois sortes de nœuds : les nœuds internes, qui ont des fils ; les feuilles, qui n'ont pas de fils ; la racine de l'arbre, qui est l'unique nœud ne possédant pas de père. Traditionnellement, on dessine toujours la racine en haut et les feuilles en bas. 4 Prof Youssef Elmarzak

III.Définitions et terminologie Chaque élément est appelé nœud, un nœud contient : Une valeur sous-arbre gauche sous-arbre droit le nœud initial étant appelé racine d arbre binaire Une feuille est la racine d un arbre binaire dont la sous-arbre gauche et la sousarbre droit sont vides. 5 Prof Youssef Elmarzak

III.Définitions et terminologie On utilise pour les arbres une terminologie inspirée des liens de parenté : les descendants d un nœud p sont les nœuds qui apparaissent dans ses sous-arbres, un ancêtre d un nœud p est soit son père, soit un ancêtre de son père Tous les nœuds d'un arbre ont un et un seul parent, sauf la racine. Frère : Nœuds de même parent Feuille : nœud sans fils Racine : le seul nœud sans père Degré d'un nœud : nombre de ses enfants Profondeur d'un nœud : longueur du chemin entre la racine et ce nœud Hauteur d'un arbre : profondeur maximale de ses nœuds Hauteur d'un nœud : longueur maximale du chemin entre ce nœud et une feuille 6 Prof Youssef Elmarzak

III.Définitions et terminologie Niveau L dans un arbre = ensemble des nœuds de profondeur L Taille d'un arbre = nombre de ses nœuds 7 Prof Youssef Elmarzak

IV. Parcours: A. Parcours en largeur Le parcours en largeur correspond à un parcours par niveau de nœuds de l'arbre. Un niveau est un ensemble de nœuds ou de feuilles situés à la même profondeur. Autrement dit, de haut en bas, niveau par niveau (et de gauche a droite) Ainsi, si l'arbre ci-contre est utilisé, le parcours sera A, B, C, D, E, F, G. 8 Prof Youssef Elmarzak

IV. Parcours: B.Parcours en profondeur Le parcours en profondeur est un parcours récursif sur un arbre. Il existe trois ordres pour cette méthode de parcours. Le parcours en profondeur préfixé est le plus courant. 1) Parcours préfixe, ou préodre (NGD) : tout Nœud est suivi des nœuds de son sous-arbre Gauche puis des nœuds de son sousarbre Droit le parcours sera A, B, D, E, C, F, G. 9 Prof Youssef Elmarzak

IV. Parcours: B.Parcours en profondeur 2) Parcours suffixe, post-fixe (GDN) : tout Nœud est précédé des nœuds de son sousarbre Gauche et des nœuds de son sous-arbre Droit le parcours sera D, E, B, F, G, C, A 10 Prof Youssef Elmarzak

IV. Parcours: B.Parcours en profondeur 3) Parcours infixe, ou symétrique (GND) : tout Nœud est précédé des nœuds de son sous-arbre Gauche et suivi des nœuds de son sous-arbre Droit le parcours sera D, B, E, A, F, C puis G. 11 Prof Youssef Elmarzak

Exercice d application: Parcourez l'arbre ci-dessous selon les quatre méthodes vues précédemment 12 Prof Youssef Elmarzak

Solution : Parcours en largeur : a,b,c,d,e,fg,h,k,i Parcours préfixe Nœud, Gauche, Droite a, b, d, e, h, c, f, i, g, k Parcours infixe Gauche, Nœud, Droite d, b, h, e, a, f, i, c, k, g Parcours suffixe Gauche, Droite, Nœud d, h, e, b, i, f, k, g, c, a 13 Prof Youssef Elmarzak

V. Arbre binaire : Application sous Python Pour construire sa propre arbre binaire sous Python on peut utiliser les listes ou autre structures de données Dans cette partie nous allons utilisé les listes pour construire et gérer une arbre binaire La liste sera sous la forme suivante: [donnée, sous_arbre_gauche, sous_arbre_droite] Une feuille est la racine d un arbre binaire dont la sous-arbre gauche et la sousarbre droit sont égale à None. 14 Prof Youssef Elmarzak

Arbre binaire : Application sous Python Utilisation d'une liste Python Exemple : Arb=[15, [7, [6, [None], [None]], [9, [None], [None]]], [20, [None], [25, [None], [None]]]] 15 Prof Youssef Elmarzak

Arbre binaire : Application sous Python les fonctions de base : La fonction arbre_binaire(r) construit simplement une liste avec un nœud racine et deux sous-listes vides pour les fils et r c est la valeur de la racine La fonction change_racine(arbre,newvaleur) change la valeur du nœud racine, cette fonction prend comme paramètre un arbre et la nouvelle valeur du nœud racine 16 Prof Youssef Elmarzak

Arbre binaire : Application sous Python La fonction valeur_racine(arbre) affiche la valeur de la racine Maintenant nous allons écrire un couple de fonctions d'accès pour obtenir et définir la, ainsi les sous-arbres gauche ou à droite. Avoir la sous-arbre gauche : Avoir la sous-arbre droite : 17 Prof Youssef Elmarzak

Exemple : exécution interactive des fonctions de base précédente Considérant Arbre-2 défini ci-dessus, on suivant les exécutions suivantes: >>> arbre2 = [1, [2, [3, [None], [None]], [None]], [5, [None], [6, [None], [None]]]] >>> SAgouche(arbre2) [2, [3, [None], [None]], [None]] >>> SAdroite(arbre2) [5, [None], [6, [None], [None]]] >>> valeur_racine(arbre2) 1 >>> valeur_racine(sagouche(arbre2)) 2 >>> SAdroite(SAdroite(arbre2)) [6, [None], [None]] >>> est_feuille(sadroite(sadroite(arbre2))) True >>> 18 Prof Youssef Elmarzak

Arbre binaire : Application sous Python 19 Prof Youssef Elmarzak

Arbre binaire : Application sous Python Parcours en profondeur Parcours préfixe (NGD) : On va essayé de écrire une procédure récursive nommée prefixe(arbre) " qui traverse un arbre binaire en ordre (Neoud, gauche,droite) le parcours sera A, B, D, E, C, F, G. 20 Prof Youssef Elmarzak

Arbre binaire : Application sous Python Parcours en profondeur Parcours préfixe (NGD) : Exemple d exécution: >>> arbre2 = [1, [2, [3, [None], [None]], [None]], [5, [None], [6, [None], [None]]]] >>> prefixe(arbre2) [1],[2],[3],[5],[6],>>> 21 Prof Youssef Elmarzak

Arbre binaire : Application sous Python Parcours en profondeur Parcours infixe (GND) : Maintenant On va essayé de écrire une procédure récursive nommée infixe(arbre) " qui traverse un arbre binaire en ordre ( gauche, Neoud,droite) le parcours sera D, B, E, A, F, C puis G. 22 Prof Youssef Elmarzak

Arbre binaire : Application sous Python Parcours en profondeur Parcours infixe (GND) : Exemple d exécution: >>> arbre2 = [1, [2, [3, [None], [None]], [None]], [5, [None], [6, [None], [None]]]] >>> sufixe(arbre2) [3],[2],[6],[5],[1], 23 Prof Youssef Elmarzak