NFP120 - Examen 1 ère session 2011

Documents pareils
Les arbres binaires de recherche

Arbres binaires de recherche

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

Recherche dans un tableau

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

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

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)

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

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

Organigramme / Algorigramme Dossier élève 1 SI

Les structures de données. Rajae El Ouazzani

Programmation C++ (débutant)/instructions for, while et do...while

Les deux points les plus proches

Quelques Algorithmes simples

Examen Médian - 1 heure 30

Qualité du logiciel: Méthodes de test

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

Corrigé des TD 1 à 5

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Ordonnancement temps réel

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

= constante et cette constante est a.

Algorithmique, Structures de données et langage C

Découverte de Python

Algorithmique et programmation : les bases (VBA) Corrigé

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

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

Présentation du PL/SQL

STAGE IREM 0- Premiers pas en Python

Algorithmique & programmation

Plan du cours. Historique du langage Nouveautés de Java 7

Algorithmique et Programmation, IMA

1. Structure d'un programme FORTRAN 95

Problèmes liés à la concurrence

Théorie de la Programmation

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

ACTIVITÉ DE PROGRAMMATION

INF601 : Algorithme et Structure de données

Factorisation Factoriser en utilisant un facteur commun Fiche méthode

Licence Sciences et Technologies Examen janvier 2010

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

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Initiation à l algorithmique

Cours de Systèmes d Exploitation

Algorithmique des Systèmes Répartis Protocoles de Communications

Cours 1 : Qu est-ce que la programmation?

ARBRES BINAIRES DE RECHERCHE

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

Cours d algorithmique pour la classe de 2nde

Préparation à l examen EFA en Macro

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Quelques algorithmes simples dont l analyse n est pas si simple

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

Algorithmes de recherche d itinéraires en transport multimodal

Propagation sur réseau statique et dynamique

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

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

MIS 102 Initiation à l Informatique

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Compilation (INF 564)

TRIGONOMETRIE Algorithme : mesure principale

Quatrième partie IV. Test. Test 15 février / 71

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Algorithmes récursifs

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

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

Cours 1 : La compilation

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

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

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

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Exercices sur le chapitre «Probabilités»

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

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

BAREME sur 40 points. Informatique - session 2 - Master de psychologie 2006/2007

Solutions du chapitre 4

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Algorithmique et structures de données I


Évaluation et implémentation des langages

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

Cours Informatique Master STEP

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Nouveautés CRM 2015 & Migration. By Tanguy Touzard MVP CRM

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

Représentation d un entier en base b

C f tracée ci- contre est la représentation graphique d une

Initiation à la Programmation en Logique avec SISCtus Prolog

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

Java Licence Professionnelle CISII,

Algorithmique I. Algorithmique I p.1/??

Application 1- VBA : Test de comportements d'investissements

Introduction à la programmation concurrente

Calcul fonctionnel holomorphe dans les algèbres de Banach

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

Pourquoi l apprentissage?

Transcription:

NFP120 - Examen 1 ère session 2011 1 Prolog Rappels Les entiers dans cet examen sont les entiers de Prolog (pas les entiers de Peano) et il ne sera pas pénalisant d oublier d utiliser le prédicat is. Les arbres binaires sont représentés comme en cours, c est-à-dire comme suit : le terme feuille(n) représente l arbre à un seul noeud contenant l entier N ; le terme t(n,x,y) représente l arbre ayant l entier N à la racine et les arbres X et Y comme sous-arbres. Par exemple le terme : t(,feuille(2),t(7,feuille(9),feuille(8))) représente l arbre suivant : 2 7 9 8 Ex. 1 (0,5pt) Écrire le prédicat est_un(x) qui est vrai si X est égal à 1. Ex. 2 (1pt) Écrire le prédicat est_pair(x) qui est vrai si X est un entier pair (positif ou négatif). Un demi point supplémentaire sera accordé si le prédicat ne boucle pas indéfiniment sur les entiers impairs. Solution (Ex. 2) est_pair(0). est_pair(x):-x>0,y is X-2,est_pair(Y). est_pair(x):-x<0,y is X+2,est_pair(Y). Ex. 3 (1pt) Écrire le prédicat supl(l,x) qui est vrai si X est plus grand ou égal à tous les éléments de la liste d entiers L. Solution (Ex. 3) supl([],x). supl([x L],Y):-Y>=X,supl(L,Y). Ex. (2pt) Écrire le prédicat aumoins(x,n,l) qui est vrai si l entier X apparaît au moins N fois dans la liste d entiers L. 1

Solution (Ex. ) aumoins(_,n,_):-n<=0. aumoins(x,n,[x L]):-M is N-1,aumoins(X,M,L). aumoins(x,n,[y L]):-aumoins(X,N,L). Ex. 5 (1,5pt) Écrire le prédicat rempli(x,a) qui est vrai si toutes les valeurs (aux feuilles et aux noeuds) de l arbre binaire A sont égales à N. Solution (Ex. 5) rempli(n,feuille(n)). rempli(n,t(n,fg,fd)):-rempli(n,fg),rempli(n,fd). Ex. 6 (1,5pt) Écrire le prédicat toutchemin(n,a) qui est vrai si toutes les branches de l arbre binaire A contiennent au moins une occurrence (dans une feuille ou dans un noeud) de l entier N. Une branche est un chemin de la racine jusqu à une feuille. Dans les exemples ci-dessous toutchemin(3,t1) est vrai mais toutchemin(3,t2) n est pas vrai car il existe une branche (la branche (,2,8)) qui ne contient pas la valeur 3 : t1= 1 3 t2= 1 2 3 3 9 8 3 3 3 8 Solution (Ex. 6) toutchemin(n,feuille(n)). toutchemin(n,t(n,_,_)). toutchemin(n,t(m,fg,fd)):-toutchemin(n,fg),toutchemin(n,fd). Ex. 7 (1pt) Soit le programme appartient suivant : appartient(x,[x _]). /* Règle 1 */ appartient(x,[y L]):-appartient(X,L). /* Règle 2 */ Donnez l arbre de résolution de Prolog sur la requête suivante (vous vous arrêterez au premier succès) :?-appartient(2,[1,2,3]). Ex. 8 (2pt) Sur le même programme appartient que la question précédente donnez l arbre complet de résolution de Prolog sur la requête suivante (ne pas s arrêter après le premier succès, continuer jusqu à épuisement des règles) :?-appartient(x,[1,2]). Signalez les noeuds aboutissant à des échecs et à des solutions et vous donnez la solution dans ce dernier cas. 2

Solution (Ex. 8) pour la requête suivante (un élément de plus)?-appartient(x,[1,2]) : {appartient(x,[1,2,3]).} (1), [X 1] { appartient(x,[2,3]) } (1),[X 0 2] (2), [Y 1, L [2, 3]] { appartient(x,[3]) } (1),[X 1 3] (2),[Y 0 2, L 0 [3]] (2),[Y 1 3, L 1 []] { appartient(x,[]) } 2 Tableaux sémantiques Vous trouverez un résumé des règles de résolution des tableaux dans l annexe A. Ex. 9 (2pt) Démontrez à l aide de la méthode des tableaux la propriété suivante : x, p(x, b) x : q(x), x : p(a, x) x : (r(x, c) q(x)) Fail Solution (Ex. 9) 3

3 Logique de Hoare 3.1 Invariant 1 Soit la boucle B suivante : Ex. 10 (0,5pt) Donnez un variant de cette boucle. Solution (Ex. 10) max i while i < max do if t[i] <= u[i] then v[i] := u[i] else v[i] := t[i]; i := i + 1 done Ex. 11 (2pt) Donnez un invariant de cette boucle permettant de prouver le triplet de Hoare suivant (dans lequel n 0 et a 0 sont des constantes) : {i = i 0 i >= 0} B { a, i 0 a < max ((v[a] = t[a]) (v[a] = u[a]))}. On supposera que les bornes des tableaux sont suffisantes. Solution (Ex. 11) j, i 0 j < i (v[i] = t[i] v[i] = u[i]) 3.2 Invariant 2 Soit la boucle C suivante, qui correspond à la boucle interne du tri à bulle : un seul parcours du tableau de gauche à droite, à chaque case t[i] permutation avec la case précédente t[i-1] si celle-ci contient un entier plus petit que t[i] (notez qu il faut commencer à la case t[1] et non à la case t[0]). Ex. 12 (0,5pt) Donnez un variant de cette boucle. while(i<limite) do if t[i] < t[i-1] then begin tmp := t[i]; t[i] := t[i-1]; t[i-1] := tmp; end i := i + 1 done Solution (Ex. 12) limite - i Ex. 13 (1,5pt) Donnez un triplet de Hoare de la forme {P} C {Q} exprimant la propriété suivante : à la fin de la boucle le plus grand élément du tableau initial est placé à la dernière case. Il est permis de fixer la valeur initial de i à 1. Remarque : Utilisez la notation t 0 [n] pour désigner la n ème case du tableau t avant la boucle. Solution (Ex. 13) En ne fixant pas la valeur de i à 1 mais à i 0 : {i=i 0 t=t 0 } C { k, i 0 k < limite t[k] t 0 [limite-1] }

Ex. 1 (2,5pt) Donnez un invariant de la boucle suffisant pour en déduire la post-condition Q à la sortie de la boucle. Justifiez en expliquant comment déduire, à partir de l invariant et de la condition de sortie de la boucle, que la post-condition est vérifiée après la boucle. Solution (Ex. 1) Attention : la case i n est pas encore traitée au début du corps de la boucle. On n oublie pas la condition sur i qui permettra de dire que i sera égal à limite à la sortie de la boucle. 0 j < i, t[j] t[i 1] i limite. Ex. 15 (1,5pt) Si l objectif est de démontrer la correction de l algorithme de tri à bulle (qui nécessite d imbriquer la boucle C dans une autre boucle), quelle propriété faut-il ajouter à l invariant de C? Vous pouvez décrire cette propriété au choix en français où sous la forme d une propriété logique. Solution (Ex. 15) Il faut ajouter la propriété précisant que les éléments du tableau final sont les mêmes que ceux du tableau initial, en même quantité. Bref que le tableau final est une permutation du tableau initial. 5

A Annexe : Règle de la méthode des tableaux φ φ 1 φ 2 φ φ 1 φ 2 φ 1 φ 1 φ 1 φ 2 φ 1 φ 2 (φ 1 φ 2 ) φ 1 φ 2 (φ 1 φ 2 ) φ 1 φ 2 φ 1 φ 2 φ 1 φ 2 φ 2 φ 1 x, (φ 1 (x)) φ 1 (a i ) x, (φ 1 (x)) φ 1 (c) x, (φ 1 (x)) φ 1 (c) x, (φ 1 (x)) φ 1 (a i ) FIGURE 1 Les règles de type «et», qui ne créent pas d embranchement. a i désigne une nouvelle constante «fraîche» et c désigne une constante existante. φ φ 1 φ 2 φ φ 1 φ 2 φ 1 φ 2 φ 1 φ 2 (φ 1 φ 2 ) φ 1 φ 2 φ 1 φ 2 φ 1 φ 2 (φ 1 φ 2 ) (φ 1 φ 2 ) (φ 2 φ 1 ) FIGURE 2 Les règles de type "ou", qui créent un embranchement 6