Vous êtes sur la page 1sur 108

Représentation

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

AJOUTER(KB, CREER-FORMULE(input, t))


action  REQUETE(KB, CREER-REQUETE-ACTION(t))
AJOUTER(KB, CREER-FORMULE(action, t))
t t+1
retourner action

(Tiré de Russel & Norvig)


Exemple – Monde de Wumpus

(Tiré de Russel & Norvig)


État initial – agent à la position (1,1)

On déduit: pas de W ou de trou à la position (1,2)


pas de W ou de trou à la position (2,1)
Agent à la position (2,1)

On déduit: trou à la position (2,2) ou (3,1)


pas de W à la position (3,1) ni à la position (2,2)
Agent à la position (1,2)

On déduit: wumpus à la position (1,3)


pas de trou à la position (1,3) ni à la position (2,2)
trou à la position (3,1)
Logique – concepts importants
⚫ Syntaxe: définit les formules bien formées
⚫ Sémantique: définit comment on établit la valeur
de vérité de chaque formule
⚫ Modèle: une interprétation des formules qui fait
en sorte qu'elles sont toutes vraies
⚫ Conséquence logique: α |= β signifie que lorsque
α est vrai, β est nécessairement vrai.
Logique – inférence
⚫ On peut le faire par vérification de modèle: si,
pour tous les modèles qui rendent α vrai, on a
aussi β vrai, on peut conclure α |= β
⚫ Malheureusement, il n'est en général pas possible
d'énumérer tous les modèles
⚫ Donc, on utilise plutôt un système d'inférence, qui
permet, en ne considérant que la forme
syntaxique des formules en α, de déduire β.
⚫ On écrira alors α |– β.
Logique – inférence
⚫ Système complet: si un fait est une conséquence
logique de la base de connaissances, le système
est toujours capable de le déduire.
− Si α |= β , alors α |–β
⚫ Système correct: si le système d'inférence déduit
un fait, celui-ci est nécessairement une
conséquence logique de la base de connaissances.
− Si α |–β , alors α |= β
Logique propositionnelle
Quelques règles d’inférence
Exemple - Wumpus
⚫ Soit les propositions suivantes:
− Pij est vraie s'il y a un trou à la position (i,j)
− Bij est vraie s'il y a une brise à la position (i,j)
− (pour simplifier, on oublie le Wumpus)
Exemple - Wumpus
Exemple - Wumpus
À l’état initial
R1: B11 ⟺ (P12 ∨ P21)
R2: B21 ⟺ (P11 ∨ P22 ∨ P31)
R3: B12 ⟺ (P11 ∨ P22 ∨ P13)
R4: ¬B11
R5: ¬P11
Exemple - Wumpus
À l’état initial
R1: B11 ⟺ (P12 ∨ P21)
R2: B21 ⟺ (P11 ∨ P22 ∨ P31)
R3: B12 ⟺ (P11 ∨ P22 ∨ P13)
R4: ¬B11
R5: ¬P11
R6: (B11 ⇒(P12 ∨ P21) ∧ ((P12 ∨ P21) ⇒ B11) [R1]
Exemple - Wumpus
À l’état initial
R1: B11 ⟺ (P12 ∨ P21)
R2: B21 ⟺ (P11 ∨ P22 ∨ P31)
R3: B12 ⟺ (P11 ∨ P22 ∨ P13)
R4: ¬B11
R5: ¬P11
R6: (B11 ⇒(P12 ∨ P21) ∧ ((P12 ∨ P21) ⇒ B11) [R1]
R7: B11 ⇒ (P12 ∨ P21) [R6, élimination de ∧]
R8: ((P12 ∨ P21) ⇒ B11) [R6, élimination de ∧]
Exemple - Wumpus
À l’état initial
R1: B11 ⟺ (P12 ∨ P21)
R2: B21 ⟺ (P11 ∨ P22 ∨ P31)
R3: B12 ⟺ (P11 ∨ P22 ∨ P13)
R4: ¬B11
R5: ¬P11
R6: (B11 ⇒(P12 ∨ P21) ∧ ((P12 ∨ P21) ⇒ B11) [R1]
R7: B11 ⇒ (P12 ∨ P21) [R6, élimination de ∧]
R8: ((P12 ∨ P21) ⇒ B11) [R6, élimination de ∧]
R9: ¬(P12 ∨ P21) [R4 et R8, modus tolens]
Exemple - Wumpus
À l’état initial
R1: B11 ⟺ (P12 ∨ P21)
R2: B21 ⟺ (P11 ∨ P22 ∨ P31)
R3: B12 ⟺ (P11 ∨ P22 ∨ P13)
R4: ¬B11
R5: ¬P11
R6: (B11 ⇒(P12 ∨ P21) ∧ ((P12 ∨ P21) ⇒ B11) [R1]
R7: B11 ⇒ (P12 ∨ P21) [R6, élimination de ∧]
R8: ((P12 ∨ P21) ⇒ B11) [R6, élimination de ∧]
R9: ¬(P12 ∨ P21) [R4 et R8, modus tolens]
R10: ¬P12 ∧ ¬ P21 [R9, de Morgan]
Exemple - Wumpus
À l’état initial
R1: B11 ⟺ (P12 ∨ P21)
R2: B21 ⟺ (P11 ∨ P22 ∨ P31)
R3: B12 ⟺ (P11 ∨ P22 ∨ P13)
R4: ¬B11
R5: ¬P11
R6: (B11 ⇒(P12 ∨ P21) ∧ ((P12 ∨ P21) ⇒ B11) [R1]
R7: B11 ⇒ (P12 ∨ P21) [R6, élimination de ∧]
R8: ((P12 ∨ P21) ⇒ B11) [R6, élimination de ∧]
R9: ¬(P12 ∨ P21) [R4 et R8, modus tolens]
R10: ¬P12 ∧ ¬ P21 [R9, de Morgan]
R11: ¬P12 [R10, élimination de ∧]
R12: ¬ P21 [R10, élimination de ∧]
Exemple - Wumpus
Après avoir visite la position (2,1)
R1: B11 ⟺ (P12 ∨ P21)
R2: B21 ⟺ (P11 ∨ P22 ∨ P31)
R3: B12 ⟺ (P11 ∨ P22 ∨ P13)
R4: ¬B11
R5: ¬P11
R6: (B11 ⇒(P12 ∨ P21) ∧ ((P12 ∨ P21) ⇒ B11)
R7: B11 ⇒ (P12 ∨ P21)
R8: ((P12 ∨ P21) ⇒ B11)
R9: ¬(P12 ∨ P21)
R10: ¬P12 ∧ ¬ P21
R11: ¬P12
R12: ¬ P21
Exemple - Wumpus
Après avoir visite la position (2,1)
R1: B11 ⟺ (P12 ∨ P21)
R2: B21 ⟺ (P11 ∨ P22 ∨ P31)
R3: B12 ⟺ (P11 ∨ P22 ∨ P13)
R4: ¬B11
R5: ¬P11
R6: (B11 ⇒(P12 ∨ P21) ∧ ((P12 ∨ P21) ⇒ B11)
R7: B11 ⇒ (P12 ∨ P21)
R8: ((P12 ∨ P21) ⇒ B11)
R9: ¬(P12 ∨ P21)
R10: ¬P12 ∧ ¬ P21
R11: ¬P12
R12: ¬ P21
R13: B21 [input]
Exemple - Wumpus
Après avoir visite la position (2,1)
R1: B11 ⟺ (P12 ∨ P21)
R2: B21 ⟺ (P11 ∨ P22 ∨ P31)
R3: B12 ⟺ (P11 ∨ P22 ∨ P13)
R4: ¬B11
R5: ¬P11
R6: (B11 ⇒(P12 ∨ P21) ∧ ((P12 ∨ P21) ⇒ B11)
R7: B11 ⇒ (P12 ∨ P21)
R8: ((P12 ∨ P21) ⇒ B11)
R9: ¬(P12 ∨ P21)
R10: ¬P12 ∧ ¬ P21
R11: ¬P12
R12: ¬ P21
R13: B21 [input]
R14: (B21⇒ (P11 ∨ P22 ∨ P31)) ∧ ((P11 ∨ P22 ∨ P31) ⇒ B21) [R2]
Exemple - Wumpus
Après avoir visite la position (2,1)
R1: B11 ⟺ (P12 ∨ P21)
R2: B21 ⟺ (P11 ∨ P22 ∨ P31)
R3: B12 ⟺ (P11 ∨ P22 ∨ P13)
R4: ¬B11
R5: ¬P11
R6: (B11 ⇒(P12 ∨ P21) ∧ ((P12 ∨ P21) ⇒ B11)
R7: B11 ⇒ (P12 ∨ P21)
R8: ((P12 ∨ P21) ⇒ B11)
R9: ¬(P12 ∨ P21)
R10: ¬P12 ∧ ¬ P21
R11: ¬P12
R12: ¬ P21
R13: B21 [input]
R14: (B21⇒ (P11 ∨ P22 ∨ P31)) ∧ ((P11 ∨ P22 ∨ P31) ⇒ B21) [R2]
R15: B21⇒ (P11 ∨ P22 ∨ P31) [R14]
R16: (P11 ∨ P22 ∨ P31) ⇒ B21 [R14]
Exemple - Wumpus
Après avoir visite la position (2,1)
R1: B11 ⟺ (P12 ∨ P21)
R2: B21 ⟺ (P11 ∨ P22 ∨ P31)
R3: B12 ⟺ (P11 ∨ P22 ∨ P13)
R4: ¬B11
R5: ¬P11
R6: (B11 ⇒(P12 ∨ P21) ∧ ((P12 ∨ P21) ⇒ B11)
R7: B11 ⇒ (P12 ∨ P21)
R8: ((P12 ∨ P21) ⇒ B11)
R9: ¬(P12 ∨ P21)
R10: ¬P12 ∧ ¬ P21
R11: ¬P12
R12: ¬ P21
R13: B21 [input]
R14: (B21⇒ (P11 ∨ P22 ∨ P31)) ∧ ((P11 ∨ P22 ∨ P31) ⇒ B21) [R2]
R15: B21⇒ (P11 ∨ P22 ∨ P31) [R14]
R16: (P11 ∨ P22 ∨ P31) ⇒ B21 [R14]
R17: (P11 ∨ P22 ∨ P31) [R13 et R15]
Exemple - Wumpus
Après avoir visite la position (2,1)
R1: B11 ⟺ (P12 ∨ P21)
R2: B21 ⟺ (P11 ∨ P22 ∨ P31)
R3: B12 ⟺ (P11 ∨ P22 ∨ P13)
R4: ¬B11
R5: ¬P11
R6: (B11 ⇒(P12 ∨ P21) ∧ ((P12 ∨ P21) ⇒ B11)
R7: B11 ⇒ (P12 ∨ P21)
R8: ((P12 ∨ P21) ⇒ B11)
R9: ¬(P12 ∨ P21)
R10: ¬P12 ∧ ¬ P21
R11: ¬P12
R12: ¬ P21
R13: B21 [input]
R14: (B21⇒ (P11 ∨ P22 ∨ P31)) ∧ ((P11 ∨ P22 ∨ P31) ⇒ B21) [R2]
R15: B21⇒ (P11 ∨ P22 ∨ P31) [R14]
R16: (P11 ∨ P22 ∨ P31) ⇒ B21 [R14]
R17: (P11 ∨ P22 ∨ P31) [R13 et R15]
R18: (P22 ∨ P31) [R5 et R17]
Exemple - Wumpus
Après avoir visite la position (1,2)

R3: B12 ⟺ (P11 ∨ P22 ∨ P13)
...
R18: (P22 ∨ P31)
R19: ¬ B12
Exemple - Wumpus
Après avoir visite la position (1,2)

R3: B12 ⟺ (P11 ∨ P22 ∨ P13)
...
R18: (P22 ∨ P31)
R19: ¬ B12
R20: (B12⇒ (P11 ∨ P22 ∨ P31)) ∧ ((P11 ∨ P22 ∨ P13) ⇒ B12) [R3]
Exemple - Wumpus
Après avoir visite la position (1,2)

R3: B12 ⟺ (P11 ∨ P22 ∨ P13)
...
R18: (P22 ∨ P31)
R19: ¬ B12
R20: (B12⇒ (P11 ∨ P22 ∨ P31)) ∧ ((P11 ∨ P22 ∨ P13) ⇒ B12) [R3]
R21: B12⇒ (P11 ∨ P22 ∨ P31) [R20, élimination de ∧]
R22: (P11 ∨ P22 ∨ P13) ⇒ B12 [R20, élimination de ∧]
Exemple - Wumpus
Après avoir visite la position (1,2)

R3: B12 ⟺ (P11 ∨ P22 ∨ P13)
...
R18: (P22 ∨ P31)
R19: ¬ B12
R20: (B12⇒ (P11 ∨ P22 ∨ P31)) ∧ ((P11 ∨ P22 ∨ P13) ⇒ B12) [R3]
R21: B12⇒ (P11 ∨ P22 ∨ P31) [R20, élimination de ∧]
R22: (P11 ∨ P22 ∨ P13) ⇒ B12 [R20, élimination de ∧]
R23: ¬(P11 ∨ P22 ∨ P13) [R19 et R22, modus toles]
Exemple - Wumpus
Après avoir visite la position (1,2)

R3: B12 ⟺ (P11 ∨ P22 ∨ P13)
...
R18: (P22 ∨ P31)
R19: ¬ B12
R20: (B12⇒ (P11 ∨ P22 ∨ P31)) ∧ ((P11 ∨ P22 ∨ P13) ⇒ B12) [R3]
R21: B12⇒ (P11 ∨ P22 ∨ P31) [R20, élimination de ∧]
R22: (P11 ∨ P22 ∨ P13) ⇒ B12 [R20, élimination de ∧]
R23: ¬(P11 ∨ P22 ∨ P13) [R19 et R22, modus toles]
R24: ¬P11 ∧ ¬P22 ∧ ¬P13 [R23, de Morgan]
Exemple - Wumpus
Après avoir visite la position (1,2)

R3: B12 ⟺ (P11 ∨ P22 ∨ P13)
...
R18: (P22 ∨ P31)
R19: ¬ B12
R20: (B12⇒ (P11 ∨ P22 ∨ P31)) ∧ ((P11 ∨ P22 ∨ P13) ⇒ B12) [R3]
R21: B12⇒ (P11 ∨ P22 ∨ P31) [R20, élimination de ∧]
R22: (P11 ∨ P22 ∨ P13) ⇒ B12 [R20, élimination de ∧]
R23: ¬(P11 ∨ P22 ∨ P13) [R19 et R22, modus toles]
R24: ¬P11 ∧ ¬P22 ∧ ¬P13 [R23, de Morgan]
R25: ¬P11 [R24, élimination de ∧]
R26: ¬P22 [R24, élimination de ∧]
R27: ¬P13 [R24, élimination de ∧ ]
Exemple - Wumpus
Après avoir visite la position (1,2)

R3: B12 ⟺ (P11 ∨ P22 ∨ P13)
...
R18: (P22 ∨ P31)
R19: ¬ B12
R20: (B12⇒ (P11 ∨ P22 ∨ P31)) ∧ ((P11 ∨ P22 ∨ P13) ⇒ B12) [R3]
R21: B12⇒ (P11 ∨ P22 ∨ P31) [R20, élimination de ∧]
R22: (P11 ∨ P22 ∨ P13) ⇒ B12 [R20, élimination de ∧]
R23: ¬(P11 ∨ P22 ∨ P13) [R19 et R22, modus toles]
R24: ¬P11 ∧ ¬P22 ∧ ¬P13 [R23, de Morgan]
R25: ¬P11 [R24, élimination de ∧]
R26: ¬P22 [R24, élimination de ∧]
R27: ¬P13 [R24, élimination de ∧ ]
R28: P31 [R18 et R27]
Énumération des modèles
⚫ Soit KB la base de connaissances et b le fait à
prouver
⚫ On essaie toutes les combinaisons possibles de
valeurs de vérité
⚫ On vérifie que pour toutes les interprétations
telles que KB est vraie, on a aussi b est vrai.
Énumération des modèles - exemple
P⇒Q˅R
Q˅S⇒T
R⇒S
P˅R
Énumération des modèles - exemple
P⇒Q˅R
Q˅S⇒T
R⇒S
P˅R
Peut-on déduire T?
Énumération des modèles - exemple
P Q RS T P⇒Q˅R Q˅S⇒T R⇒S P˅R T
t t t t t t t t t t
f t t t t t t t t t
t f t t t t t t t t
f f t t t t t t t t
t t f t t t t t t t
t t f f t t t t t t

Pour toutes les autres interprétations, la base de connaissances a


au moins une formule qui est fausse.
On voit bien que dans tous les cas où la base de connaissances
est vraie, on a T vrai.
Énumération des modèles - exemple
P Q RS T P⇒Q˅R Q˅S⇒T R⇒S P˅R T
t t t t t t t t t t
f t t t t t t t t t
t f t t t t t t t t
f f t t t t t t t t
t t f t t t t t t t
t t f f t t t t t t

Pour toutes les autres interprétations, la base de connaissances a


au moins une formule qui est fausse.
On voit bien que dans tous les cas où la base de connaissances
est vraie, on a T vrai.
Forme normale conjonctive
⚫ Il s’agit d’une base de connaissances ne contenant
que des formules de la forme suivante:
P1 ˅ P2 ˅ … ˅ Pn
⚫ On appelle clause une telle formule
⚫ Toute base de connaissances peut être traduite en
forme normale conjonctive
Traduction en forme normale
conjonctive
⚫ On élimine les équivalences en les transformant en
implications
⚫ On élimine les implications en utilisant la règle (A ⇒ B)
|– ¬A ˅ B
⚫ En utilisant la loi de de Morgan, on s’assure que toutes
les négations se trouvent associées à une simple
proposition
⚫ Lorsqu’on a une combinaison de ˄ et de ˅, il faut
distribuer les ˅ à l’intérieur de la conjonction
⚫ Il faut utiliser la règle d’élimination du ˄ pour obtenir un
ensemble qui ne contient que des clauses
Exemple
P⇒Q˅R
Q˅S⇒T
R⇒S
P˅R
Exemple
P⇒Q˅R
¬P˅Q˅R
Q˅S⇒T
R⇒S
P˅R
Exemple
P⇒Q˅R
¬P˅Q˅R
Q˅S⇒T
¬(Q ˅ S) ˅ T
R⇒S
P˅R
Exemple
P⇒Q˅R
¬P˅Q˅R
Q˅S⇒T
¬(Q ˅ S) ˅ T
(¬ Q ˄ ¬ S) ˅ T
R⇒S
P˅R
Exemple
P⇒Q˅R
¬P˅Q˅R
Q˅S⇒T
¬(Q ˅ S) ˅ T
(¬ Q ˄ ¬ S) ˅ T
(¬ Q ˅ T) ˄ (¬ S ˅ T)
R⇒S
P˅R
Exemple
P⇒Q˅R
¬P˅Q˅R
Q˅S⇒T
¬(Q ˅ S) ˅ T
(¬ Q ˄ ¬ S) ˅ T
(¬ Q ˅ T) ˄ (¬ S ˅ T)
¬Q˅T
¬S˅T
R⇒S
P˅R
Exemple
P⇒Q˅R
¬P˅Q˅R
Q˅S⇒T
¬(Q ˅ S) ˅ T
(¬ Q ˄ ¬ S) ˅ T
(¬ Q ˅ T) ˄ (¬ S ˅ T)
¬Q˅T
¬S˅T
R⇒S
¬R˅S
P˅R
Exemple

¬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).

Les clauses de type 1) et 2) correspondent à des règles et des


faits dans la base de connaissances, respectivement.
Une clause de type 3) correspond à un ensemble de faits à
prouver
Chaînage avant
1) P ⇒ Q
2) L ˄ M ⇒ P
3) B ˄ L ⇒ M
4) A ˄ R ⇒ L
5) A ˄ B ⇒ L
6) A
7) B
Chaînage avant
1) P ⇒ Q
2) L ˄ M ⇒ P
3) B ˄ L ⇒ M
4) A ˄ R ⇒ L
5) A ˄ B ⇒ L
6) A
7) B

Peut-on déduire Q à partir de cette base de connaissances?


Chaînage avant
1) P ⇒ Q
2) L ˄ M ⇒ P
3) B ˄ L ⇒ M
4) A ˄ R ⇒ L
5) A ˄ B ⇒ L
6) A
7) B

Nouveaux faits déduits:


8) L (5,6,7)
Chaînage avant
1) P ⇒ Q
2) L ˄ M ⇒ P
3) B ˄ L ⇒ M
4) A ˄ R ⇒ L
5) A ˄ B ⇒ L
6) A
7) B

Nouveaux faits déduits:


8) L (5,6,7)
9) M (3,7,8)
Chaînage avant
1) P ⇒ Q
2) L ˄ M ⇒ P
3) B ˄ L ⇒ M
4) A ˄ R ⇒ L
5) A ˄ B ⇒ L
6) A
7) B

Nouveaux faits déduits:


8) L (5,6,7)
9) M (3,7,8)
10) P (2,8,9)
Chaînage avant
1) P ⇒ Q
2) L ˄ M ⇒ P
3) B ˄ L ⇒ M
4) A ˄ R ⇒ L
5) A ˄ B ⇒ L
6) A
7) B

Nouveaux faits déduits:


8) L (5,6,7)
9) M (3,7,8)
10) P (2,8,9)
11) Q (1,10)
Chaînage avant
⚫ Tente de déduire tout ce qu'on peut déduire à
partir des faits connus
⚫ Limité lui aussi aux clauses de Horn
⚫ Complet
⚫ Déduire beaucoup plus de faits que ce que l'on
veut prouver
Chaînage arrière
QP
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

À prouver: Q
Chaînage arrière
QP
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
QP
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
QP
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
QP
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
QP
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
QP
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)

Échec. On ne réussit pas à prouver R.


Chaînage arrière
QP
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: L ˄ M 12) [¬ R,¬ M] (6,11)

Backtrack: on revient à la dernière étape où on avait un choix


Chaînage arrière
QP
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: L ˄ M 12) [¬ R,¬ M] (6,11)
Chaînage arrière
QP
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 ˄ B ˄ M 12) [¬ R,¬ M] (6,11)
13) [¬ A,¬B ,¬ M] (5,10)
Chaînage arrière
QP
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: B ˄ M 12) [¬ R,¬ M] (6,11)
13) [¬ A,¬B ,¬ M] (5,10)
14) [¬B, ¬M] (6,13)
Chaînage arrière
QP
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: M 12) [¬ R,¬ M] (6,11)
13) [¬ A,¬B ,¬ M] (5,10)
14) [¬B, ¬M] (6,13)
15) [¬M] (7,14)
Chaînage arrière
QP
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: B ˄ L 12) [¬ R,¬ M] (6,11)
13) [¬ A,¬B ,¬ M] (5,10)
14) [¬B, ¬M] (6,13)
15) [¬M] (7,14)
16) [¬B, ¬L] (3,15)
Chaînage arrière
QP
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: L 12) [¬ R,¬ M] (6,11)
13) [¬ A,¬B ,¬ M] (5,10)
14) [¬B, ¬M] (6,13)
15) [¬M] (7,14)
16) [¬B, ¬L] (3,15)
17) [¬L] (7,16)
Chaînage arrière
QP
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 12) [¬ R,¬ M] (6,11)
13) [¬ A,¬B ,¬ M] (5,10)
14) [¬B, ¬M] (6,13)
15) [¬M] (7,14)
16) [¬B, ¬L] (3,15)
17) [¬L] (7,16)
18) [¬ A,¬R] (4,17)
Chaînage arrière
QP
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)
18) [¬ A,¬R] (4,17)
19) [¬R] (6,18)
Chaînage arrière
QP
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
QP
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
QP
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
QP
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
QP
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
QP
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

⚫ Soit les clauses suivantes:


(y1 ˅ y2 ˅ … ˅ yi-1˅ yi ˅ yi+1 … ˅ ym)
(x1 ˅ x2 ˅ … ˅ xi-1 ˅ ¬ xi ˅ xi+1 … ˅ xm)

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

On ajoute le fait suivant:


¬T
Algorithme de résolution - exemple
Pour simplifier l'écriture
1) [¬ P, Q, R]
2) [¬ Q, T]
3) [¬ S, T]
4) [¬ R, S]
5) [P, R]
6) [¬ T]
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)
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)
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)
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)

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)

D'autres preuves sont possibles


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)

D'autres preuves sont possibles


Algorithme de résolution SLD
Un autre exemple

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

Vous aimerez peut-être aussi