Documente Academic
Documente Profesional
Documente Cultură
2SAT
2SAT
Astfel numrul mediu de pai ai algoritmului este N^2, astfel dac aplicm algoritmul n
mod aleator de mai multe ori avem o probabilitate foarte mare s ajungem la rezultat.
O a treia soluie se bazeaz pe relaia de implicaie. Relaia -> are urmtoarea tabel de
adevr
A B A->B
0 0 1
0 1 1
1 0 0
1 1 1
(relaia de implicaie are semnificaia dac A este adevrat atunci i B este adevrat)
Scriem tabelul expresiei ~A V B i observm c acesta este egal cu cel al relaiei de
implicaie.
A B ~A V B
0 0 1
0 1 1 Fiecare clauz A V B poate fi scris ca dou
1 0 0 implicaii ~A->B i ~B->A. Realizm un graf al
1 1 1 implicaiilor, astfel nodurile grafurilor vor fi
variabilele A, B ... i negaiile lor ~A, ~B iar
muchiile acestui graf vor fi implicaiile echivalente cu propoziiile din expresie. Deci
dac expresia are M propoziii graful va avea 2M muchii.
Astfel expresiei ( A B) (B C) (B C) ( B D) (C D) i
corespunde graful:
Dac avem AB o muchie n graful nostru, atunci dac literalul A este adevrat atunci i
literalul B trebuie s fie adevrat pentru ca propoziia reprezentat de mucie s fie
satisfcut. Putem demonstra prin inducie c dac exist un drum n graf de la literalul A
la literalul B, atunci dac A este adevrat i B trebuie s fie adevrat. Dacp exist un
drum de la un literal X la X atunci nu va exista soluie pentru c nu putem seta n
acelai timp o variabil i valoarea ei negat la valoarea adevrat. De aici rezult c dac
n graful asociat expresiei exist o variabil X n aceiai component tare conex cu X
atunci instana problemei satisfiabilitii nu poate fi satisfcut.
Dac nu exist o asemenea variabil, vom vedea n continuare cum putem rezolva
problema. Mai nti facem observaia c dac n graf exist muchia AB atunci exist i
muchia B A. Astfel dac exist un drum de la A la B n graf, aplicnd proprietatea
menionat pentru fiecare muchie a drumului, vom gsi un drum de la B la A.
Evident avem i invers dac exist drum de la B la A vom avea un drum de la nodul A
la nodul B. Astfel dac avem c A i B sunt n aceeai component tare conex atunci i
nodurile A i B sunt n aceeai component conex. Deci dac nu exist doi literali X
i X n aceeai component tare conex, putem s mprim graful n componente tari
conexe i s mperechem componentele cte dou astfel ca n fiecare pereche s apar o
component U cu nite literali i alt component U cu aceiai literali negai.
Pentru a gsi o soluie vom determina mai nti componentele tari conexe ale grafului.
Apoi putem contracta fiecare component ntr-un nod. Graful obinut va fi acciclic.
Alegem un nod u n care nu intr nici o muchie (un asemenea nod trebuie s existe pentru
a nu exista cicluri), din considerente de simetrie, din nodul lui pereche u nu va iei nici
o muchie. Literalilor componentei U putem s le dm valoarea de adevr 0, iar literalilor
din componenta pereche U putem s le dm valoarea de adevr 1. Aceast alegere nu
impune resrictii asupra celorlalti literali i elimin cteva variabile din problem.
Repetarea recursiv a acestui pas pe graful rmas va duce la rezolvarea problemei.
Determinarea componentelor tari conexe se poate face n complexitatea O(N + M),
pentru a vedea acest algoritm puteti consulta seciunea 23.5 a [1]. Iar eliminarea
nodurilor de care vorbeam mai sus se poate face n O(N + M) folosind de exemplu o
sortare topologic.
S vedem cum merge algoritmul nostru pe exemplul de mai sus.
Componentele tari conexe sunt urmtoarele {A}, { A}, {B, C, D} i { B, C, D}.
n nodul asociat componentei {A} nu intr nici o muchie astfel putem s i dm lui A
valoarea 0, iar n nodul asociat componentei { B, C, D} nu intr nici o muchie deci
putem s dm lui B valoarea 1, lui C valoarea 0 i lui D valoarea 1. Aceast atribuire este
satisfiabil dup cum vedem n continuare:
( A B) (B C) (B C) ( B D) (C D) = ( 0 1) (1
1) (1 1) ( 1 0) (1 0) = 1 1 1 1 1 = 1
Aplicaii:
yN-1
Acum pentru fiecare celul putem demonstra prin inducie c A[i][j] = (-1)^i xj + (-1)^j yi
+ b[i][j]. Unde b[i][j] sunt nite constante ce sunt calculate n funcie de matricea primit
la intrare.
Este uor de observat c dac A[i-1][j] = (-1)^(i-1) xj + (-1)^j yi-1 + b[i-1][j], A[i-1][j-1]
= (-1)^(i-1) xj-1 + (-1)^(j-1) yi-1 + b[i-1][j-1], A[i][j-1] = (-1)^i xj-1 + (-1)^(j-1) yi + b[i]
[j-1] atunci A[i][j] = S[i-1][j-1] A[i-1][j] A[i][j-1] A[i-1][j-1] = S[i-1][j-1] ((-
1)^(i-1) xj + (-1)^j yi-1 + b[i-1][j]) ((-1)^(i-1) xj-1 + (-1)^(j-1) yi-1 + b[i-1][j-1]) ((-
1)^i xj-1 + (-1)^(j-1) yi-1 + b[i][j-1]) = (-1)^i xj - (-1)^j yi-1 + (-1)^i xj-1 + (-1)^j yi-1 - (-
1)^i xj-1 + (-1)^j yi + S[i-1][j-1] b[i-1][j] b[i][j-1] b[i- 1][j-1] = (-1)^i xj + (-1)^j yi
+ b[i][j]. De aici tragem concluzia c b[i][j] = S[i-1][j-1] b[i-1][j] b[i][j-1] b[i- 1][j-
1] (*).
Avem un sistem format din inecuaiile:
0 <= xj <= 1
0 <= yi <= 1
-b[i][j] <= (-1)^i xj + (-1)^j yi <= 1 b[i][j]
Este uor acum s transformm acest sistem ntr-o formul boolean n form normal
conjunctiv n care fiecare expresie are cel mult doi literali. Fiecare relatie o putem
nmulti sau nu cu -1 astfel ca parile constante ale relatiei s fie pozitive. Observm c |
b[i][j]| <= 2 altfel nu avem soluie. Dac |b[i][j]| = 2 atunci ambele variabile au valori
fixe, iar dac |b[i][j]| = 1 sau |b[i][j]| = 0 atunci relaia o putem scrie ca o disjuncie logic
cu doi literali.
O relaie de genul 0 <= xx + yy <= 1 poate fi tansformat logic n ( xx yy), astfel
xx i yy nu vor fi n acelai timp 1, una de genul 1 <= xx + yy <= 2 va fi transformat n
(xx yy), astfel cel puin xx sau yy va fi egal cu 1, alta de tipul 0 <= xx - yy <= 1 poate
fi scris ca (xx yy), una de tipul 2 <= xx + yy <= 3 n (xx yy), iar una de tipul 0
<= -xx -yy <= 1 n ( xx yy), una de tipul 1 <= xx yy <= 2 n (xx yy).
Astfel am redus problema la rezolvarea unei instane de 2SAT. Avem N+M-1 necunoscute
i (N 1)(M 1) propoziii, folosind a treia metod de rezolvare vom obine un algoritm
de complexitate O(NM) care soluioneaz problema noastr.
S vedem cum merge acest rezolvare pe exemplul din problem:
323
S=233
121
Alegem A[0][0] = 1, vom avea necunoscutele x1, x2, x3 i y1, y2, y3.
1 x1 x2 x3
y1 A[1][1] A[1][2] A[1][3]
y3 A[2][1] A[2][2] A[2][3]
y3 A[3][1] A[3][2] A[3][3]
Bibliografie:
[1] T. H. Cormen, C. E. Leiserson, R. R. Rivest, Introducere in algoritmi
[2] http://en.wikipedia.org/wiki/Satisfiability
[3] BOI 2001 documents
[4] CEOI 2002 documents