13.07.2015 Views

Matematici discrete pentru CS - Departamentul Automatica ...

Matematici discrete pentru CS - Departamentul Automatica ...

Matematici discrete pentru CS - Departamentul Automatica ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

U(k, n) înseamnǎ cǎ cel mult k din cele n pǎtrate conţin o minǎL(k, n) înseamnǎ cǎ cel puţin k din cele n pǎtrate conţin o minǎDar cum se exprimǎ “cel mult k” utilizând clauze care spun “cel puţin unul”? Seconsiderǎ orice submulţime de k + 1 pǎtrate din cele n necunoscute. Dacǎ celpuţin k sunt minate, atunci cel puţin unul nu este minat; situaţia inversǎ este deasemenea adevǎratǎ. Astfel, avem:U(k, n) ≡ <strong>pentru</strong> orice k + 1 pǎtrate din cele n, cel puţin unul nu este minatSimilar, considerând orice submulţime de n – k + 1 pǎtrate: dacǎ cel puţin k dintoate cele n pǎtrate sunt minate, atunci cel puţin unul din oricare n – k + 1pǎtrate trebuie sǎ fie cu minǎ; reciproca este adevǎratǎ. AsadarL(k, n) ≡ <strong>pentru</strong> orice k + 1 pǎtrate din cele n, cel puţin unul este minatAplicând aceste formulǎri pǎtratului (2, 1) din exemplul de mai sus, unde k = 1si n = 3, se obţine:U(1, 3) ≡ <strong>pentru</strong> orice 2 pǎtrate din cele 3, cel puţin unul nu este minatL(1, 3) ≡ <strong>pentru</strong> orice 3 pǎtrate din cele 3, cel puţin unul este minatTraducând într-o expresie booleanǎ, se obţin relaţiileU(1, 3) ≡ (¬X 1, 2 ∨ ¬X 2, 2 ) ∧ (¬X 2, 2 ∨ ¬X 3, 2 ) ∧ (¬X 3, 2 ∨ ¬X 1, 2 )L(1, 3) ≡ (X 1, 2 ∨ X 2, 2 ∨ X 3, 2 )exact ca în lecţia 7.De observat cǎ aceste espresii sunt valide dacǎ avem k > 0 si k + 1 ≤ n. Cazul k= 0 înseamnǎ simplu cǎ expresia KN(0, n) este conjuncţia clauzelor ¬X i <strong>pentru</strong>toţi i. Cazul k + 1 > n poate sǎ aparǎ numai dacǎ avem k = n, adicǎ toate nvariabilele sunt cu mine; atunci avem simplu clauzele X i <strong>pentru</strong> toţi i.Se poate de asemenea genera o expresie CNF recursiv dupǎ cum urmeazǎ:KN(k, n) ≡ ((X n ⇒ KN(k – 1, n – 1)) ∧ (¬X n ⇒ KN(k, n – 1)))cu cazurile de bazǎ la k = n si la k = 0 ca mai sus. Presupunând cǎ atât KN(k – 1,n – 1) cât si KN(k, n – 1) pot fi exprimate în CNF, este un pas simplu careuzeazǎ de distributivitate <strong>pentru</strong> a exprima KN(k, n) în CNF. Expresia carerezultǎ din aceastǎ recursivitate aratǎ usor diferit de aceea obţinutǎ maidevreme, dar cele douǎ variante sunt echivalente logic.În plus, faţǎ de restricţiile “locale” rezultate din pǎtratele deja verificate, avemsi restricţia globalǎ rezultatǎ din numǎrul total de mine rǎmase, M:G: Exact M din pǎtratele necunoscute pe afisaj conţin mine.Dacǎ sunt B pǎtrate rǎmase necunoscute, acestea sunt o mulţime de clauze deforma KN(M, B).Preliminarii: numǎrǎtoarea de obiecteVom face acum o usoarǎ digresiune <strong>pentru</strong> a intra provizoriu în chestiuneanumǎrului de clauze generate <strong>pentru</strong> Minesweeper.Fie |KN(n,k)| numǎrul de clauze din KN(n,k), utilizând prima noastrǎconstrucţie. Cât de mare este acesta? Avem ecuaţia urmǎtoare:|KN(n,k)| = |L(n,k)| + |U (n,k)| = C(n, n – k + 1) + C(n, k + 1)unde notaţia C(n, k) este definitǎ imediat:68

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!