Академический Документы
Профессиональный Документы
Культура Документы
Campus-Booster ID : XXX
www.supinfo.com
Copyright © SUPINFO. All rights reserved
Programmation logique
Votre formateur…
Titre: Professeur Référent en IA
Publications: 60 articles,
communications et livres dont 48 sur l’IA
Contact:
Marianne Belis marianne.belis@supinfo.com
SUPINFONE: 1 317
Programmation logique
Votre formateur…
Titre: Professeur Référent en
Algorithmique, Théorie des Graphes et
Intelligence Artificielle.
Contact:
Arnaud.CUEILLE@supinfo.com
SUPINFONE: 1 50087
Programmation logique
Objectifs de ce module
En suivant ce module vous allez:
Aborder la programmation
logique, déclarative.
Plan du module
Voici les parties que nous allons aborder:
Eléments de base
Spécificités et mécanismes
fondamentaux
Récursivité et listes
Applications
Eléments de base
Plan de la partie
Voici les chapitres que nous allons aborder:
Généralités
Structure du programme
Les termes
L’arithmétique
Les entrés/sorties
Utilisation de SWI Prolog
Eléments de base
Généralités
Généralités
- à sa puissance déductive
- à l’utilisation des variables
- au mécanisme de la remontée qui permet de
chercher toutes les solutions existantes.
Eléments de base
Généralités
Structure du programme
FAITS et REGLES
BASE DE DONNEES
(ou base de connaissances)
Eléments de base
Structure du programme
LES FAITS
Un fait est une vérité non conditionnée.
Exemples :
blanche (maison). --> (la maison est blanche)
aime (jean, prolog). --> (Jean aime le prolog)
voiture (ford, rouge, 3, 5.000). --> (la voiture est
une ford rouge de trois ans et coûte 5.000 euros)
Eléments de base
Structure du programme
LES REGLES
Structure du programme
Règles à plusieurs conditions
Exemple :
grand-père(jean, yves) :-
père(jean, paul) and père(paul, yves).
Eléments de base
Structure du programme
Structure du programme
Plusieurs règles ayant la même conclusion (paquet de clauses).
Exemple:
achète(jean, voiture) :- hérite(jean, fortune).
achète(jean, voiture) :- gagne(jean, loterie).
Structure du programme
Structure du programme
Paquet de clauses (suite)
Structure du programme
Conventions d'écriture.
La programmation en Prolog implique les normes suivantes :
- les atomes
- les nombres
- les variables
- les termes complexes
Eléments de base
Les termes
variables constantes
atomes nombres
Eléments de base
Les termes
Les termes
Les atomes :
suite continue de caractères qui commencent par
une minuscule (pas de blancs)
suite de caractères entre apostrophes (si les
symboles contiennent des blancs ou des
majuscules au début).
suite de caractères spéciaux
élève
Exemples d’atomes
ticket_de_métro :
‘ticket de métro’
‘Jean est sportif’
@+:>:-
Eléments de base
Les termes
Les nombres
Entiers (tout nombre entier)
Flottants (les nombres décimaux)
Les variables:
Suite de caractères commençant par
- une majuscule
- par un tiret-bas (underscore)
L’arithmétique
En Prolog les symboles: +, -, *, /, mod
ne permettent pas d’effectuer des calculs.
Ce sont des foncteurs avec des arguments. Ex:
?- X is 3 + 4. X =7
?- X is 5 – 2. X = 3
?- X is 9*2. X = 18
?- X is 11/2. X = 5.5
?- X is mod(5,2). X = 1
?- 1 is mod(5,2). yes
Eléments de base
L’arithmétique
L’arithmétique
Les opérateurs de comparaison d’entiers sont:
< inférieur à
<= inférieur ou égal à
> supérieur à
>= supérieur ou égal à
=:= (yes si égalité)
=\= (yes si différents)
Eléments de base
L’arithmétique
Exemple de comparaisons:
?- 3+2 < 9. Yes
?- 2+2=:=1+3 Yes*
?- 5 =< 5. Yes
?- 2 =\= 9. Yes
?- X = 5, X > 12. No
?- X > 6. erreur: arguments non instanciés
Eléments de base
L’arithmétique
?- X=a, write(X). a
?- write(a), write(‘ ‘), write(b). a b (un espace blanc)
?- write(a), tab(6), write(b). a b (six espaces blancs)
?- write(a), nl, write(b). a (saut de ligne)
b
Eléments de base
Spécificités et mécanismes
fondamentaux
Spécificités et mécanismes fondamentaux
Plan de la partie
Voici les chapitres que nous allons aborder:
L’unification
Interrogation de la base de données
La remontée
Les prédéfinis FAIL et CUT
Paquet de clauses
La négation
Bases de données dynamiques
Le mode TRACE
Le prédéfini FINDALL
Spécificités et mécanismes fondamentaux
L’unification
Prolog
RAISONNE
?- X = Y. X = Y
?- toto = X. X = toto (la variable est instanciée)
?- f(m(g), Z) = f(Y, s(m)). Y = m(g) Z = s(m)
(les foncteurs sont égaux et les arguments s’unifient)
Spécificités et mécanismes fondamentaux
Interrogation de la BDD
Structure de la question:
même syntaxe qu'un fait.
Prolog cherche à unifier la question avec un fait.
Réponse :
yes: l'unification a lieu (même prédicat et
mêmes arguments dans le même ordre).
no : l'unification n'a pas lieu.
Spécificités et mécanismes fondamentaux
Interrogation de la BDD
Unification avec un fait (les faits de la diapo 11):
-? blanche(voiture). -> no
Spécificités et mécanismes fondamentaux
Interrogation de la BDD
gagne(jean, loterie).
achète(jean, voiture) :- gagne(jean, loterie).
père(jean, paul).
père(paul, yves).
grand-père(jean, yves) :-
père(jean, paul), père(paul, yves).
?- grand-père(jean, yves).
yes
Spécificités et mécanismes fondamentaux
Interrogation de la BDD
Interrogation de la BDD
clauses:
a_écrit (hugo, ruy-blas).
a_écrit (hugo, hernani).
questions:
?- a_écrit(hugo, hernani), a_écrit (hugo, ruy-blas).
Interrogation de la BDD
clauses:
a_écrit (hugo, hernani).
a_écrit (hugo, ruy-blas).
question:
?- a_écrit (hugo, X). % qu’est-ce qu’il a écrit V.H?
Interrogation de la BDD
Questions multiples et utilisation de variables.
Exemple :
clauses:
a_écrit (hugo, hernani).
a_écrit (hugo, ruy-blas).
Question:
?- a_écrit (X, hernani), a_écrit (X, ruy-blas).
Interrogation de la BDD
Détail sur l'unification.
Première étape :
Prolog cherche à instancier X de la première
question :
a_écrit (X, hernani) --> il lie X à hugo.
Deuxième étape :
Prolog « remonte » avec X=hugo et cherche un
fait qui s'unifie avec : a_écrit (hugo, ruy-blas).
il trouve --> affiche : X = hugo
Spécificités et mécanismes fondamentaux
La remontée
Procédé de recherche par « retour en arrière » (backtracking)
:
clauses
ami (jacques, yves).
ami (jean, yves).
ami (pierre, luc).
ami (pierre, tom).
ami (pierre, yves).
ami (jean, tom).
ami (jean, serge).
goal
?- ami (jean, X), ami (pierre, X).
La remontée
La remontée
q u e : l a
Remar p e r m e t à
m o n té e
r e r o u v e r
g d e t
Prolo v a l eu r s
l e s
toutes a b le .
n e v a r i
d'u
Spécificités et mécanismes fondamentaux
Raisonnement PROLOG
Raisonnement PROLOG
Raisonnement PROLOG
fail
Prédicat prédéfini qui signifie l'échec
d'un but et force la remontée.
Utilisé lorsque l'on veut connaître toutes
les solutions d'un problème et que la
remontée n'agit pas.
Spécificités et mécanismes fondamentaux
Les prédéfinis FAIL et CUT
clauses
père (jean, yves).
père (jules, marie).
père (jules, ève).
tous_présents:- père(X,Y),
writef( '%w est le père de %w', [X,Y] ).
cut
- Le « coupe-choix » est un prédicat
prédéfini (noté "!") qui empêche la
remontée.
- Utilisé lorsqu'on est intéressé
seulement dans certaines solutions du
problème (pas toutes).
- Evite des explorations inutiles.
- Permet un contrôle plus fin sur le
déroulement d'un programme.
Spécificités et mécanismes fondamentaux
Exemple :
max(X,Y,Y) :- X =< Y.
max(X,Y,X) :- X > Y.
Paquet de clauses
Action du CUT dans un paquet de clauses
Soient les clauses (sans CUT):
a(X,Y) :- b(X), e(Y).
a(X,Y) :- c(X), e(Y).
Et les faits:
b(1). b(2). c(3). e(4).
Le but: a(X,Y).
Réponses: X=1, Y=4; X=3, Y=4; X=2, Y=4
Spécificités et mécanismes fondamentaux
Paquet de clauses
Mêmes clauses (avec CUT):
a(X,Y) :- b(X), !, e(Y).
a(X,Y) :- c(X), e(Y).
b(1). b(2). c(3). e(4).
But: a(X,Y).
Réponse: X=1, Y=4
Paquet de clauses
NOT
Utilisation de la négation en PROLOG
Spécificités et mécanismes fondamentaux
La négation en Prolog
Soit le programme:
courageux(jean).
courageux(pierre).
chétif(pierre).
explorateur (X) :- courageux (X), not (chétif (X)).
(un explorateur doit être courageux et pas chétif)
Le but:
?- explorateur(X). %qui est explorateur?
X=jean
Spécificités et mécanismes fondamentaux
La négation en Prolog
--> correct
Mais :
--> incorrect
Spécificités et mécanismes fondamentaux
La négation en Prolog
La négation en Prolog
La négation en Prolog
u s i o n :
Concl
o u j o u r s
a u t t
II f a n t l e s
e r d e v
plac n i é s , d e s
a t s
prédic s a n s
d i c a t s
pré
T " q u i
"NO t d e l i e r
t t e n
perme e s .
v a r i a b l
le s
Spécificités et mécanismes fondamentaux
calculer(X,Y,Res):- stocker(X,Y,Res), !.
calculer(X,Y,Res):- Res is (X+2)*Y,
assert(stocker(X,Y,Res)).
?- calculer(3,4,X).
X = 20
Spécificités et mécanismes fondamentaux
Mode TRACE
TRACE permet de suivre pas a pas le
déroulement du programme
?- trace.
Le prédéfini FINDALL
Le prédéfini FINDALL
Exemple:
Récursivité et listes
Récursivité et listes
Plan de la partie
Voici les chapitres que nous allons aborder:
Le schéma récursif
Programmes récursifs
Chemins dans un graphe
Les listes: structure et unification
Programmes récursifs sur les listes
Récursivité et listes
Le schéma récursif
Le schéma récursif
Le schéma récursif
Programmes récursifs
père(jean,pierre) .
père(pierre,jules) .
père(jules,gaspard).
père(gaspard,leon).
ancêtre(X,Y):-
père(X,Z),
ancêtre(Z,Y).
Récursivité et listes
Programmes récursifs
pere(jean,pierre).
pere(pierre,jules).
pere(jules,gaspard).
ancetre(X,Y):- pere(X,Y).
ancetre(X,Y):- pere(X,Z), ancetre(Z,Y).
Programmes récursifs
factorielle(1, 1).
factorielle(N, R):-
N > 1,
N1 is N - 1,
factorielle( N1, R1),
R is N * R1. % 5! = 5*4!
b
Récursivité et listes
arc(a, b).
arc(b, c).
arc(c, d).
arc(c, e).
arc(a, e).
chemin(X,Y):- arc(X,Y).
chemin(X,Y):- arc(X, Z), chemin(Z, Y).
Récursivité et listes
goal
membre (c,[a, b, c, d,]).
réponse: Yes
Récursivité et listes
membre(X,[X )[ـ.
membre(X,[ ـ Y]) :- membre(X,Y).
pair(X,Liste) :- membre(X,Liste),
(X mod 2) =:= 0.
goal
pair(X,[1,2,3,4,5,6,7]).
%goal
longueur([a, b, c, d, e, f], L).
%réponse:
L=6
Récursivité et listes
Applications
Applications
Plan de la partie
Voici les chapitres que nous allons aborder:
Recherche opérationnelle
Systèmes Expert
La méthode P.E.R.T.
Les fractales
Applications
Recherche opérationnelle
Systèmes Expert
La méthode P.E.R.T.
On considère quatre groupes de tâches qui vont être détaillées par la suite.
Applications
La méthode P.E.R.T.
Groupe n°1: fabrication et distribution du NP
1.1 – Fabrication du NP (9 semaines)
1.2 – Contrats avec les transporteurs (1 semaine)
1.3 – Approvisionnement des détaillants (NP + affichettes – 3 semaines)
La méthode P.E.R.T.
Groupe n° 4: production des affiches et des affichettes
4.1 – Elaboration des textes et dessins publicitaires (4 semaines)
4.2 – Elaboration des maquettes (3 semaines)
4.3 – Evaluation et choix d’une maquette (2 semaines)
4.4/1 – Impression des affiches murales (5 semaines)
4.4/2 – Impression des affichettes (1 semaine)
4.5 – Distribution des affiches aux entreprises d’affichage (2 semaines)
Toutes ces données sont synthétisées dans un tableau à trois colonnes que
les élèves sont invités à remplir. Exemple:
Les élèves sont invités à dessiner ce graphe en notant sur les arcs le numéro
de la tâche et le nombre de semaines qu’elle implique.
X Y
-début « au plus tôt » (la tâche ne peut commencer avant cette date car il
faut que toutes les tâches précédentes soient finies)
- début « au plus tard » (la tâche ne peut commencer après cette date sous
peine de retarder les autres tâches)
- la marge de manœuvre est la différence entre ces deux dates (le délai dans
lequel on peut retarder le début de la tâche)
- le chemin critique est la suite des tâches avec une marge nulle
(c’est la durée maximale du processus – dans notre cas 17 semaines)
Applications
La méthode P.E.R.T.
La méthode P.E.R.T.
La méthode P.E.R.T.
En fonction du début tôt ou tard de chaque tâche on peut définir une fin au
plus tôt ou au plus tard:
Les fractales
Définition
Une fractale est un objet mathématique qui se crée par répétition d’un
motif initial.
Résumé du module
Livres
Programmation en 512 problèmes
PROLOG pour corrigés en Pascal,
l'intelligence C++, Lisp, Prolog
artificielle
Louis GACOGNE
de Ivan BRATKO
(Ellipses)
(InterEditions)
Fin