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