Sunteți pe pagina 1din 27

LOGIC MATEMATIC I

COMPUTAIONAL
Curs 3: Satisfiabilitate
Introducere.
Metoda tabelei de adevr.
Backtracking.
Alte metode pentru rezolvarea problemelor SAT: DPLL.

Scurt recapitulare
 Ce este o propoziie
 Operatori logici (conective logice): , , , , ,
 Nume, notaii
 Conexiunea logic cu limbajul natural
 Tabele de adevr i prioriti

 Propoziii compuse
 Trecerea din limbaj natural n propoziii compuse
 Trecerea din propoziii compuse n limbaj natural
 Analiza propoziiilor compuse cu ajutorul tabelelor de adevr

Scurt recapitulare

 Propoziii:
 Atomice, simple
 Compuse, complexe

 Propoziii atomice adevrate sau false


 Notaii: p, q, r,

 Propoziii compuse (formule propoziionale)


 Notaii: P, Q, R,

 Echivalena propoziiilor

Scurt recapitulare
 Propoziie satisfiabil (n ultima coloan a tabelei de adevr
exist cel puin un A).
 Propoziie nesatisfiabil (contradicie) - n ultima coloan a
tabelei de adevr are valoarea F pe toate liniile.
 Propoziie valid (tautologie) - n ultima coloan a tabelei de
adevr are valoarea A pe toate liniile.
 Propoziie contingent (n ultima coloan a tabelei de adevr
exist cel puin un A i cel puin un F).

Scurt recapitulare

 Exerciiu. Determinai dac fiecare din urmtoarele


propoziii este valid, satisfiabil, contingent sau
nesatisfiabil:
p p
 q q
 (p q) (p q)
 (p q) (p q)
 ((p q) r) q
 (q s) (p (p r))

Consistena
 O mulime de propoziii din limbajul natural este consistent dac
este posibil d.p.d.v. logic ca toate s fie adevrate o dat.
 O mulime de propoziii din logica propoziional este consistent
dac exist cel puin o linie dintr-o tabel de adevr n care toate
propoziiile sunt concomitent adevrate. Altfel este inconsistent.

Consistena
 Nu necesit construirea unei tabele ntregi de adevr, doar
gsirea unei linii n care toate propoziiile implicate sunt
adevrate.
 Pentru a demonstra c o mulime de formule propoziionale este
inconsistent, este necesar construirea unei tabele de adevr
complete.
 Trebuie artat c pe fiecare linie a tabelei de adevr exist cel
puin o formul din mulime care este fals.
 Exerciiu. S se verifice dac mulimea urmtoare de propoziii
este consistent sau inconsistent:
 p (q r), r p, p q

Consistena

 Exerciiu. Determinai dac fiecare set de propoziii este


consistent sau inconsistent:
 p p, p p, p p, p p
 p q, p r, q r
 p q, q r, r p
 p (q r), r p, p q

Satisfiabilitate
 Problema satisfiabilitii propoziionale (denumit SAT) este
problema de a determina dac o mulime de propoziii (din
Logica propoziiilor) este satisfiabil.
 Importana: multe alte probleme din Logica propoziiilor pot fi
reduse la aceea a satisfiabilitii propoziionale.
 Utilizare: Metodele de rezolvare a problemei SAT sunt utilizate
n: design hardware, analiz software, planificare, matematic,
analiza securitii .a.

Metode de rezolvare a problemei SAT


 Metoda tabelei de adevr
 Abordarea Backtracking
 Simplificarea
propagation)

(simplification)

propagarea

unitilor

(unit

 Metoda DPLL (Davis-Putnam-Logemann-Loveland)


 Metoda GSAT

10

Metoda tabelei de adevr


 O propoziie atomic are 21 interpretri.
 P = Logica este frumoas
 Poate fi interpretat ca adevrat (de persoana X) sau fals (de
persoana Y)

 O propoziie compus cu 2 variabile are 22 interpretri (AA, FF,


AF, FA).
 O propoziie compus cu n variabile are 2n interpretri.

11

Metoda tabelei de adevr


 Cum se completeaz interpretrile unei formule propoziionale
de n variabile ntr-o tabel de adevr:
 Pentru prima variabil (prima coloan) completm 2n/2 valori de A i
tot attea de F.
 Pentru variabila a doua completm 2n/4 valori de A, urmate de 2n/4
F, apoi din nou 2n/4 A i 2n/4 F.
 .. Ultima coloan (variabil) va conine alternativa A i F.

 Exemplu: pentru 4 variabile p, q, r, s exist 24 = 16 interpretri.

12

Metoda tabelei de adevr

 Cnd numrul de variabile este mare, tabelele de adevr


devin nepractice.
 De exemplu, pentru 20 de variabile avem 220 linii, adic
1 048 576.
 Este nevoie de un computer pentru a verifica o tautologie
pentru 20 de variabile.
 Pentru un numr mai mare de variabile, de ex. 1000,, este
nevoie de 21000 linii (un numr cu peste 300 de cifre) niciun
computer nu poate rezolva tabela de adevr ntr-un timp
rezonabil.
 Este necesar o metod mai eficient.

13

Metoda tabelei de adevr


 Fie = { , , ,

, }

 Vrem s determinm dac este satisfiabil.


p

0
14

Metoda tabelei de adevr

 este nesatisfiabil (la fiecare interpretare (fiecare rnd)


nu este satisfiabil).
 Tabela de adevr este complet (este verificat fiecare
interpretare posibil).

15

Backtracking
 Considerm exemplul de mai devreme.
 Observm c pentru a determina dac este satisfiabil, este
necesar o declaraie (interpretare) parial de adevr.
 De ex., fie interpretarea { p = 1, q = 0 }. Indiferent de valoarea de
adevr a lui r, observm c este evaluat ca fiind fals; prin
urmare, nu este satisfiabil.

16

Backtracking

 Mai departe, putem concluziona c nicio interpretare, care


extinde aceast declaraie parial de adevr, nu poate
satisface , deoarece propoziia ar fi evaluat
mereu ca fiind fals (0), n orice interpretare.
 Nici interpretarea { p = 1, q = 0, r = 0 } nu satisface , dar
nici { p = 1, q = 0, r = 1 }.
 Nu se mai verific i celelalte interpretri => backtracking

17

Backtracking
 Cutare n spaiul interpretrilor de adevr
 Arbore de cutare fiecare ramur seteaz valoarea A unei singure
propoziii, fiecare nod interior este o atribuire parial de adevr, fiecare
nod frunz este o atribuire complet de adevr.

18

Backtracking Generaliti
 este o tehnic de programare extrem de rspndit i de
util n cazul problemelor n care este necesar generarea
tuturor soluiilor posibile.
 Ideea algoritmului este de a genera toate soluiile posibile,
dar a renuna la ele n cazul n care se observ c nu
ndeplinesc condiiile necesare.
 Datorit
generrii
tuturor
soluiilor,
complexitatea
algoritmului este foarte mare, dar duce sigur la generarea
tuturor posibilitilor valide.
 Exemple de probleme care se rezolv cu metoda
backtracking:





Generare permutri / aranjamente / combinri


Problema damelor
Generarea produsului cartezian a n mulimi
Etc.
19

Backtracking
 Fie = { , , ,

, }

 Vrem s determinm dac este satisfiabil.


 Metoda tabelei de adevr:
p

20

Backtracking

 = { , , ,

, }

21

Backtracking

 = { , , ,

, }

22

Backtracking

 = { , , ,

, }

23

Backtracking

 = { , , ,

, }

24

Backtracking

 = { , , ,

, }

25

Backtracking

 = { , , ,

, }

26

Backtracking

 = { , , ,

, }

27

S-ar putea să vă placă și