Programmation Logique Examen du 13 juin 2014 - Durée 2h

Transcription

Programmation Logique Examen du 13 juin 2014 - Durée 2h
UNIVERSITÉ PARIS DESCARTES
UFR M ATHÉMATIQUES ET I NFORMATIQUE
Master M1 Info – 2013-2014
Programmation Logique
Examen du 13 juin 2014 - Durée 2h - 2 pages (recto-verso)
Aucun document n’est autorisé
Aucun appareil électronique n’est autorisé
Les télephones sont formellement interdits
Le barême est donné à titre indicatif et pourra être modifié
Equipe pédagogique : E. Bonzon et J. Rossit
Exercice 1 : (2 points)
Soit le programme suivant :
myst([], L, L) :- !.
myst(L, [], L) :- !.
myst([X|L1], [Y|L2], [X|L3]) :- X<Y, !, myst(L1, [Y|L2], L3).
myst(L1, [Y|L2], [Y|L3]) :- myst(L1, L2, L3).
1. Déroulez ce programme avec l’instance myst([1, 8, 10],[2, 4, 6],L).
2. Quel est le rôle de ce programme ?
Exercice 2 : (6 points) Pour l’écriture des prédicats suivants, il vous est possible d’utiliser les prédicats member,
append, ainsi que des prédicats intermédiaires.
1. Ecrire un prédicat otedoublon(L,D). qui retire tous les éléments apparaissant plusieurs fois d’une liste :
?- otedoublon([3,8,3,4,4,2,8],D).
D = [3,4,2,8]
2. Ecrire un prédicat planifie(L,R). qui transforme une liste de liste en liste simple :
?- planifie([[a,b],[1,5],[3,4,2]], R).
R = [a,b,1,5,3,4,2]
3. Ecrire un prédicat concatinv(L1,L2,R). qui inverse les listes L1 et L2, puis les concatène.
?- concatinv([a,b,c,d], [1,2,3,4], R).
R = [d,c,b,a,4,3,2,1]
1
Exercice 3 : (2 points) Soit le programme suivant :
p ← q,
q,
r ← s,
r ← p, q,
Déterminez si r est une conséquence de ce programme par la méthode de votre choix (que vous préciserez).
Exercice 4 : (6 points) Déterminez les ensembles réponses (answer sets) des programmes suivants :
1.
réussite ← not échec,
échec ← not réussite,
progresser ← réussite,
progresser ← échec.
2.
p
q
r
r
3.
c ← b,
b ← a.
←
←
←
←
not q,
not p,
not r,
p.
Pour chacun de ces programmes, détaillez la méthode pour chaque ensemble candidat. Quelles sont les conséquences de ces programmes ?
Exercice 5 : (4 points)
1. Quelles sont les règles d’inférence utilisées pour le calcul SLD ? Expliquez briévement l’intuition représentée par chacune de ces règles.
2. Considérez le programme suivant :
p ← q, r,
p ← r, s,
r ← u, v,
s,
u.
Utilisez la résolution SLD pour déterminer si p est une concéquence de ce programme. Détaillez les différentes étapes du calcul, indiquez à chaque étape la règle appliquée.
Quel serait le résultat si la connaissance v était ajoutée au programme ?
2

Documents pareils