Tutoriel Prolog: On énonce un problème sous forme des règles

Un programme prolog est constitué principalement de faits et de règles. les règles sont le moyen d'exprimer ce qu'on l'on veut faire des faits qu'on a enregistré.

Par exemple, nous savons dans quelles villes habitent une liste de personnes...

habite('Julia', 'New York').
habite('Tom', 'San Francisco').
habite('Naomi', 'New York').
habite('Harrison', 'San Francisco').

Julia habite à New York, Tom à San Francisco, etc...

Une façon d'exploiter ces connaissances peut-être de trouver quelles personnes habitent dans la même ville. Pour cela on définit une règle.

voisin(X,Y) :- habite(X, Ville), habite(Y, Ville).

Cela s'énonce ainsi:

  1. X et Y sont voisins si
  2. X habite dans telle ville
  3. Y habite dans telle ville
  4. de facto la variable Ville à le même contenu dans les deux énoncés

Cela nous donnera Julia voisin de Noami, Tom voisin de Harrison. Mais cela nous donnera aussi Julia voisin de Julia, car prolog ne suppose pas de lui-même que X et Y sont deux personnes différentes. il faut donc ajouter une autre condition, c'est que les variables X et Y aient des valeurs différentes.

voisin(X,Y) :- habite(X, Ville), habite(Y, Ville), X \= Y.

Nous aurons le résultat suivant.

Julia voisin de Naomi 
Tom voisin de Harrison
Naomi voisin de Julia
Harrison voisin de Tom

Pour afficher ces résultats, nous allons ajouter un petit programme. Un programme est une règle qui contient des instructions. Nous utilisons trois instructions de la bibliothèque standard:

Voici donc le programme:

program :-
write('Voisins...\n'),
forall(voisin(X,Y), format("~a voisin de ~a ~n", [X, Y])),
write('Fin').

Puisque "program" est une règle, pour l'exécuter vous tapez la ligne suivante dans la console prolog:

program.

Cela affichera:

Voisins...
Julia voisin de Naomi 
Tom voisin de Harrison
Naomi voisin de Julia
Harrison voisin de Tom Fin

Vous pouvez également invoquer directement la règle "voisin":

voisin('Julia', 'Naomi').

qui retournera "yes".

Sachant maintenant comme énoncer des faits et des règles, vous avez tout ce qu'il faut pour résoudre des problèmes complexes grâce à Prolog...

  1. Le langage Prolog.
  2. Tutoriel Prolog: On enregistre un ensemble de faits.
  3. Tutoriel Prolog: On énonce un problème sous forme de règles.
  4. Démo Prolog: Recherche appartement.