OBJECTIFS

publicité
PROLOG
.
OBJECTIFS

.
PROLOG





INTRODUCTION
DEFINITION
LA BOITE A OUTILS PROLOG
LANGAGES VOISINS
EXEMPLES
ORIGINE



1970 PROgrammation LOGique
GRANDS ESPOIRS
1990 UTILISE EN INTERNE PAR LES
APPLICATIONS
SYSTEMES EXPERTS
PRINCIPES


ENSEMBLE DE FAITS ET DE REGLES
MOTEUR D'INFERENCE LES COMBINES
POUR REPONDRE A UNE DEMANDE
PROLOG

AVANTAGE
– PAS DE PROGRAMMATION

INCONVENIENTS
– LENT
– PAS STANDARDISE
– RETOUR A LA PROGRAMMATION POUR OPTIMISATION
PROLOG
APPLICATIONS




SYSTEME EXPERT
BASE DE DONNEES
CALCUL SYMBOLIQUE
RESOLUTION DE CONTRAINTES
CLAUSES


FAITS
REGLES
LES FAITS




habite(daniel,massy).
PREDICAT(ARGUMENTS).
SENS DE LA RELATION
?- habite(pierre,paris).
habite
– true
– false
daniel
massy
LES FAITS

possède(john,livre(zola,germinal)).
possède
john
livre
zola
germinal
LES REGLES




habite_capitale(Personne):habite(Personne,Ville),capitale(Ville).
Turbo-PROLOG
habite_capitale(Personne)if
habite(Personne,Ville) and capitale(Ville).
ET ,
OU ;
DES FAITS ET DES REGLES
/* prédicat habite */
habite(daniel,massy).
habite("Pierre",paris).
habite(paul,antony).
/* prédicat capitale */
capitale(paris).
capitale(londres).
/* prédicat habite_capitale */
habite_capitale(Personne)
:- habite(Personne,_ville),capitale(_ville).
LEXIQUE

NOMBRES
– 123, 1e10

CONSTANTES
– daniel, massy, "Pierre", paris, paul, antony

INCONNUES
– _ville, Personne
– anonyme '_'
INTERROGATION




?- habite_capitale(daniel).
?- habite_capitale("Pierre").
?- habite_capitale(X).
?- habite_capitale(_).
LOGIQUE



ORDRE 0 : FAITS
ORDRE 0+ : FAITS + REGLES(CONSTANTES)
ORDRE 1 : FAITS + REGLES(INCONNUES)
SYSTEME EXPERT

BASE
– FAITS
– REGLES

MOTEUR D'INFERENCE
– CHAINAGE AVANT
– CHAINAGE ARRIERE
MOTEUR D'INFERENCE
QUESTION
habite("Pierre",paris).
habite(daniel,massy).
habite(paul,antony).
capitale(paris).
capitale(londres).
habite_capitale(Personne)
:- habite(Personne,_ville),capitale(_ville).
?-habite_capitale(daniel).
MOTEUR D'INFERENCE
UNIFICATION
habite("Pierre",paris).
habite(daniel,massy).
habite(paul,antony).
capitale(paris).
Personne=daniel
capitale(londres).
habite_capitale(Personne)
:- habite(Personne,_ville),capitale(_ville).
?-habite_capitale(daniel).
MOTEUR D'INFERENCE
UNIFICATION
habite("Pierre",paris).
habite(daniel,massy).
unification impossible
habite(paul,antony).
capitale(paris).
capitale(londres).
habite_capitale(daniel)
:- habite(daniel,_ville),capitale(_ville).
?-habite_capitale(daniel).
MOTEUR D'INFERENCE
UNIFICATION
habite("Pierre",paris).
habite(daniel,massy).
unification _ville=massy
habite(paul,antony).
capitale(paris).
capitale(londres).
habite_capitale(daniel)
:- habite(daniel,_ville),capitale(_ville).
?-habite_capitale(daniel).
MOTEUR D'INFERENCE
UNIFICATION
habite("Pierre",paris).
habite(daniel,massy).
habite(paul,antony).
unifications impossibles
capitale(paris).
capitale(londres).
habite_capitale(daniel)
:- habite(daniel,massy),capitale(massy).
?-habite_capitale(daniel).
OK
MOTEUR D'INFERENCE
BACKTRACKING
habite("Pierre",paris).
habite(daniel,massy).
habite(paul,antony).
capitale(paris).
capitale(londres).
habite_capitale(daniel)
:- habite(daniel,_ville),capitale(_ville).
?-habite_capitale(daniel).
FAUX
VRAI
FAUX
LISTES



[élément1, élément2, élément3 ]
[Tete|Reste]
Predicat = ..Liste
! CUT

VERSION SANS !
– abs(Z,N) :- Z>=0 , N = Z.
– abs(Z,N) :- Z<0 , N = -Z.

VERSION AVEC !
– abs(Z,N) :- Z>=0 , !, N = Z.
– abs(Z,N) :- N = -Z.
FAIL
BOITE A OUTILS

MANIPULATION DE CLAUSES
– abolish, assert, asserta, assertz, retract, arg, functor.

TESTS SUR LES DONNEES
– integer, novar, var, atom, atomic, number

ENTREES SORTIE
– listing, nl, read, put, see, seen, tell, told, write

LA MISE AU POINT
– trace, notrace
– spy, nospy

LE CALCUL
– opérateurs de comparaison
– X is expression
DEFINITION D'OPERATEURS




habite(jean,paris)
:- op(800,xfy,habite)
jean habite paris.
UTILISE PAR LES GRAMMAIRES
LES GRAMMAIRES

/* règles de décomposition d'une phase */
–
–
–
–

/* définition du dictionnaire typé des mots */
–
–
–
–
–

proposition --> objet , reste_de_phrase.
objet --> article, nom.
reste_de_phrase --> verbe, objet.
reste_de_phrase --> objet.
article --> [le].
article --> [la].
nom --> [pomme].
nom --> [femme].
verbe --> [mange].
/* interrogation test si phrase correcte: */
– phrase(proposition, [la, femme, mange, la, pomme])
PROGRAM\SANAL
TURBO PROLOG





REVENDU PAR BORLAND
TYPES
MODULES
SEPARATION DONNEES/TRAITEMENTS
REGLES STATIQUES
PROLOG III



CONTRAINTES SUR LES DONNEES
RESOLUTION DE SYSTEMES LINEAIRES
TUPLETS AU LIEU DE LISTE
AUTRES SYSTEMES EXPERTS

KOOL (BULL) SYSTEME EXPERT OBJET
– classes, objets, attributs, et méthodes
– règles et moteur d'inférence

CAD_GEODE GESTION CONFIGURATION
– objet
– base de données relationnelles
– système expert

LANGAGES CLASSIQUES
– C/C++
– PASCAL
LANGAGE PAR CONTRAINTES
CHARME (BULL)

DEFINITION DES CONTRAINTES
– MATRICIEL
– ITERATIONS
– NUMERIQUE

MOTEUR D'INFERENCE
– PRIORITE AUX VOIES A FAIBLE COMBINATOIRE
EXEMPLE






SYSTEME EXPERT
CALCUL SYMBOLIQUE
TRI
TOUR DE HANOI
RECHERCHE DE CHEMINS
PROBLEME DES REINES
SYSTEME EXPERT
adam
paul
martine
martine
hugo
pierre
marie
anne
daniel
anna
FAMILLE.PRO
DERIVEE
CALCUL SYMBOLIQUE
%
% d(expression,DERIVE)
% calcul dans DERIVE la dérive d(expression)/dx
%
% les opérateurs traités sont puiss,sin,cos,log,+,-,*,/
%
% définition de l'opérateur x puiss y
:-op(200,xfy,puiss).
PROGRAM\DIFF
DERIVEE
% cas particulier f(x) = x
d(X,D):-X=x,D is 1,!.
% dérivée d'une somme ou différence
d(X,D):- X =..Y,Y=['+',A,B],d(A,D1),d(B,D2),plus(D1,D2,D),!.
d(X,D):- X =..Y,Y=['-',A,B],d(A,D1),d(B,D2),plus(D1,-D2,D),!.
% dérivée d'un produit ou d'un rapport
d(X,D):- X =..Y,Y=['*',U,V],d(U,Up),d(V,Vp),
mult(U,Vp,UVp),mult(Up,V,UpV),plus(UVp,UpV,D),!.
d(X,D):- X =..Y,Y=['/',U,V],d(U,Up),d(V,Vp),
mult(U,Vp,UVp),mult(Up,V,UpV),plus(-UVp,UpV,DN),
D = DN/(V*V),!.
DERIVEE
% dérivée d'une fonction circulaire
d(X,D):- X =..Y,Y=['sin',U],d(U,Up),mult(Up,cos(U),D),!.
d(X,D):- X =..Y,Y=['cos',U],d(U,Up),mult(Up,sin(U),MD),
D = -MD,!.
% fonction logarithme naturelle
d(X,D):- X =..Y,Y=['log',U],d(U,Up),D = Up/U,!.
% fonction puissance constante
d(X,D):- X =..Y,Y=['puiss',U,N],d(U,Up),mult(U,Up,D1),
N1 is N - 1, mult( N1 ,D1,D),!.
DERIVEE
% tout le reste est considéré comme constante à dérivéR
d(X,D):-D is 0.
% simplifications d'une somme
plus(0,X2,D):-D = X2,!.
plus(X1,0,D):-D = X1,!.
plus(X1,X2,D):-D is X1+X2,!.
plus(X,X,D):-D = 2*X,!.
plus(X1,X2,D):-D = X1+X2.
DERIVEE
% simplifications d'un produit
mult(0,_,D):-D = 0,!.
mult(_,0,D):-D = 0,!.
mult(X1,X2,D):-D is X1*X2,!.
mult(1,X2,D):-D = X2,!.
mult(X1,1,D):-D = X1,!.
mult(X1,X1):-D = X1 puiss 2,!.
mult(X1,X2,D):-D = X1*X2.
end.
QUICKSORT


PRENDRE LE PREMIER ELEMENT COMME
CRITERE
SEPARER EN DEUX LISTES
– > CRITERE
– < CRITERE


TRIER LES SOUS-LISTES
CONCATENER LES SOUS-LISTES TRIEES
QSORT.PRO
ARBRES
% consultation/insertion dans l'arbre
arbre(CLEF, fiche(CLEF,INFO,_,_), INFO) :- !. % trouvé
% cherche avant
arbre(CLEF, fiche(CLEFCC,_,AVANT,_), INFO)
:- CLEF @< CLEFCC, arbre(CLEF, AVANT, INFO).
% cherche après
arbre(CLEF, fiche(CLEFCC,_,_,APRES), INFO)
:- CLEF @> CLEFCC, arbre(CLEF, APRES, INFO).
end.
RECHERCHE
ITINERAIRE


ENTREE LISTE DE VILLES ET DE DISTANCES
TROUVER LES ITINERAIRES
DIST.PRO
REINES


N REINES SUR UN ECHIQUIER
AUCUNE N'EST ECHEC
PROLOG OR NOT PROLOG


ECHEC DU LANGAGE
MULTITUDE DE LANGAGES UTILISES EN
INTERNE PAR LES OUTILS IA
Téléchargement