TD1 - membres
Transcription
TD1 - membres
UE Inf242 : TD1 31 mars 2006 Exercice 1 : Parmi les suites de caractères ci-dessous, indiquez celles qui sont des atomes, des variables, ni l’un ni l’autre ? 1. vINCENT 2. Pieds_tendre 3. variable23 4. un_gateau 5. ’un_gateau’ 6. ’Jules’ 7. _Jules 8. ’_Jules Exercice 2 : Indiquer si les suites de caractères ci-dessous sont des atomes, des variables, des termes composés ou ne sont pas des termes. Donnez le foncteur et l’arité de chaque terme composé. 1. aime(Vincent, marie) 2. ’aime(Vincent, marie)’ 3. Bernard(boxeur) 4. boxeur(Bernard) 5. et(gros(gateau), petit(gateau)) 6. et(gros(X), petit(X)) 7. _et(gros(X), petit(X)) 8. (Vincent ecoute Pierre) 9. ecoute(Vincent Pierre) 10. ecoute(Vincent, Pierre Exercice 3 : Combien y-a-t-il de faits, de règles, de clauses et de prédicats dans la base de connaissances suivante ? Indiquez les têtes de règles. 1 femme(vincent). femme(marie). homme(jules). personne(X):- homme(X). personne(X):- femme(X). aime(X,Y):- connait(Y,X). pere(Y,Z) :- homme(Y),fils(Z,Y). pere(Y,Z) :- homme(Y),fille(Z,Y). Exercice 4 : Représenter en Prolog : 1. Bernard est étudiant 2. Marie et Marcel sont mariés 3. Sartre est mort 4. Marie aime tout bon danseur 5. Marcel est jaloux de toute personne qui offre des fleurs à Marie 6. Jules mange tout ce qui est bon et nourrissant Exercice 5 : Donnons nous la base de connaissances suivante : a_une_baguette(harry). joueur_de_Quidditch(harry). sorcier(ron). sorcier(X) :- a_un_balai(X), a_une_baguette(X). a_un_balai(X) :- joueur_de_Quidditch(X). Que répond gprolog aux requêtes suivantes ? 1. sorcier(ron). 2. sorcière(ron). 3. sorcier(hermione). 4. sorcière(hermione). 5. sorcier(harry). 6. sorcier(Y). 7. sorcière(Y). Donner la preuve de sorcier(harry) avec la présentation du cours. Exercice 6 : Une bibliothèque possède les ouvrages suivants classés en différentes catégories : 2 catégories romans titres L’écume des jours Voyage au bout de la nuit Don Quichotte La Peste auteurs Vian Celine Cervantez Camus essais Le mythe de Sisyphe Camus L’art du roman Kundera theâtre Rhinoceros Ionesco Caligula Camus 1. Représenter les informations ci-dessus sous la forme de faits Prolog 2. Ecrire le prédicat auteur_connu(X) qui réussit si X est un auteur figurant dans la bibliothèque. 3. Ecrire le prédicat romancier(X) qui réussit si X est un auteur de romans (figurant dans la base) 4. Ecrire le prédicat ecrivain_complet(X) qui réussit si X a écrit des romans, des essais et du théatre. 5. Ecrire le prédicat livres(X,Y) qui réussit si X a écrit le livre Y Exercice 7 : On dispose d’une base de données sur les vols des avions. La forme générale d’un fait est vol(Numero_de_vol,Ville_de_depart,Ville_d_arrivee, Heure_de_depart, Heure_d_arrivee, Nombre_de_passagers_prevus). vol(1,paris,rennes,1200,1300,42). vol(2,nice,paris,1400,1525,245). vol(3,paris,marseille,1345,1500,234). vol(4,nantes,strasbourg,0920,1100,51). vol(5,rennes,tunis,1030,1250,58). Pour obtenir les vols à partir de nice on exécutera la requête vol(X,nice,_,_,_,_). L’usage de la variable anonyme permet d’avoir en réponse les valeurs de X sans afficher les valeurs de quatre derniers arguments du prédicat vol. Suivant ce modèle écrire les requêtes (on dit aussi les buts) qui donnent les réponses suivantes : 1. les vols arrivant à Paris 2. les vols qui ont plus de 100 passagers, arrivant à Rennes au plus à 17h00. 3. les vols qui partent à la même heure 4. les vols qui durent plus de 2 heures. Exercice 8 : On a la base de fait suivante possede(joe, voiture(ford,3,5000)). possede(joe, voiture(opel,2,6000)). possede(mick, voiture(toyota,5,1000)). possede(mick, voiture(ford,2,2000)). 3 Le premier fait signifie que joe possède une voiture ford, vieille de 3 ans et estimée 5000 euros. 1. écrire une requête permettant de trouver les possesseurs de ford. Utiliser la variable anonyme pour éviter les informations non souhaitées. 2. écrire une requête permettant de savoir qui a une voiture de prix inférieur à 5000 3. écrire un prédicat possede_entre(X,D,F) qui réussit si X possede une voiture d’âge compris entre D et F Exercice 9 : On définit le minimum de deux nombres par les 2 règles % min(X,Y,Z) réussit ssi Z est le minimum de X et Y min(X,Y,X) :- X<Y. min(X,Y,Y) :- X>=Y. Quelles sont les réponses de Prolog aux requêtes suivantes : 1. min(2,3,X). 2. A = 10, B = 30, min(A, B, C). 3. B = 30, min(A, B, C). Ecrire le prédicat max(X,Y,Z) qui réussit ssi Z est le maximum de X et Y Exercice 10 : Ecrire le prédicat fact(N,R) qui réussit ssi R est la factorielle de N. Attention N doit être liée à un entier. 4