0% ont trouvé ce document utile (0 vote)
3 vues18 pages

Introduction à la Programmation en Prolog

Prolog est un langage de programmation basé sur la logique des prédicats, permettant de formuler des connaissances sous forme de faits et de règles d'inférence. Il est utilisé dans divers domaines de l'intelligence artificielle, tels que la résolution de problèmes, les systèmes experts et le traitement du langage naturel. Contrairement aux langages de programmation traditionnels, Prolog se concentre sur la déduction et l'inférence plutôt que sur l'algorithme de solution.

Transféré par

attarayoub778
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues18 pages

Introduction à la Programmation en Prolog

Prolog est un langage de programmation basé sur la logique des prédicats, permettant de formuler des connaissances sous forme de faits et de règles d'inférence. Il est utilisé dans divers domaines de l'intelligence artificielle, tels que la résolution de problèmes, les systèmes experts et le traitement du langage naturel. Contrairement aux langages de programmation traditionnels, Prolog se concentre sur la déduction et l'inférence plutôt que sur l'algorithme de solution.

Transféré par

attarayoub778
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPT, PDF, TXT ou lisez en ligne sur Scribd

PROLOG

(PROgrammer en LOGique)

1- Vision synthétique
Programmation … selon le modèle

Progr. … Progr. Objet


Procédurale
Manipulation de
Symboles et de Structures
Lambda
Progr. Logique
Calcul
Symbolique des Prédicats
Progr.
Fonctionnelle Progr. En
Logique

Progr.
Progr. LISP
PROLOG
Introduction
• Programmation Symbolique
• Programmation en Logique (la déduction)
• Programmation par pattern-matching
• Programmation interactive (comme Lisp)
– Un Programme Prolog est une Base de Connaissance
– L’utilisateur pose des questions/requêtes (sur la BC) et
Prolog s’efforce de répondre (en effectuant des
inférences)
Background: Vue logique d’un Système Intelligent

Catégorisation
Ontologie & Raisonnement
Classification

Base de Résolution
Connaissance Jeu
de Problème

Opérations Interprétation
Conceptuelles Apprentissage &
Compréhension
Action,
Comportement Communication &
& Langage Naturel
Plannification
Prolog & l’Intelligence Artificielle
Système Intelligent à base de
règles/productions
Résolution de
Problèmes & Jeux Planification

Logique &
Raisonnement Traitement du
Base de Connaissance Langage Naturel
& Raisonnement

PROLOG
Introduction
• Plusieurs problèmes en Intelligence Artificielle
n’ont pas de solution algorithmique;
• On a des connaissances sur le problème/domaine et
des possibilités d’inférence ou de comportement;
• Et on doit avoir un système d’inférence/résolution
de problèmes qui doit explorer et trouver lui-même
une solution à partir des connaissances et des
possibilités offertes
PROLOG

• Un programme Prolog est une Base de


Connaissance (des faits et des règles)
– Le programmeur formule sa connaissance du domaine,
et non une solution/algorithme à un problème
particulier
• L’interpréteur Prolog est un moteur d’inférence
(inférer des connaissances à partir des
connaissances existantes)
• => Prolog est radicalement différent des autres LP
Prolog: Programmer en Logique des
Prédicats - Rappel
• Prolog est fondé sur la logique des prédicats.
• Un Programme Prolog est constitué de faits et/ou
de règles d’inférence (P -> Q)
• Un prédicat est une structure: identifiant du
prédicat suivi de ses arguments.
• Exemples: Ident de Constante =
valeur
personne(hamid, 20, etudiant).
personne(rachid, 34, enseignant).
homme(rachid). Ident de Variable;
grandPere(X, Y). maj.
Attention
• Implication logique:
P -> Q.
p1 et p2 et p3 -> Q.

En Prolog:
Q :- p1, p2, p3.
– Un fait est représenté par un (1 seul) prédicat. Exemple:
pere(ismael, fatima).
– Une règle: Conclusion :- Condition. Exemple:
grand_pere(X, Y) :- pere(X, Z), pere(Z, Y).
grand_pere(X, Y) :- pere(X, Z), mere(Z, Y).
• La partie Conclusion d’une règle (on parle aussi de « tête d’une règle ») est
représentée par un (1 seul) prédicat.
• Le « si » de la règle est représentée par « :- » (le ‘deux points’ suivi du tiret
du 6)
• La partie Condition d’une règle (on parle aussi de la « queue d’une règle »)
est représentée par une formule/composition de prédicats.
• Une condition/formule avec 0 prédicat => C’est le cas d’un fait.
• Une condition/formule avec 1 ou + prédicats (avec des opérateurs logiques:
conjonction représentée par ‘,’ , la disjonction (‘;’ ex: (homme(rachid) ;
femme(rachid)) ), la négation (‘\+’ ex: \+(mortel(farid)) ), etc.
– Une question est représentée par une formule/composition de
prédicats (comme la queue d’une règle).
– Fait, règle et question se terminent par un point.
Programme Prolog
pere(hamid, khalid).
pere(hamid, hicham).
pere(kadour, hamid).
pere(ismael, fatima).

mere(fatima, khalid).
mere(khadija, karima).

grand_pere(X, Y) :- pere(X, Z), pere(Z, Y).


grand_pere(X, Y) :- pere(X, Z), mere(Z, Y).
Un Programme Prolog (suite)
• Des paquets: Un programme Prolog est organisé
en paquets
– Un paquet est un ensemble de faits et/ou de règles
fournissant les façons possibles d’inférer la vérité d’un
prédicat/terme
– Les membres d’un paquet (faits ou règles) ont la même
signature:
• Signature d’un prédicat: ident du prédicat/nombre des
arguments; Ex: pere(hamid, rachid) : pere/2
• La signature d’un fait = la signature de son prédicat
• La signature d’une règle = la signature de sa tête (qui est un
prédicat)

• Dans l’exemple précédent:


– Le programme est constitué de 3 paquets:
pere/2, mere/2 et grand_pere/2
Exemple 1
mortel(X) :- homme(X).
homme(socrate).

====================
? mortel(socrate).
… réponse
? mortel(hamid).
… réponse
Exemple 1bis

mortel(X) :- homme(X).
homme(X) :- marocain(X).
marocain(socrate).
marocain(farid).

====================
? mortel(socrate).
… réponse
? mortel(hamid).
… réponse
Exemple 2
pere(hamid, khalid).
pere(hamid, hicham).
pere(kadour, hamid).
pere(ismael, fatima).
mere(fatima, khalid).
mere(khadija, karima).

grand_pere(X, Y) :- pere(X, Z), pere(Z, Y).


grand_pere(A, B) :- pere(A, Z), mere(Z, B).
=====================================
? grand_pere(hamid, khalid).
… réponse
? grand_pere(ismael, khalid).
…réponse
? grand_pere(x, khalid).
Représentation des connaissances

• Comment formuler les connaissances en


prédicats, règles, paquets et programme
Prolog
Exemples
• « hamid est un homme »
homme(hamid)
• « hamid est un marocain »
marocain(hamid)
• « hamid est le frère de hicham »
frere(hicham, hamid)
• « Tous les marocains sont gentils »
gentil(X) :- marocain(X).
Domaines d’application de Prolog
• Prolog est approprié lorsque la Connaissance est
formulable en un ensemble de faits et de règles
– Logique et Raisonnement - Démonstrateur de théorème
– Résolution (automatique) de Problèmes
– Les Systèmes Experts (Expertise formulée en
BC/Règles)
– Les Jeux
– Traitement du Langage Naturel (Grammaire)
– Planification
– BD avancées (déductives)
– Etc.

Vous aimerez peut-être aussi