Décembre 2013

Transcription

Décembre 2013
Mercredi 18 décembre 2013
Master 1 Informatique - UE 177EN005
Représentation des Connaissances
Programmation CLIPS
!"
Durée : 1h30
Seul le document suivant est autorisé
- Synthèse de la syntaxe CLIPS
Question de cours :
•
•
Quelles sont les différences entre les moteurs d’inférences de Prolog et de CLIPS ?
Quelles en sont les principales conséquences en termes de syntaxe ?
Soit le problème suivant :
Un fermier doit transborder un loup, une chèvre et un chou de la rive gauche à la rive
droite d’un fleuve. À chaque traversée, il peut prendre au maximum un seul des trois
personnages. En l’absence du batelier, le loup mange la chèvre, et la chèvre le chou.
La résolution consiste à développer un arbre de recherche où chaque situation est représentée par
un multislot contenant quatre bits qui indiquent respectivement les positions du loup, de la chèvre,
du chou et du batelier :
(situation <loup> <chèvre> <chou> <batelier>)
Exemple : (situation 0 1 0 1) signifie que le loup et le chou sont sur la rive gauche (0), et que la
chèvre et le batelier sont sur la rive droite (1). L’intérêt de cette représentation est que le passage
d’une rive à l’autre se traduit par Y = (1 – X) où X est la rive de départ et Y la rive d’arrivée.
Les liens entre les nœuds de l’arbre seront implémentés à l’aide de « fact-address » et l’affichage
de la solution sera réalisé à l’aide d’une fonction récursive :
CLIPS> (reset)
CLIPS> (run)
Situation initiale = (0 0 0 0)
Le batelier transporte la chèvre = (0 1 0 1)
Le batelier traverse seul = (0 1 0 0)
Le batelier transporte le loup = (1 1 0 1)
Le batelier transporte la chèvre = (1 0 0 0)
Le batelier transporte le chou = (1 0 1 1)
Le batelier traverse seul = (1 0 1 0)
Le batelier transporte la chèvre = (1 1 1 1)
CLIPS>