Académique Documents
Professionnel Documents
Culture Documents
des connaissances
et inférence
Agent avec base de connaissances
function AGENT-BC(input) retourne une action
static: KB, une base de connaissances
t, un compteur, initialement = 0
¬P˅Q˅R
¬Q˅T
¬S˅T
¬R˅S
P˅R
Exemple
[¬ P, Q, R]
[¬ Q, S]
[¬ Q, T]
[¬ R, S]
[P, R]
Clauses de Horn
⚫ Une clause de Horn est une disjonction qui possède au plus
un littéral positif
⚫ Si notre base de connaissances ne contient que des clauses
de Horn, on peut utiliser un algorithme d’inférence efficace:
le chaînage avant ou le chaînage arrière.
⚫ On ne peut donc pas appliquer le chaînage avant ou arrière à
l'exemple précédent, puisque [¬ P, Q, R] et [P, R] ne sont
pas des clauses de Horn
⚫ Une clause de Horn de la forme [¬ P1, ¬ P2 ,…, ¬ Pn, Q]
peut être écrite de la manière suivante:
P1 ˄ P2 ˄ … ˄ Pn ⇒ Q ou Q ⇐ P1 ˄ P2 ˄ … ˄ Pn
Clauses de Horn
1) [¬ P, ¬ Q, R] <---> R ⇐ P ˄ Q <---> r:-p,q.
2) [R] <---> R <---> r.
3) [¬ P, ¬ Q] <---> ¬(P ˄ Q) <---> ?-(p,q).
À prouver: Q
Chaînage arrière
QP
1) [¬ P, Q]
2) [¬ L, ¬ M , P]
P L ˄ M 3) [¬ B, ¬ L , M]
M B ˄ L 4) [¬ A, ¬ R , L]
5) [¬ A, ¬ B , L]
L A ˄ R 6) [A]
L A ˄ B 7) [B]
A 8) [¬ Q]
B
On veut prouver Q
Chaînage arrière
QP
1) [¬ P, Q]
2) [¬ L, ¬ M , P]
P L ˄ M 3) [¬ B, ¬ L , M]
M B ˄ L 4) [¬ A, ¬ R , L]
5) [¬ A, ¬ B , L]
L A ˄ R 6) [A]
L A ˄ B 7) [B]
A 8) [¬ Q]
9) [¬ P] (1,8)
B
À prouver: P
Chaînage arrière
QP
1) [¬ P, Q]
2) [¬ L, ¬ M , P]
P L ˄ M 3) [¬ B, ¬ L , M]
M B ˄ L 4) [¬ A, ¬ R , L]
5) [¬ A, ¬ B , L]
L A ˄ R 6) [A]
L A ˄ B 7) [B]
A 8) [¬ Q]
9) [¬ P] (1,8)
B 10) [¬ L, ¬ M] (2,9)
À prouver: L ˄ M
Chaînage arrière
QP
1) [¬ P, Q]
2) [¬ L, ¬ M , P]
P L ˄ M 3) [¬ B, ¬ L , M]
M B ˄ L 4) [¬ A, ¬ R , L]
5) [¬ A, ¬ B , L]
L A ˄ R 6) [A]
L A ˄ B 7) [B]
A 8) [¬ Q]
9) [¬ P] (1,8)
B 10) [¬ L, ¬ M] (2,9)
11) [¬ A,¬ R,¬ M] (4,10)
À prouver: A ˄ R ˄ M
Chaînage arrière
QP
1) [¬ P, Q]
2) [¬ L, ¬ M , P]
P L ˄ M 3) [¬ B, ¬ L , M]
M B ˄ L 4) [¬ A, ¬ R , L]
5) [¬ A, ¬ B , L]
L A ˄ R 6) [A]
L A ˄ B 7) [B]
A 8) [¬ Q]
9) [¬ P] (1,8)
B 10) [¬ L, ¬ M] (2,9)
11) [¬ A,¬ R,¬ M] (4,10)
À prouver: R ˄ M 12) [¬ R,¬ M] (6,11)
Chaînage arrière
QP
1) [¬ P, Q]
2) [¬ L, ¬ M , P]
P L ˄ M 3) [¬ B, ¬ L , M]
M B ˄ L 4) [¬ A, ¬ R , L]
5) [¬ A, ¬ B , L]
L A ˄ R 6) [A]
L A ˄ B 7) [B]
A 8) [¬ Q]
9) [¬ P] (1,8)
B 10) [¬ L, ¬ M] (2,9)
11) [¬ A,¬ R,¬ M] (4,10)
À prouver: R ˄ M 12) [¬ R,¬ M] (6,11)
L A ˄ B
8) [¬ Q]
9) [¬ P] (1,8)
10) [¬ L,¬ M] (2,9)
A 11) [¬ A,¬ R,¬ M] (4,10)
B 12) [¬ R,¬ M] (6,11)
13) [¬ A,¬B ,¬ M] (5,10)
14) [¬B, ¬M] (6,13)
À prouver: R 15) [¬M] (7,14)
16) [¬B, ¬L] (3,15)
17) [¬L] (7,16)
18) [¬ A,¬R] (4,17)
19) [¬R] (6,18)
Chaînage arrière
QP
1) [¬ P, Q]
2) [¬ L, ¬ M , P]
P L ˄ M
3) [¬ B, ¬ L , M]
4) [¬ A, ¬ R , L]
M B ˄ L 5) [¬ A, ¬ B , L]
6) [A]
L A ˄ R 7) [B]
L A ˄ B
8) [¬ Q]
9) [¬ P] (1,8)
10) [¬ L,¬ M] (2,9)
A 11) [¬ A,¬ R,¬ M] (4,10)
B 12) [¬ R,¬ M] (6,11)
13) [¬ A,¬B ,¬ M] (5,10)
14) [¬B, ¬M] (6,13)
À prouver: R 15) [¬M] (7,14)
16) [¬B, ¬L] (3,15)
17) [¬L] (7,16)
Échec. On ne réussit pas à prouver R. 18) [¬ A,¬R] (4,17)
19) [¬R] (6,18)
Chaînage arrière
QP
1) [¬ P, Q]
2) [¬ L, ¬ M , P]
P L ˄ M
3) [¬ B, ¬ L , M]
4) [¬ A, ¬ R , L]
M B ˄ L 5) [¬ A, ¬ B , L]
6) [A]
L A ˄ R 7) [B]
L A ˄ B
8) [¬ Q]
9) [¬ P] (1,8)
10) [¬ L,¬ M] (2,9)
A 11) [¬ A,¬ R,¬ M] (4,10)
B 12) [¬ R,¬ M] (6,11)
13) [¬ A,¬B ,¬ M] (5,10)
14) [¬B, ¬M] (6,13)
À prouver: L 15) [¬M] (7,14)
16) [¬B, ¬L] (3,15)
17) [¬L] (7,16)
Backtrack 18) [¬ A,¬R] (4,17)
19) [¬R] (6,18)
Chaînage arrière
QP
1) [¬ P, Q]
2) [¬ L, ¬ M , P]
P L ˄ M
3) [¬ B, ¬ L , M]
4) [¬ A, ¬ R , L]
M B ˄ L 5) [¬ A, ¬ B , L]
6) [A]
L A ˄ R 7) [B]
L A ˄ B
8) [¬ Q]
9) [¬ P] (1,8)
10) [¬ L,¬ M] (2,9)
A 11) [¬ A,¬ R,¬ M] (4,10)
B 12) [¬ R,¬ M] (6,11)
13) [¬ A,¬B ,¬ M] (5,10)
14) [¬B, ¬M] (6,13)
À prouver: L 15) [¬M] (7,14)
16) [¬B, ¬L] (3,15)
17) [¬L] (7,16)
18) [¬ A,¬R] (4,17)
19) [¬R] (6,18)
Chaînage arrière
QP
1) [¬ P, Q]
2) [¬ L, ¬ M , P]
P L ˄ M
3) [¬ B, ¬ L , M]
4) [¬ A, ¬ R , L]
M B ˄ L 5) [¬ A, ¬ B , L]
6) [A]
L A ˄ R 7) [B]
L A ˄ B
8) [¬ Q]
9) [¬ P] (1,8)
10) [¬ L,¬ M] (2,9)
A 11) [¬ A,¬ R,¬ M] (4,10)
B 12) [¬ R,¬ M] (6,11)
13) [¬ A,¬B ,¬ M] (5,10)
14) [¬B, ¬M] (6,13)
À prouver: A ˄ B 15) [¬M] (7,14)
16) [¬B, ¬L] (3,15)
17) [¬L] (7,16)
18) [¬ A,¬R] (4,17)
19) [¬R] (6,18)
20) [¬ A,¬B] (5,17)
Chaînage arrière
QP
1) [¬ P, Q]
2) [¬ L, ¬ M , P]
P L ˄ M
3) [¬ B, ¬ L , M]
4) [¬ A, ¬ R , L]
M B ˄ L 5) [¬ A, ¬ B , L]
6) [A]
L A ˄ R 7) [B]
L A ˄ B
8) [¬ Q]
9) [¬ P] (1,8)
10) [¬ L,¬ M] (2,9)
A 11) [¬ A,¬ R,¬ M] (4,10)
B 12) [¬ R,¬ M] (6,11)
13) [¬ A,¬B ,¬ M] (5,10)
14) [¬B, ¬M] (6,13)
À prouver: B 15) [¬M] (7,14)
16) [¬B, ¬L] (3,15)
17) [¬L] (7,16)
18) [¬ A,¬R] (4,17)
19) [¬R] (6,18)
20) [¬ A,¬B] (5,17)
21) [¬B] (6,20)
Chaînage arrière
QP
1) [¬ P, Q]
2) [¬ L, ¬ M , P]
P L ˄ M
3) [¬ B, ¬ L , M]
4) [¬ A, ¬ R , L]
M B ˄ L 5) [¬ A, ¬ B , L]
6) [A]
L A ˄ R 7) [B]
L A ˄ B
8) [¬ Q]
9) [¬ P] (1,8)
10) [¬ L,¬ M] (2,9)
A 11) [¬ A,¬ R,¬ M] (4,10)
B 12) [¬ R,¬ M] (6,11)
13) [¬ A,¬B ,¬ M] (5,10)
14) [¬B, ¬M] (6,13)
À prouver: rien 15) [¬M] (7,14)
16) [¬B, ¬L] (3,15)
17) [¬L] (7,16)
18) [¬ A,¬R] (4,17)
19) [¬R] (6,18)
20) [¬ A,¬B] (5,17)
21) [¬B] (6,20)
22) [] (7,21)
Chaînage arrière
⚫ Le chaînage arrière est la même chose que la
résolution avec les clauses de Horn
⚫ L'algorithme de chaînage arrière ne retourne pas
nécessairement la preuve optimale
⚫ L'algorithme n'est pas complet si on se limite à une
recherche en profondeur simple
⚫ Ne tente de déduire que ce qui est nécessaire au fait
à prouver
⚫ Peut explorer des avenues qui sont des impasses
Négation par échec
⚫ Une base de connaissances ne peut contenir que deux
types de clauses de Horn:
Q P1˄ P2 … ˄ Pn (une règle)
Q (un fait)
⚫ Vous remarquerez que ces clauses ne peuvent contenir de
négation
⚫ On peut par contre utiliser une forme limitée de négation,
appelée négation par échec, et représentée par
l’opérateur ~
⚫ Un terme de la forme ~P sera considéré vrai si on ne
réussit pas à prouver P
Négation par échec - exemple
Soit la base de
connaissances
suivante:
Q P
P B˄L
L A ˄ ~R
R B˄S
A
B
Négation par échec - exemple
Soit la base de 1) [¬ P,Q]
2) [¬ B, ¬ L,P]
connaissances 3) [¬ A, ¬ ~R,L]
4) [¬ B, ¬ S,R]
suivante: 5) A
6) B
Q P 7) [¬ Q]
P B˄L 8) [¬ P] (1,7)
L A ˄ ~R 9)
10)
[¬ L,P]
[¬ L]
(2,6)
(8,9)
R B˄S 11) [¬ A, ¬ ~R] (3,10)
A 12) [¬ ~R] (5,11)
B 12.1) [¬ S,R] (4,6)
Échec
13) []
On veut prouver Q
Négation par échec – autre exemple
1) [¬ P,Q]
Soit la base de 2) [¬ B, ¬ ~L,P]
3) [¬ ~S, ¬ B,P]
connaissances 4) [¬ A, ¬ ~R,L]
5) [¬ B, ¬ S,R]
suivante: 6) A
Q P
7) B
8) [¬ Q]
P B ˄ ~L 9) [¬ P] (1,8)
P ~S ˄ B
10) [¬ B, ¬ ~L] (2,9)
11) [¬ ~L] (7,10)
L A ˄ ~R 11.1) [¬ ~R,L] (4,6)
R B˄S 11.1.1) [¬ S,R]
Échec
(5,7)
A Échec
B 12) [¬ ~S, ¬ B] (3,9)
13) [¬ ~S] (7,12)
Échec
On veut déduire Q 14) []
Algorithme de résolution-SLD
⚫ Soit KB la base de connaissances
⚫ On veut savoir si KB |= 𝛽
⚫ On transforme KB en forme conjonctive normale
(c’est-à-dire en clauses)
⚫ On transforme ¬ 𝛽 en forme conjonctive normale
⚫ On essaie de déduire la clause vide à partir de
KB ∪ {¬ 𝛽}
Règle de résolution
telles que yi = xi
⚫ On peut déduire la clause suivante:
(y1 ˅ y2 ˅ … ˅ yi-1 ˅ yi+1 … ˅ ym ˅ x1 ˅ x2 ˅ … ˅ xi-1 ˅ xi+1 … ˅ xm)
Algorithme de résolution - exemple
P⇒Q˅R
Q˅S⇒T
R⇒S
P˅ R
Peut-on déduire T?
Algorithme de résolution - exemple
Forme normale conjonctive:
¬P˅Q˅R
¬Q˅T
¬S˅T
¬R˅S
P˅R
Remarquons que le résultat [R, R] a été simplifié en [R], qui est équivalent
(factorisation)
Algorithme de résolution - exemple
1) [¬ P, Q, R]
2) [¬ Q, T]
3) [¬ S, T]
4) [¬ R, S]
5) [P, R]
6) [¬ T]
7) [¬ Q] (2,6)
8) [¬ P, R] (1,7)
9) [R] (5,8)
10) [S] (4,9)
Algorithme de résolution - exemple
1) [¬ P, Q, R]
2) [¬ Q, T]
3) [¬ S, T]
4) [¬ R, S]
5) [P, R]
6) [¬ T]
7) [¬ Q] (2,6)
8) [¬ P, R] (1,6)
9) [R] (5,8)
10) [S] (4,9)
11) [T] (3,10)
Algorithme de résolution - exemple
1) [¬ P, Q, R]
2) [¬ Q, T]
3) [¬ S, T]
4) [¬ R, S]
5) [P, R]
6) [¬ T]
7) [¬ Q] (2,6)
8) [¬ P, R] (1,6)
9) [R] (5,8)
10) [S] (4,9)
11) [T] (3,10)
12) [ ] (6,11)
Algorithme de résolution - exemple
1) [¬ P, Q, R]
2) [¬ Q, T]
3) [¬ S, T]
4) [¬ R, S]
5) [P, R]
6) [¬ T]
7) [¬ Q] (2,6)
8) [¬ P, R] (1,6)
9) [R] (5,8)
10) [S] (4,9)
11) [T] (3,10)
12) [ ] (6,11)
P⇒Q
Q⇒S
Peut-on déduire P ⇒ S?
On ajoute à la base de connaissances
la négation de l’énoncé à démontrer
P⇒Q
Q⇒S
¬(P ⇒ S)
Transformation en forme normale
conjonctive
[¬ P, Q]
[¬ Q,S]
¬(P ⇒ S)
¬(¬ P ˅ S)
(P ˄ ¬ S)
[P]
[¬ S]
Démonstration
(1) [¬ P, Q]
(2) [¬ Q,S]
(3) [P]
(4) [¬ S]
Démonstration
(1) [¬ P, Q]
(2) [¬ Q,S]
(3) [P]
(4) [¬ S]
(5) [Q] (1,3)
Démonstration
(1) [¬ P, Q]
(2) [¬ Q,S]
(3) [P]
(4) [¬ S]
(5) [Q] (1,3)
(6) [S] (2,5)
Démonstration
(1) [¬ P, Q]
(2) [¬ Q,S]
(3) [P]
(4) [¬ S]
(5) [Q] (1,3)
(6) [S] (2,5)
(7) [ ] (4,6)
Algorithme de résolution
⚫ Fonctionne avec tous les types de formules
(contrairement aux chaînages avant et arrière,
comme nous le verrons plus loin)
⚫ Complet (mais il faut utiliser la règle de
factorisation)
Walksat
⚫ On génère un modèle aléatoire (c'est-à-dire une valeur de
vérité pour chaque proposition de la base de
connaissances)
⚫ Si toutes les clauses de la base sont vraies, on a terminé
⚫ Sinon, on choisit une clause qui est fausse
⚫ Selon une certaine probabilité, on choisit une proposition
de cette clause et on change sa valeur de vérité
⚫ Sinon on change la valeur de vérité d'une proposition de
cette clause, en choisissant celle qui maximise le nombre
de clauses vraies dans la base.
Walksat
⚫ Ne peut pas être utilisé directement pour vérifier si un fait
et une conséquence logique de la base de connaissances
⚫ Tout ce que nous pouvons faire est ceci:
− Ajouter la négation du fait à prouver dans la base de
connaissances
− Exécuter Walksat durant un temps très long
(idéalement, un temps infini)
− Si après ce temps, on n'a toujours pas trouvé de modèle,
on suppose que la base modifiée est inconsistante, donc
que le fait en question est une conséquence logique de
la base originale