Correction du TD2 : Aspects avancés de Prolog

Option Prolog. Correction du TD2 : Aspects avancés de Prolog. Exercice 1 :
Traduire en français les commandes Prolog suivantes et dire quel est le résultat
de ...

Part of the document

Licence Informatique
Année 2000-2001
UNSA Option Prolog
Correction du TD2 : Aspects avancés de Prolog Exercice 1 :
Traduire en français les commandes Prolog suivantes et dire quel est le
résultat de leur exécution (en se basant sur l'énoncé de l'exercice 1 du TD
précédent) :
. repas(H, P, D) /.
Dans cette question, on efface repas(H,P,D), puis le cut. Cela a pour
effet de supprimer tous les choix en attente y compris ceux qui
concernent repas. Cette commande peut donc être interprétée comme :
« trouver le premier ensemble de valeurs de H, P, D qui satisfait la
relation repas et arrêtez vous ».
. repas(H, P, D) poisson(P).
Cette question peut être interprétée comme : « trouver tous les ensembles
de valeurs de H, P, D qui satisfont la relation repas et où P est un
poisson ».
. repas(H, P, D) poisson(P) /.
Cette question peut être interprétée comme : « trouver le premier
ensemble de valeurs de H, P, D qui satisfait la relation repas et où P
est un poisson ».
. repas(H, P, D) / poisson(P).
Cette question peut être interprétée comme : « trouver le premier
ensemble de valeurs de H, P, D qui satisfait la relation repas et
vérifier s'il comporte du poisson en plat principal».
Exercice 2 :
Pour définir enfant, il suffit de remarquer que X est un enfant de Y si Y
est le père de X. On a donc la définition :
enfant(X, Y) :- pere(Y, X). Ensuite, X est un fils (respectivement une fille) de Y si X est un enfant
de Y et si X est de sexe masculin (respectivement féminin). On obtient
ainsi les deux règles :
fils(X, Y) :- enfant(X, Y), homme(X).
fille(X, Y) :- enfant(X, Y), femme(X). Si on admet que X est le frère ou la s?ur de Y si X et Y ont le même père
Z, la relation frere-ou-s?ur s'écrit :
frere-ou-s?ur(X, Y) :- pere(Z, X), pere(Z, Y), dif(X, Y).
Le dif permet d'éviter qu'un individu soit son propre frère ou sa propre
s?ur en forçant X et Y à prendre des valeurs différentes. A cet endroit, on
aurait aussi pu utiliser X\=Y.
On termine en remarquant que X est le frère (respectivement la s?ur) de Y à
condition que X soit frère ou s?ur de Y et que X soit de sexe masculin
(respectivement féminin). Ce qui nous donne :
frere(X, Y) :- frere-ou-s?ur(X, Y), homme(X).
s?ur(X, Y) :- frere-ou-s?ur(X, Y), femme(X).
Exercice 3 :
1)Sans commentaires...
2)Voilà la règle :
voyage(V, D, H, S) :- transport(V, T), sejour(V, H, N), duree(D),
multiplier(N, D, P),
additionner(P, T, S).
V : ville
D : durée, vaut 1 ou 2
H : hébergement
S : coût total
T : tarif du transport
N : prix du séjour pour 1 semaine
3)Voilà la règle :
voyage-economique(V, D, H, S, Smax) :- voyage(V, D, H, S),
inferieur(S, SMax). Exercice 4 :
1)sans commentaire.
2)Voici les règles qui permettent de s'assurer que deux individus
conviennent l'un à l'autre :
convient-physiquement(X, Y) :- homme(X, T, C, A),
femme(Y, T', C', A'),
recherche(X, T', C', A'),
recherche(Y, T, C, A). convient-physiquement(X, Y) :- femme(X, T, C, A),
homme(Y, T', C', A'),
recherche(X, T', C', A'),
recherche(Y, T, C, A). meme-gouts(X, Y) :- gouts(X, M, L, S), gouts(Y, M, L, S).
Remarquez l'utilisation des mêmes variables qui permet de forcer l'égalité
de manière simple et élégante.
3)Et pour terminer :
assortis(X, Y) :- convient-physiquement(X, Y), meme-gouts(X, Y). Exercice 5 :
couleur(vert).
couleur(jaune).
couleur(rouge). Coloriage(C1, C2, C3, C4) :- couleur(C1), couleur(C2), couleur(C3),
couleur(C4),
C1\=C2, C1\=C3, C1\=C4,
C2\=C3, C3\=C4.
Ici, on génère tout d'abord les couleurs, et on effectue les tests de
conformité ensuite. Coloriage(C1, C2, C3, C4) :- couleur(C1), couleur(C2), C1\=C2,
couleur(C3), C1\=C3, C2\=C3,
couleur(C4), C1\=C4, C3\=C4.
Ici, on effectue les tests de conformité à la volée, ce qui réduit
grandement la taille de l'arbre de recherche.