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>