Lorsqu’on a choisi la valeur d’une proposition, on peut simplifier la formule. Par exemple, la formule

INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique
Mod´elisation de Probl`emes
Mod´elisation
247 Probl`eme du Sudoku (Au tableau)
INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique
Mod´elisation de Probl`emes
Mod´elisation
Questions sur le Sudoku
1. comment tester l’unicit´e d’une solution ?
2. comment g´en´erer une grille avec au moins une solution ?
3. comment g´en´erer kgrilles di´erentes, chacune avec au moins une
solution ?
4. on veut g´en´erer des grilles ayant au moins deux solutions. Pour cela
on se donne un ensemble de cases qui doivent contenir des valeurs
pour la grille de d´epart, alors que les autres seront `a remplir par le
joueur. Comment utiliser un SAT solveur pour r´esoudre ce
probl`eme ?
5. comment g´en´erer des grilles avec une solution unique ?
INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique
Mod´elisation de Probl`emes
Algorithme DPLL
249 Algorithme DPLL
Ipropos´e par M. Davis, H. Putman, G. Logemann et D. Loveland en
1962.
Iprincipe de base : engendrer et tester des solutions partielles
IPar exemple, pour tester la satisfiabilit´e de
(x_y_z)^(x_¬y_¬z), au lieu d’essayer toutes les valuations
possibles de x,yet z, on peut d’abord essayer les interpr´etations
possibles de x.
IIci, on se rend compte tout de suite que la valuation (partielle)
V(x)7! 1satisfait la formule, peu importe l’interpetation des
autres propositions.
Il’algorithme DPLL propose des crit`eres pour choisir quelles variables
tester en premier.
INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique
Mod´elisation de Probl`emes
Algorithme DPLL
250 Interpetation Partielle
D´efinition
Une interpr´etation partielle est un assignement not´e x/1ou x/0,qui
signifie que assigne la valeur 1`a xou la valeur 0.
Lorsqu’on a choisi la valeur d’une proposition, on peut simplifier la
formule. Par exemple, la formule (x_y)^(¬x_z_¬y)se simplifie en
z_¬ysous l’interpr´etation partielle x/1.
D´efinissons de mani`ere formelle cette notion.
INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique
Mod´elisation de Probl`emes
Algorithme DPLL
250 Interpetation Partielle
D´efinition
Une interpr´etation partielle est un assignement not´e x/1ou x/0,qui
signifie que assigne la valeur 1`a xou la valeur 0.
Lorsqu’on a choisi la valeur d’une proposition, on peut simplifier la
formule. Par exemple, la formule (x_y)^(¬x_z_¬y)se simplifie en
z_¬ysous l’interpr´etation partielle x/1.
D´efinissons de mani`ere formelle cette notion.
INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique
Mod´elisation de Probl`emes
Algorithme DPLL
251 Simplification sous une interpr´etation partielle
Etant donn´ee une clause Cet une interpr´etation partielle x/bo`u
b2{0,1}, la formule C[x/b]est obtenue selon la r`egle suivante :
ISi Cne contient pas xou ¬x,alorsC[x/b]=C
ISinon si Cne contient que xou que ¬x, alors on consid`ere les cas
suivants :
1. C=xet b=1,alorsC[x/b]=>
2. C=xet b=0,alorsC[x/b]=?
3. C=¬xet b=0,alorsC[x/b]=>
4. C=¬xet b=1,alorsC[x/b]=?
Isinon si Ccontient xet b=1ou Ccontient ¬xet b=0,alors
C[x/b]=>
Isinon on retire de Cles occurences de xou de ¬x
Si =Vn
i=1 Ciest une conjonction de clauses, alors [x/b]=?si il existe
une clause Citelle que Ci[x/b]=?, sinon [x/b]=Vi:Ci[x/b]6=>Ci[x/b]
(on simplifie toutes les clauses et on retire celle qui deviennent ´egales `a
>). Si toutes les clauses se simplifient en >,alors[x/b]=>.
INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique
Mod´elisation de Probl`emes
Algorithme DPLL
252 Remarque et exemples
Remarque
[x/b]est une formule, on peut donc lui r´eappliquer une autre
interpr´etation partielle [y/b0]et obtenir une nouvelle formule
([x/b])[y/b0]qu’on notera simplement [x/b][y/b0].
Exemples
Soit a=x_y_zet b=x_¬y_¬z.Alors:
Ia[x/1] =
>,b[x/1] = >,(a^b)[x/1] = >
Ib[y/1] = x_¬z
Ib[z/1] = x_¬y
Ia[x/0] = y_z
Ib[x/0] = ¬y_¬z
I(a^b)[x/0] = (y_z)^(¬y_¬z)
I(a^b)[x/0][y/0] = z
I(a^b)[x/0][y/0][z/1] = >
INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique
Mod´elisation de Probl`emes
Algorithme DPLL
252 Remarque et exemples
Remarque
[x/b]est une formule, on peut donc lui r´eappliquer une autre
interpr´etation partielle [y/b0]et obtenir une nouvelle formule
([x/b])[y/b0]qu’on notera simplement [x/b][y/b0].
Exemples
Soit a=x_y_zet b=x_¬y_¬z.Alors:
Ia[x/1] = >,
b[x/1] = >,(a^b)[x/1] = >
Ib[y/1] = x_¬z
Ib[z/1] = x_¬y
Ia[x/0] = y_z
Ib[x/0] = ¬y_¬z
I(a^b)[x/0] = (y_z)^(¬y_¬z)
I(a^b)[x/0][y/0] = z
I(a^b)[x/0][y/0][z/1] = >
INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique
Mod´elisation de Probl`emes
Algorithme DPLL
252 Remarque et exemples
Remarque
[x/b]est une formule, on peut donc lui r´eappliquer une autre
interpr´etation partielle [y/b0]et obtenir une nouvelle formule
([x/b])[y/b0]qu’on notera simplement [x/b][y/b0].
Exemples
Soit a=x_y_zet b=x_¬y_¬z.Alors:
Ia[x/1] = >,b[x/1] =
>,(a^b)[x/1] = >
Ib[y/1] = x_¬z
Ib[z/1] = x_¬y
Ia[x/0] = y_z
Ib[x/0] = ¬y_¬z
I(a^b)[x/0] = (y_z)^(¬y_¬z)
I(a^b)[x/0][y/0] = z
I(a^b)[x/0][y/0][z/1] = >
INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique
Mod´elisation de Probl`emes
Algorithme DPLL
252 Remarque et exemples
Remarque
[x/b]est une formule, on peut donc lui r´eappliquer une autre
interpr´etation partielle [y/b0]et obtenir une nouvelle formule
([x/b])[y/b0]qu’on notera simplement [x/b][y/b0].
Exemples
Soit a=x_y_zet b=x_¬y_¬z.Alors:
Ia[x/1] = >,b[x/1] = >,
(a^b)[x/1] = >
Ib[y/1] = x_¬z
Ib[z/1] = x_¬y
Ia[x/0] = y_z
Ib[x/0] = ¬y_¬z
I(a^b)[x/0] = (y_z)^(¬y_¬z)
I(a^b)[x/0][y/0] = z
I(a^b)[x/0][y/0][z/1] = >
INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique
Mod´elisation de Probl`emes
Algorithme DPLL
252 Remarque et exemples
Remarque
[x/b]est une formule, on peut donc lui r´eappliquer une autre
interpr´etation partielle [y/b0]et obtenir une nouvelle formule
([x/b])[y/b0]qu’on notera simplement [x/b][y/b0].
Exemples
Soit a=x_y_zet b=x_¬y_¬z.Alors:
Ia[x/1] = >,b[x/1] = >,(a^b)[x/1] = >
Ib[y/1] =
x_¬z
Ib[z/1] = x_¬y
Ia[x/0] = y_z
Ib[x/0] = ¬y_¬z
I(a^b)[x/0] = (y_z)^(¬y_¬z)
I(a^b)[x/0][y/0] = z
I(a^b)[x/0][y/0][z/1] = >
INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique
Mod´elisation de Probl`emes
Algorithme DPLL
252 Remarque et exemples
Remarque
[x/b]est une formule, on peut donc lui r´eappliquer une autre
interpr´etation partielle [y/b0]et obtenir une nouvelle formule
([x/b])[y/b0]qu’on notera simplement [x/b][y/b0].
Exemples
Soit a=x_y_zet b=x_¬y_¬z.Alors:
Ia[x/1] = >,b[x/1] = >,(a^b)[x/1] = >
Ib[y/1] = x_¬z
Ib[z/1] = x_¬y
Ia[x/0] = y_z
Ib[x/0] = ¬y_¬z
I(a^b)[x/0] = (y_z)^(¬y_¬z)
I(a^b)[x/0][y/0] = z
I(a^b)[x/0][y/0][z/1] = >
INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique
Mod´elisation de Probl`emes
Algorithme DPLL
252 Remarque et exemples
Remarque
[x/b]est une formule, on peut donc lui r´eappliquer une autre
interpr´etation partielle [y/b0]et obtenir une nouvelle formule
([x/b])[y/b0]qu’on notera simplement [x/b][y/b0].
Exemples
Soit a=x_y_zet b=x_¬y_¬z.Alors:
Ia[x/1] = >,b[x/1] = >,(a^b)[x/1] = >
Ib[y/1] = x_¬z
Ib[z/1] =
x_¬y
Ia[x/0] = y_z
Ib[x/0] = ¬y_¬z
I(a^b)[x/0] = (y_z)^(¬y_¬z)
I(a^b)[x/0][y/0] = z
I(a^b)[x/0][y/0][z/1] = >
INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique
Mod´elisation de Probl`emes
Algorithme DPLL
252 Remarque et exemples
Remarque
[x/b]est une formule, on peut donc lui r´eappliquer une autre
interpr´etation partielle [y/b0]et obtenir une nouvelle formule
([x/b])[y/b0]qu’on notera simplement [x/b][y/b0].
Exemples
Soit a=x_y_zet b=x_¬y_¬z.Alors:
Ia[x/1] = >,b[x/1] = >,(a^b)[x/1] = >
Ib[y/1] = x_¬z
Ib[z/1] = x_¬y
Ia[x/0] = y_z
Ib[x/0] = ¬y_¬z
I(a^b)[x/0] = (y_z)^(¬y_¬z)
I(a^b)[x/0][y/0] = z
I(a^b)[x/0][y/0][z/1] = >
INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique
Mod´elisation de Probl`emes
Algorithme DPLL
252 Remarque et exemples
Remarque
[x/b]est une formule, on peut donc lui r´eappliquer une autre
interpr´etation partielle [y/b0]et obtenir une nouvelle formule
([x/b])[y/b0]qu’on notera simplement [x/b][y/b0].
Exemples
Soit a=x_y_zet b=x_¬y_¬z.Alors:
Ia[x/1] = >,b[x/1] = >,(a^b)[x/1] = >
Ib[y/1] = x_¬z
Ib[z/1] = x_¬y
Ia[x/0] =
y_z
Ib[x/0] = ¬y_¬z
I(a^b)[x/0] = (y_z)^(¬y_¬z)
I(a^b)[x/0][y/0] = z
I(a^b)[x/0][y/0][z/1] = >
INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique
Mod´elisation de Probl`emes
Algorithme DPLL
252 Remarque et exemples
Remarque
[x/b]est une formule, on peut donc lui r´eappliquer une autre
interpr´etation partielle [y/b0]et obtenir une nouvelle formule
([x/b])[y/b0]qu’on notera simplement [x/b][y/b0].
Exemples
Soit a=x_y_zet b=x_¬y_¬z.Alors:
Ia[x/1] = >,b[x/1] = >,(a^b)[x/1] = >
Ib[y/1] = x_¬z
Ib[z/1] = x_¬y
Ia[x/0] = y_z
Ib[x/0] = ¬y_¬z
I(a^b)[x/0] = (y_z)^(¬y_¬z)
I(a^b)[x/0][y/0] = z
I(a^b)[x/0][y/0][z/1] = >
INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique
Mod´elisation de Probl`emes
Algorithme DPLL
252 Remarque et exemples
Remarque
[x/b]est une formule, on peut donc lui r´eappliquer une autre
interpr´etation partielle [y/b0]et obtenir une nouvelle formule
([x/b])[y/b0]qu’on notera simplement [x/b][y/b0].
Exemples
Soit a=x_y_zet b=x_¬y_¬z.Alors:
Ia[x/1] = >,b[x/1] = >,(a^b)[x/1] = >
Ib[y/1] = x_¬z
Ib[z/1] = x_¬y
Ia[x/0] = y_z
Ib[x/0] =
¬y_¬z
I(a^b)[x/0] = (y_z)^(¬y_¬z)
I(a^b)[x/0][y/0] = z
I(a^b)[x/0][y/0][z/1] = >
INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique
Mod´elisation de Probl`emes
Algorithme DPLL
252 Remarque et exemples
Remarque
[x/b]est une formule, on peut donc lui r´eappliquer une autre
interpr´etation partielle [y/b0]et obtenir une nouvelle formule
([x/b])[y/b0]qu’on notera simplement [x/b][y/b0].
Exemples
Soit a=x_y_zet b=x_¬y_¬z.Alors:
Ia[x/1] = >,b[x/1] = >,(a^b)[x/1] = >
Ib[y/1] = x_¬z
Ib[z/1] = x_¬y
Ia[x/0] = y_z
Ib[x/0] = ¬y_¬z
I(a^b)[x/0] = (y_z)^(¬y_¬z)
I(a^b)[x/0][y/0] = z
I(a^b)[x/0][y/0][z/1] = >
INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique
Mod´elisation de Probl`emes
Algorithme DPLL
252 Remarque et exemples
Remarque
[x/b]est une formule, on peut donc lui r´eappliquer une autre
interpr´etation partielle [y/b0]et obtenir une nouvelle formule
([x/b])[y/b0]qu’on notera simplement [x/b][y/b0].
Exemples
Soit a=x_y_zet b=x_¬y_¬z.Alors:
Ia[x/1] = >,b[x/1] = >,(a^b)[x/1] = >
Ib[y/1] = x_¬z
Ib[z/1] = x_¬y
Ia[x/0] = y_z
Ib[x/0] = ¬y_¬z
I(a^b)[x/0] =
(y_z)^(¬y_¬z)
I(a^b)[x/0][y/0] = z
I(a^b)[x/0][y/0][z/1] = >
INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique
Mod´elisation de Probl`emes
Algorithme DPLL
252 Remarque et exemples
Remarque
[x/b]est une formule, on peut donc lui r´eappliquer une autre
interpr´etation partielle [y/b0]et obtenir une nouvelle formule
([x/b])[y/b0]qu’on notera simplement [x/b][y/b0].
Exemples
Soit a=x_y_zet b=x_¬y_¬z.Alors:
Ia[x/1] = >,b[x/1] = >,(a^b)[x/1] = >
Ib[y/1] = x_¬z
Ib[z/1] = x_¬y
Ia[x/0] = y_z
Ib[x/0] = ¬y_¬z
I(a^b)[x/0] = (y_z)^(¬y_¬z)
I(a^b)[x/0][y/0] = z
I(a^b)[x/0][y/0][z/1] = >
1 / 17 100%

Lorsqu’on a choisi la valeur d’une proposition, on peut simplifier la formule. Par exemple, la formule

La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !