Vous êtes sur la page 1sur 11

Facult dOrdinateurs, Informatique et Microlectronique

Filire Francophone Informatique

Compte rendu
la discipline : PLIA

Travail pratique nr. 2

Chiinu, 2017
But du travail :

Implantation des solutions en utilisant une approche dclarative (pb.1); Application dune
technique de recherche (pb.2-5); Utilisation des notions ensemblistes en Prolog (pb.6).

Travail effectu :

a) crire les connaissances suivantes dans un fichier Prolog.


auto( marc, honda, rouge ).
auto( jean, honda, rouge ).
auto( julie, chrysler, rouge ).
auto( nathalie, honda, noire ).
auto( nathalie, honda, rouge ).
b) Utiliser ces connaissances pour rpondre aux questions suivantes :

?- findall(P,auto(P,M,C),R).
R = [marc, jean, julie, nathalie, nathalie].

?- bagof(P,auto(P,M,C),R).
M = chrysler,
C = rouge,
R = [julie] ;
M = honda,
C = noire,
R = [nathalie] ;
M = honda,
C = rouge,
R = [marc, jean, nathalie].

?- findall(M,auto(P,M,C),R).
R = [honda, honda, chrysler, honda, honda].

?- setof(P,auto(P,M,C),R).
M = chrysler,
C = rouge,
R = [julie] ;
M = honda,
C = noire,
R = [nathalie] ;
M = honda,
C = rouge,
R = [jean, marc, nathalie].

?- bagof(M,auto(P,M,C),R).
P = jean,
C = rouge,
R = [honda] ;
P = julie,
C = rouge,
R = [chrysler] ;
P = marc,
C = rouge,
R = [honda] ;
P = nathalie,
C = noire,
R = [honda] ;
P = nathalie,
C = rouge,
R = [honda].

?- bagof(M,P^auto(P,M,C),R).
C = noire,
R = [honda] ;
C = rouge,
R = [honda, honda, chrysler, honda].

?- bagof(M,C^P^auto(P,M,C),R).
R = [honda, honda, chrysler, honda, honda].

?- setof(M,C^P^auto(P,M,C),R).
R = [chrysler, honda].

c) Expliquer la diffrence entre les diffrents prdicats utiliss.


- findall( P, auto(P, M, C), R ).
Trouve les P tel que (P, M, C) sont vraies et met le rsultat dans la liste R.
- setof( P, auto(P, M, C), R).
Trouve les P tel que (P, M, C) sont vraies et met les rsultats tris dans la liste R.
- setof( M, C^P^auto(P, M, C), R).
Trouve les M tel que (P, M, C) sont vraies et met les rsultats tris sans afficher C et P dans la liste R.
- bagof( P, auto(P, M, C), R).
Trouve les P tel que (P,M,C) sont vraies et met le rsultat dans la liste R en tenir compte de la valeur
de tous les arguments.

Probleme 1:
Qui a vol les biscuits ?
Nathalie a confectionn des biscuits. Elle les a rangs dans un placard quelle a ferm cl.
lheure du souper, les biscuits ont disparu. Grce une enqute serre, les indices et les faits suivants
sont rapports par Martin Tremblay, premier enquteur la brigade de police, son chef, Louis
Mnard. Ce dernier possde une copie de votre programme quil va utiliser pour cibler les suspects.
Voici les faits et les indices rcolts par Martin Tremblay.

Les personnages intervenant dans lhistoire sont : Simon (le frre de Nathalie), Albert (son oncle),
Kvin, John et Isabelle (des voisins directs). Nathalie ainsi que les membres de sa famille possdent
les cls du placard. Kvin, qui prouve des difficults financires, possde des canaris. Simon doit
suivre un rgime et est bless la main. On a retrouv des miettes de biscuits sur le bureau dAlbert.
John, qui tout sourit dans la vie, est grand, riche et mince. Enfin, Isabelle passe tout son temps libre
tester des recettes de Maman Dion. Par ailleurs, la porte du placard a t retrouve force.
Aprs mre rflexion, Louis Mnard met les hypothses suivantes :
1. Pour voler des biscuits, il faut en avoir besoin et y avoir accs.
2. On peut avoir besoin de biscuits soit parce quon est gourmand, soit parce quon veut les donner
quelquun.
3. Pour accder aux biscuits, il faut soit avoir les cls du placard, soit le forcer ou encore soudoyer un
dtenteur de cls.
4. La personne qui a forc la porte du placard a des chances davoir t gratigne par des clats de
bois.
5. On peut aussi soudoyer quelquun qui a besoin de biscuits mme s'il ne possde pas les cls du
placard.
6. On peut donner des biscuits quelquun parce quon doit le nourrir et quon na pas dargent pour
acheter de la nourriture.
7. Une personne, souffrant dembonpoint ou aimant cuisiner, a des chances dtre gourmande.
8. On fait des miettes en mangeant des biscuits.
9. Dans tous les cas, une personne soudoye aura srement mang des biscuits.
10. Si on possde des animaux, il faut les nourrir.
11. Si une personne doit suivre un rgime, elle souffre probablement dembonpoint.
Qui sont les suspects?
Les suspects sont tous les personnages qui interviennent dans lhistoire : Simon (le frre de
Nathalie), Albert (son oncle), Kvin, John et Isabelle (des voisins directs).
%Les faits:
a_cle(simon).
regim(simon).
main_blesse(simon).
a_cle(albert).
morceaux(albert).
manque_argent(kevin).
a_canaris(kevin).
grand(john).
riche(john).
mince(john).
teste_recettes(isabelle).
Les rgles en Prolog pour les hypothses mises :
1) vole(X):-a_besoin(X),a_acces(X).
2) a_besoin(X):-gourmand(X);donne(X).
3) a_acces(X):-a_cle(X);force(X);soudoye(X,Y).
4) force(X):-main_blesse(X).
5) soudoye(X,Y):-a_cle(Y).
6) soudoye(X,Y):-a_besoin(Y),not(a_cle(Y)).
7) donne(X):-manque_argent(X),nourri(Y).
8) gourmand(X):-embonpoint(X);teste_recettes(X).
9) mange(X):-morceaux(X).
10) soudoye(X,Y):-mange(Y).
11) nourri(X):-a_canaris(X).
12) embonpoint(X):-regim(X).
Les personnes impliques dans la vole des biscuits :
?- setof(X,vole(X),R).
R = [isabelle, kevin, simon].
?- a_besoin(X).
X = simon ;
X = isabelle ;
X = kevin.
?- a_acces(X).
X = simon ;
X = albert ;
X = simon ;
?- soudoye(X,Y).
Y = simon ;
Y = albert ;
Y = isabelle ;
Y = kevin ;
?- mange(X).
X = albert.
Pourquoi certains personnages peuvent-ils tre suspects de plusieurs manires ?
Existe des personnages suspects de plusieurs manires parce quil existe plusieurs propositions pour les
conditions pose dans le cas de ce vol.
Est-ce que tous les faits ont t ncessaires pour trouver la rponse ?
Non, il y a des faits non-importants qui ne sont pas ncessaire pour trouver les suspects (ex : John, qui tout
sourit dans la vie, est grand, riche et mince.)
Comment expliqueriez-vous le processus de recherche effectu par le programme?
Le programme recherche les solutions du problme daprs les rgles de logique dclares par le programmateur,
en leur associant des consquences plus ou moins directes..
Probleme 2:
On a demand Thomas de programmer le jeu du puzzle-8. Lensemble ordonn des oprateurs permis est le
suivant : {, , , }. Ces oprateurs sont respectivement : dplacer * vers la gauche, dplacer * vers le haut,
dplacer * vers la droite, dplacer * vers le bas. Une configuration est reprsente l'aide d'une liste ou d'un
tableau.
Par exemple, la liste L= [1, 2, 3, 8,'*', 4, 7, 6, 5] reprsente le tableau
123
8*4
765
La configuration finale recherche est L. Les configurations initiales considres sont :
L1 = [1, 2, 3, 8, 4,*,7,6,5]
L2 = [1, 2, 3,*, 8, 4, 7, 6, 5]
L3 = [1, *,3, 8, 2, 4,7, 6,5]
L4 = [1, 2,*, 8, 4, 3, 7, 6,5]
Les stratgies de recherche considres sont : hill-climbing (HC), largeur (LAR), profondeur (PRO). Le
retour arrire est autoris. Lheuristique considre par Thomas est le nombre de tuiles qui ne sont pas la bonne
place. Dans le but de faciliter le test de son programme, Thomas tablit un banc dessais.
a) On demande de complter le tableau de Thomas en indiquant les stratgies de recherche qui permettent de
passer de la configuration initiale la configuration finale.
Configuration finale dsire : L = [1, 2, 3, 8,*, 4, 7, 6, 5]

# Configuration initiale Suite des oprateurs appliqus LAR PRO HC Aucune


1 L1 = [1, 2, 3, 8, 4,*, 7, 6, 5] + + +
2 L2 = [1, 2, 3,*, 8, 4, 7, 6, 5] , +
3 L3 = [1, *, 3, 8, 2, 4, 7, 6, 5] , , +
4 L2 = [1, 2, 3,*, 8, 4, 7, 6, 5] +
5 L3 = [1, *, 3, 8, 2, 4, 7, 6, 5] +
6 L4 = [1, 2,*, 8, 4, 3, 7, 6, 5] , +

1. L1 = [1, 2, 3, 8, 4,*, 7, 6, 5] ()
1 2 3
8 4 *
0 3
7 6 5

1 2 3 3
1 2 3
8 * 4 8 4 5
7 6 5 7 6 *
Etat dsir 1 2 *
8 4 3
7 6 5

2. L2 = [1, 2, 3,*, 8, 4, 7, 6, 5] (, )

1 2 3
* 8 4 3
3 7 6 5

* 2 3 1 2 3
0
1 8 4 7 8 4
7 6 5 * 6 5

4 2
1 2 3
8 * 4
7 6 5
Etat dsir
2 * 3 1 2 3
1 8 4 * 8 4
7 6 5 7 6 5
3. L3 = [1, *, 3, 8, 2, 4, 7, 6, 5] (, , )

1 * 3
8 2 4
3 7 6 5 0

* 1 3 1 2 3
8 2 4 3 8 * 4
7 6 5 7 6 5
2
4 1 3 *
8 2 4
1 * 3 8 1 3 7 6 5
8 2 4 * 2 4
7 6 5 7 6 5

1 0

1 2 3 1 2 3
8 * 4 8 * 4
7 6 5 7 6 5
Etat dsir Etat dsir

4. L2 = [1, 2, 3,*, 8, 4, 7, 6, 5] ()

1 2 3
3
* 8 4 3
7 6 5

* 2 3 0
1 2 3
1 8 4 7 8 4
7 6 5 1 2 3
8 * 4 * 6 5
7 6 5
Etat dsir

5. L3 = [1, *, 3, 8, 2, 4, 7, 6, 5] ()

1 * 3
8 2 4 0
3
7 6 5
* 1 3 1 2 3
8 2 4 3 8 * 4
7 6 5 7 Etat
6 5dsir
Etat dsir
1 3 *
8 2 4
7 6 5
6. L4 = [1, 2,*, 8, 4, 3, 7, 6, 5] (, )
1 2 *
8 4 3 2
4
7 6 5

1 * 2 1 2 3
8 4 3 8 4 *
7 6 5 7 6 5
0 3 3

1 2 3 1 2 * 1 2 3
8 * 4 8 4 3 8 4 5
7 6 5 7 6 5 7 6 *
Etat dsir

b) Thomas pourrait-il considrer dautres heuristiques ?


Une autre technique qui peut tre utilis pour le problme pos est lalgorithme A*. Il utilise une
valuation heuristique sur chaque nud pour estimer le meilleur chemin y passant, et visite ensuite les
nuds par ordre de cette valuation heuristique. C'est un algorithme simple, ne ncessitant pas de
prtraitement, et ne consommant que peu de mmoire. La fonction dvaluation heuristique utilise
est : f(n) = g(n) + h(n), dans laquelle n est un tat, g(n) le cout de ltat initial jusqu n, h(n) un
estim heuristique du cout de n jusqu but. Pour cette technique est spcifique le fait que h(n) est
infrieur ou gal au cout du trajet minimal de n jusqu but. On note que lalgorithme de recherche en
largeur dabord est un algorithme A* dans lequel f(n) = g(n) + 0.

On peut utiliser la technique de meilleur dabord. Cette technique chaque tape de la recherche
gnre la liste des tats accessibles depuis ltat courant, calcule les valeurs de la fonction heuristique
et les attribue cette valeur, et enfin ordonne cette liste daprs la valeur heuristique.
Probleme 3:
Soit le graphe suivant, reprsentant un espace de recherche. Chaque lettre reprsente un tat et
chaque flche une opration possible pour passer dun tat un autre. Indiquez la suite des tats
parcourir pour passer de ltat A ltat X par la technique de recherche en profondeur dabord. Les
numros associs aux flches sortant dun tat reprsentent lordre dans lequel les oprations doivent
tre appliques pour cet tat. Aucun tat ne devra tre revisit

OUVERTES FERMES
[A] []
[C,D,E,B] [A]
[H,I,G,D,E,B] [A,C]
[Q,R,P,I,G,D,E,B] [A,C,H]
[R,P,I,G,D,E,B] [A,C,H,Q]
[P,I,G,D,E,B] [A,C,H,Q,R]
[I,G,D,E,B] [A,C,H,Q,R,P]
[G,D,E,B] [A,C,H,Q,R,P,I]
[D,E,B] [A,C,H,Q,R,P,I,G]
[J,K,E,B] [A,C,H,Q,R,P,I,G,D]
[S,T,U,K,E,B] [A,C,H,Q,R,P,I,G,D,J]
[T,U,K,E,B] [A,C,H,Q,R,P,I,G,D,J,S]
[U,K,E,B] [A,C,H,Q,R,P,I,G,D,J,S,T]
[K,E,B] [A,C,H,Q,R,P,I,G,D,J,S,T,U]
[E,B] [A,C,H,Q,R,P,I,G,D,J,S,T,U,K]
[M,L,B] [A,C,H,Q,R,P,I,G,D,J,S,T,U,K,E]
[L,B] [A,C,H,Q,R,P,I,G,D,J,S,T,U,K,E,M]
[X,W,V,B] [A,C,H,Q,R,P,I,G,D,J,S,T,U,K,E,M,
L]
[W,V,B] [A,C,H,Q,R,P,I,G,D,J,S,T,U,K,E,M,
L,X]
Success

Probleme 4:

Julie samuse avec une version lectronique du jeu du puzzle-8 quelle a trouve sur Internet. Elle
joue depuis un moment dj et voudrait bien atteindre la configuration suivante :
123 283
8 * 4 configuration dsire 164
765 7*5
A) Expliquez comment vous pouvez aider Julie en utilisant la recherche dans un espace
dtats.
Expliquez comment formuler le problme.
Si on a besoin dutiliser exclusivement une technique de recherche dans un espace dtats, on peut
utiliser les algorithmes de profondeur dabord ou de largeur dabord. La technique de profondeur
dabord est plus optimale parce que pour chaque configuration actuelle du jeu on choisit les oprations
qui mnent au configuration-fils, et on analyse les configurations obtenues.
B) Considrons la technique du meilleur dabord avec lheuristique le nombre de tuiles mal places,
y compris la tuile marque * .
En utilisant la technique du meilleur dabord on choisit les tats avec les nombres de tuiles
mal places les plus petits possibles.

2 8 3
1 6 4
7 * 5 6
6

2 8 3 2 8 3
1 6 4 1 6 4
2 8 3 7 5 *
* 7 5
4 1 * 4 5
7 6 5

4 5 2 8 3
2 8 3 1 6 4
* 1 4 7 * 5
7 6 5 2 * 3 2 8 3
1 8 4 1 4 *
4 5 7 6 5 7 6 5
2 8 3
7 1 4
* 8 3 * 6 5
2 1 4 3 5
2 8 3
7 6 5
1 * 4 4
7 6 5
2 8 3
* 2 3 2 3 *
On arrive dans 1 * 4
1 8 4 1 8 4
letat precedente: 7 6 5
7 6 5 7 6 5
On arrive dans un
4 2 etat precedente:
2 * 3 1 2 3
1 8 4 * 8 4
7 6 5 7 6 5
3
0
* 2 3
1 8 4 1 2 3
7 6 5 8 * 4
7 6 5
Etat dsir

Probleme 5:
Soit larbre suivant dans lequel le noeud P dsigne ltat initial. La notation P : 10
signifie que la valeur de la fonction heuristique au noeud P est gale 10.

Quelle que soit la technique de recherche utilise, aucun tat ne devra tre revisit.
La recherche a toujours comme point de dpart ltat initial et sarrte ds que la valeur de
la fonction heuristique du nud enfant augmente (chec de la recherche) ou est nulle
(succs de la recherche, le but est atteint).
Si plusieurs nuds sont candidats, on choisit le nud le plus gauche.

Pour chacune des techniques de recherche suivantes, numrer la liste ordonne des nuds
traverss. Indiquer aussi sil sagit dun succs ou dun chec de la recherche : a) hill-climbing ; b) le
meilleur dabord.

a) hill-climbing

Ouverts Ferms
[P] []
[R,S,Q] [P]
chec [P,R]

b) le meilleur dabord

Ouverts Ferms
[P] []
[R,S,Q] [P]
[S,Q,W,V] [P,R]
[Y,X,Q,W,V] [P,R,S]
succs [P,R,S,Y]

Probleme 6:
Un rgime de bananes est accroch au centre du plafond de la cage d'un singe, et hors de sa
porte. Cependant, en grimpant sur une bote qui est dans sa cage prs de la porte, aprs l'avoir
dplace l'endroit dsir, il pourra atteindre les fruits.
Le singe peut donc effectuer une ou plusieurs des actions suivantes : marcher sur le sol,
grimper sur la bote, pousser la bote ou saisir une banane s'il est juch sur la bote au centre de la
cage. Est-ce que le singe est vraiment capable d'attraper une banane ?Il est facile pour un humain de
rpondre cette question, mais pour un ordinateur la tche est plus complexe. Nous allons donc
rsoudre ce problme de faon dclarative l'aide du langage Prolog.
1. La premire tche est de reprsenter le problme, soit ici le "monde du singe". Ce dernier est
toujours dans un certain tat qui peut varier au cours du temps. Quels sont les lments du "monde du
singe", donc d'un tat ? Quel est l'tat initial du problme ? Lexprimer en Prolog en utilisant un
prdicat tatInitial (Son arit est dfinir en fonction des lments qui composent le monde du
singe).
Les lments du monde du singe :
- X1 : position du singe dans la cage (a),
- X2 : position de la boite dans la cage (b),
- X3 : position du singe par rapport la boite (1 au dessus, 0 sur le sol),
- X4 : possession de la banane(1-possde, 0-ne possde pas).

Formalisation des tats :


etat(X1, X2, X3, X4)

Ltat initial : etatInitial(a, b, 0, 0)

2. Quel est l'tat final que l'on veut atteindre ?


Ltat final : etatFinal(_,_,_,1)

3. Ce problme peut tre vu comme un jeu dont le but est d'arriver l'tat final en partant de
l'tat initial et ceci seulement en utilisant les rgles du jeu. Ces rgles sont ici les actions
possibles du singe ou oprateurs qui permettent de passer dun tat un autre. Quelles sont
ces actions ou oprateurs ?
Les actions possibles :
Marcher sur le sol
Pousser la bote
Grimper sur la bote
Saisir une banane

4. Programmer ces actions en Prolog. Pour chaque action, il faut donner son nom, l'tat
courant et l'tat suivant obtenu aprs application de laction. Un seul prdicat doit tre utilis
pour reprsenter un tat.
La relation actionner exprime toutes les modifications possibles de ltat du systme :
actionner(Etat1, A, Etat2)
Etat1 : tat avant laction,
A : action,
Etat2 : tat aprs laction.

actionner(etat(c,c,1,0), saisir, etat(c,c,1,1)).


actionner(etat(P,P,0,H), grimper, etat(P,P,1,H)).
actionner(etat(P1,P1,0,H), pousser(P1,P2), etat(P2,P2,0,H)).
actionner(etat(P1,B,0,H), marcher(P1,P2), etat(P2,B,0,H)).

5. Il ne reste plus qu' ajouter au programme le prdicat qui va rechercher la rponse. Ce


prdicat est rcursif et possde deux clauses : la clause d'arrt (l'tat final est obtenu) et la
clause rcursive permettant de passer d'un tat un autre en appliquant une action.

peut_prendre(etat(_,_,_,1)).
peut_prendre(Initial):-actionner(Initial,Action,Final),peut_prendre(Final).
Le rsultat :
?- peut_prendre(etat(a,b,0,0)).
true

Conclusion:
Dans ce travail de laboratoire nous avons pratiqu nos connaissances acquis pendant ltude
des techniques de recherches. Nous avons implment des solutions en utilisant une approche
dclarative, nous avons appliqu diffrents technique de recherche pour rsoudre diffrentes
types de problmes (tant des techniques exhaustives quheuristiques) et enfin, nous avons
utilis les notions ensemblistes en Prolog.