PROLOG

publicité
PROLOG
- C++ : langage procédural
- Prolog : langage déclaratif
- Prolog = PROgrammation LOGique
- Inventeur : Colmerauer en 1970
- Utilisé en intelligence artificielle
- exemples :
- problème des 8 reines
- SEND + MORE = MONEY
- ...
Le langage
- Un programme Prolog est une suite
de clauses :
- faits (X est un astre)
- règles (X est une planète si X est un
astre et X est un satellite d'une étoile)
- requêtes (Quels sont tous les astres ?)
Faits
- Prédicat(arg1, arg2, ... , argn)
- capitale(france,paris).
- astre(terre).
- étoile(soleil).
- satellite(terre,soleil).
- satellite(lune,terre).
- plus_petit_que(3,6).
- factoriel(0,1)
Règles
planète(X) :- astre(X), étoile(Y), satellite(X,Y).
oncle(X,Y) :- père(Z,Y),frère(Z,X).
Rmq : les variables commencent par une majuscule !
Requêtes
planète(terre).
yes
planète(X).
X = terre.
planète(soleil).
no
Fonctionnement
planète(X)
ET
astre(X)
astre(terre).
astre(lune).
astre(soleil).
satellite(terre,soleil).
satellite(lune,terre).
étoile(véga).
étoile(soleil).
planète(X) :- astre(X), étoile(Y),
satellite(X,Y).
étoile(Y)
satellite(X,Y)
Exercice
- On dispose de faits utilisant les
prédicats parent, homme et femme :
parent(jean,léon).
parent(jeanne, léon).
homme(jean).
femme(jeanne).
etc...
- Ecrire les prédicats père, mère, frère,
soeur, fils, fille, oncle, tante, neveu et
nièce, grand-père, grand-mère...
Autre exemple
parent(alain,jean).
parent(jean,bruno).
parent(bruno,louis).
ancetre(X,Y) :- parent(X,Y).
ancetre(X,Y) :- parent(X,Z),ancetre(Z,Y).
Requête : ancetre(X,Y).
ancetre(X,Y)
OU
ET
parent(X,Y)
parent(X,Z)
parent(alain,jean).
parent(jean,bruno).
parent(bruno,louis).
ancetre(X,Y) :- parent(X,Y).
ancetre(X,Y) :- parent(X,Z),ancetre(Z,Y).
ancetre(Z,Y)
ancetre(X,Y)
OU
ET
parent(X,Y)
parent(X,Z)
ancetre(Z,Y)
X=alain, Y=jean
X=jean, Y=bruno
X=bruno, Y=louis
X=alain, Y=bruno
X=alain, Y=louis
X=jean, Y=louis
parent(alain,jean).
parent(jean,bruno).
parent(bruno,louis).
ancetre(X,Y) :- parent(X,Y).
ancetre(X,Y) :- parent(X,Z),ancetre(Z,Y).
Factorielle
fact(0,1).
fact(X,N):- X1 is X-1, fact(X1,N1), N is N1*X.
Requête :
fact(5,N).
N=120
Minimum
min(A,B,A) :- A < B.
min(A,B,B) :- A >= B.
Requêtes :
min(3,4,X).
X=3
min(1,4,4).
no
Les listes
- temps_semaine([12,14,9,6,11,10,15]).
- élèves([jean,marie,léon,bernard]).
- [X|L] : X est le premier élément, L est
le reste.
- Exemple : premier([X|L],X).
Téléchargement