Informatique CM5 Synthèse :

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

ARBRES BINAIRES DE RECHERCHE

Arbres binaires de recherche

Quelques Algorithmes simples

MIS 102 Initiation à l Informatique

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

Chapitre 7. Récurrences

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

INF601 : Algorithme et Structure de données

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

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Les arbres binaires de recherche

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

Cours 1 : Qu est-ce que la programmation?

chapitre 4 Nombres de Catalan

Représentation d un entier en base b

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

DOCM Solutions officielles = n 2 10.

Présentation du langage et premières fonctions

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Le langage SQL Rappels

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

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

Programmation par contraintes. Laurent Beaudou

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

Algorithmes d'apprentissage

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

Python - introduction à la programmation et calcul scientifique

Évaluation et implémentation des langages

1 Introduction et installation

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

Algorithmique, Structures de données et langage C

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

Algorithmes récursifs

Création d un formulaire de contact Procédure

Pourquoi l apprentissage?

Fonctions linéaires et affines. 1 Fonctions linéaires. 1.1 Vocabulaire. 1.2 Représentation graphique. 3eme

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

Algorithmique et Programmation

Cours de Master Recherche

Cours de Génie Logiciel

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

Model checking temporisé


Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Note de cours. Introduction à Excel 2007

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

Arbres binaires de décision

Intelligence Artificielle Planification

Domain Name Service (DNS)

Salle de technologie

Algorithme. Table des matières

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

La programmation en première année basée sur l enrichissement progressif de micromondes multi-agents

Formats d images. 1 Introduction

données en connaissance et en actions?

STAGE IREM 0- Premiers pas en Python

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

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

Rappels sur les suites - Algorithme

Classes et Objets en Ocaml.

CHAPITRE 3 LA SYNTHESE DES PROTEINES

Excel 2007 Niveau 3 Page 1

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

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

Informatique Générale

Utilisation du client de messagerie Thunderbird

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

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

EXCEL TUTORIEL 2012/2013

Initiation à l algorithmique

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Optimisations des SGBDR. Étude de cas : MySQL

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Initiation à Excel. Frédéric Gava (MCF)

TP 1. Prise en main du langage Python

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

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

GEST_INSTANCES APPLICATION DE GESTION DES INSTANCES ET REUNIONS EN EPLE ETABLISSEMENT PUBLIC LOCAL D ENSEIGNEMENT

L informatique en BCPST

ASR1 TD7 : Un microprocesseur RISC 16 bits

6. Hachage. Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses

La présente publication est protégée par les droits d auteur. Tous droits réservés.

Malgré son aspect spartiate, Freeplane offre de nombreuses fonctionnalités en particulier dans le domaine de la diffusion des cartes sur le Web.

Trépier avec règle, ressort à boudin, chronomètre, 5 masses de 50 g.

Big Data et Graphes : Quelques pistes de recherche

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

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

Aide : publication de décisions VS

Activité 4. Tour de cartes Détection et correction des erreurs. Résumé. Liens pédagogiques. Compétences. Âge. Matériels

Comment créer des rapports de test professionnels sous LabVIEW? NIDays 2002

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

TD3 - Facturation avec archivage automatisé

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

Chapitre 2. Eléments pour comprendre un énoncé

Serveurs de noms Protocoles HTTP et FTP

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

Théorie des Langages

Transcription:

Informatique CM5 Synthèse : 1. Tuples et enregistrements : Un enregistrement a une étiquette, des champs et des noms de champs - L étiquette et les noms des champs sont des atomes ou des entiers - L opération Arity donne une liste des noms des champs en ordre lexicographique - Un tuple est un enregistrement où des noms des champs sont des entiers consécutifs à partir de 1. - Une liste est un tuple: Une liste est l atome nil ou le tuple (H T) où T est une liste 2. Traduction en langage noyau : Le langage noyau permet de comprre l exécution - En particulier, pour calculer la complexité Principes de la traduction en langage noyau - Ajouter des identificateurs (résultats des fonctions, variables locales) - Traduire toute expression imbriquée en une séquence d opérations - N utilisez que des instructions du langage noyau - Le langage noyau est un sous-ensemble de Oz, on peut l exécuter dans le Labo Interactif ou dans Mozart! Conséquences: - Toutes les variables intermédiaires deviennent visibles - Aucune variable n est cachée par la syntaxe - Il est facile de voir si la procédure est récursive terminale - Les programmes sont plus longs 3. Les trois axes de la complexité : Il y a trois axes orthogonaux - Complexité spatiale versus temporelle - Distribution de probabilité pour les entrées: Complexité en moyenne, dans le pire cas, dans le meilleur cas - Bornes: Supérieure (O), inférieure (Ω), supérieure et inférieure (Θ) Il y a un grand nombre de manières de les combiner! -1-

4. Les Tuples : Comme dit plus haut, un tuple est un enregistrement où des noms des champs sont des entiers consécutifs à partir de 1. 4.1 Opérations sur les tuples : X=state(1 a 2) - {Label X} renvoie l étiquette du tuple X Par exemple: state C est un atome ou un entier - {Width X} renvoie la largeur (nombre de champs) Par exemple: 3 C est toujours un entier positif ou zéro - Accès aux champs : Les champs sont numérotés de 1 jusqu à {Width X} X.N renvoie le nième champ du tuple Par exemple, X.1 renvoie 1 Par exemple, X.3 renvoie 2 Dans l expression X.N, N s appelle le nom du champ ( feature ) - Opération d égalité (==) Tester l égalité avec un nombre ou un atome C est simple: le nombre ou l atome doit être le même Souvent le pattern matching est plus court 4.2 Construire un arbre : Un arbre peut être construit avec des tuples: declare Y=left(1 2) Z=right(3 4) X=mid(Y Z) Tester l égalité des arbres : C est simple aussi: les deux arbres doivent avoir les même sous-arbres et les mêmes feuilles 4.3 Une liste est un tuple : - Une liste H T est un tuple (H T). - Ceci permet la simplicité: au lieu d avoir deux concepts (tuples et listes), il n y a qu un concept (tuple). - A cause de leur grande utilité, les listes sont soutenues par un sucre syntaxique. - Rappel : On peut écrire : X1=5 6 7 nil qui est un raccourci pour X1=5 (6 (7 nil)) qui est un raccourci pour X1= (5 (6 (7 nil))) qui est un raccourci pour X1= (1:5 2: (1:6 2: (1:7 2:nil))) La syntaxe la plus courte (le nil est sous-entu!) X1=[5 6 7] -2-

5. Les enregistrements : Un enregistrement est une généralisation d un tuple - Les noms des champs peuvent être des atomes ou être n importe quel entier. - Pas besoin de commencer avec 1. - Pas besoin d être consécutif. - Un enregistrement a aussi une étiquette (atome ou entier) et une largeur. 5.2 Un tuple est un enregistrement : - L enregistrement X = state(1:a 2:b 3:c) est équivalent à X = state(a b c) - Dans un tuple, tous les champs sont numérotés consécutivement à partir de 1. - Qu est-ce qui se passe si on fait X = state(a 2:b 3:c) Ou X = state(2:b 3:c a) - Dans un enregistrement, tous les champs sans nom sont numérotés consécutivement à partir de 1. 5.3 Il n y a que des enregistrements : Dans le langage noyau il n y a que des enregistrements, - Un atome est un enregistrement dont le largeur est 0 - Un tuple est un enregistrement dont les noms des champs sont des entiers successifs à partir de 1. Si on ne satisfait pas à cette condition, c est un enregistrement - Une liste est construit avec les tuples nil et (X Y) 5.4 Quelques exemples : Pour les enregistrements suivants: s agit-il d un tuple ou une liste? A=a(1:a 2:b 3:c) B=a(1:a 2:b 4:c) C=a(0:a 1:b 2:c) D=a(1:a 2:b 3:c d) E=a(a 2:b 3:c 4:d) F=a(2:b 3:c 4:d a) G=a(1:a 2:b 3:c foo:d) H= (1:a 2: (1:b 2:nil)) I= (1:a 2: (1:b 3:nil)) 6. Les arbres : A part les listes, les arbres sont les structures de données inductives les plus importantes - Un arbre est une feuille («leaf») ou une séquence de zéro ou plusieurs arbres. - Une liste a une structure linéaire, mais un arbre à une structure bifurquant. - Il y a énormément de différentes sortes d arbres. Nous allons regarder une seule sorte d arbre, les arbres binaires ordonnés. -3-

6.1 Arbres binaires ordonnés : <btree T> ::= tree(key:t value:<value> <btree T> <btree T>) leaf - Binaire: chaque noeud qui n est pas une feuille a deux sousarbres - Ordonné: les clés du sous-arbre gauche < clé du noeud < clés du sous-arbre droite 6.2 Arbres de recherche : Arbre de recherche: Un arbre qui est utilisé pour rechercher des informations, insérer des informations, ou enlever des informations Définissons trois opérations: - {Lookup X T}: renvoie la valeur qui correspond à la clé X - {Insert X V T}: renvoie un nouvel arbre qui contient (X,V) - {Delete X T}: renvoie un nouvel arbre qui ne contient pas X 6.3 Rechercher des informations : Il y a quatre cas de figure: - X n est pas trouvé - X est trouvé - X peut être dans le sous-arbre gauche - X peut être dans le sous-arbre droit fun {Lookup X T} of leaf then notfound [] tree(key:y value:v T1 T2) andthen X==Y then found(v) [] tree(key:y value:v T1 T2) andthen X<Y then {Lookup X T1} [] tree(key:y value:v T1 T2) andthen X>Y then {Lookup X T2} 6.4 Insérer des informations : Il y a quatre cas de figure: - (X,V) est inséré tout de suite - (X,V) remplace un nœud existant avec la même clé - (X,V) est inséré dans le sous-arbre gauche - (X,V) est inséré dans le sous-arbre droite fun {Insert X V T} of leaf then tree(key:x value:v leaf leaf) [] tree(key:y value:w T1 T2) andthen X==Y then tree(key:x value:v T1 T2) [] tree(key:y value:w T1 T2) andthen X<Y then tree(key:y value:w {Insert X V T1} T2) [] tree(key:y value:w T1 T2) andthen X>Y then tree(key:y value:w T1 {Insert X V T2}) 6.5 Enlever un élément d un arbre binaire : Enlever X d un arbre binaire. Le cas est simple quand un des sous-arbres est vide. Ce n est pas toujours vrai! -4-

Enlever X d un arbre binaire. Le problème est de réparer l arbre après la disparition de X. Remplir le trou après l enlèvement de X Le problème avec l autre programme est qu il n enlève pas correctement un nœud non-feuille Pour le faire correctement, l arbre doit être reorganisé: Un nouvel élément doit remplacer l élément enlevé L élément peut être le plus petit du sous arbre droit ou le plus grand du sous-arbre gauche fun {Delete X T} of leaf then leaf [] tree(key:y value:w T1 T2) andthen X==Y then case {RemoveSmallest T2} of none then T1 [] Yp#Wp#Tp then tree(key:yp value:wp T1 Tp) [] Pour enlever une racine Y, il y a deux possibilités: - Un sous-arbre est une feuille. On pr l autre. - Aucun sous-arbre n est une feuille. On enlève un élément d un des sous-arbres. La fonction {RemoveSmallest T} enlève le plus petit élément de T et renvoie le triplet Xp#Vp#Tp, où (Xp,Vp) est le plus petit élément et Tp est l arbre restant. fun {RemoveSmallest T} of leaf then none [] tree(key:x value:v T1 T2) then case {RemoveSmallest T1} of none then X#V#T2 [] Xp#Vp#Tp then Xp#Vp#tree(key:X value:v Tp T2) -5-

Pourquoi l opération d enlèvement est-elle compliquée? C est parce que l arbre satisfait une condition globale, d être ordonné. L opération d enlèvement doit travailler pour maintenir cette condition, beaucoup d algorithmes sur des arbres dépent des conditions globales et doivent travailler dur pour les maintenir. Le bon côté de la condition globale est qu elle donne à l arbre une étincelle de magie: l arbre se comporte un peu comme un être vivant («comportement orienté but» ou «goaloriented») -6-