Definiţia.68 Un literal este o I variabilă (în care caz spunem că este literal pozitiv) sau I negaţia unei variabile (în care caz spunem că este literal negativ). Exemple: v, v 2, v 0 literali pozitivi; v 0, v 00 literali negativi Definiţia.69 Oformulă' este în formă normală disjunctivă (FND) dacă ' este o disjuncţie de conjuncţii de literali. 0 n_ ^k i Aşadar, ' este în FND ddacă ' = @ L i,j A, undefiecarel i,j este literal. j= 93 Definiţia.70 Oformulă' este în formă normală conjunctivă (FNC) dacă ' este o conjuncţie de disjuncţii de literali. 0 n^ _ k i Aşadar, ' este în FNC ddacă ' = @ L i,j A, undefiecarel i,j este literal. Exemple I (v 0 _ v ) ^ (v 3 _ v 5 ) ^ ( v 20 _ v 5 _ v 34 ) este în FNC j= I ( v 9 ^ v ) _ v 24 _ (v 2 ^ v ^ v 2 ) este în FND I v ^ v 5 ^ v 4 este atât în FND cât şi în FNC I v 0 _ v 20 _ v 4 este atât în FND cât şi în FNC I (v _ v 2 ) ^ ((v ^ v 3 ) _ (v 4 ^ v 5 )) nu este nici în FND, nici în FNC 94 Funcţia asociată unei formule Notaţie: Dacă L este literal, atunci L c := Propoziţia.7 (ii) Fie ' oformulăînfnd,' = W n ( v dacă L = v 2 V v dacă L = v. Wki j= L i,j.atunci (i) Fie ' oformulăînfnc,' = V n ' W n Vki j= Lc i,j,oformulăînfnd. Vki j= L i,j ' V n Exerciţiu. Wki j= Lc i,j,oformulăînfnc..atunci : Arătaţi că v! (v 2! (v ^ v 2 )). v v 2 v! (v 2! (v ^ v 2 )) 0 0 0 0 Acest tabel defineşte o funcţie F : {0, } 2!{0, } " " 2 F ("," 2 ) 0 0 0 0 95 96
Funcţia asociată unei formule Fie ' oformulăşivar(') ={x,...,x n }. Fie (",...," n ) 2{0, } n.definime ",...," n : Var(')!{0, } astfel: e ",...," n (x i )=" i pentru orice i 2{,...,n}. Definim e + ",...," n (') 2{0, } astfel: e + ",...," n (') :=e + ('), unde e : V!{0, } este orice evaluare care extinde e ",...," n,adică, e(x i )=e ",...," n (x i )=" i pentru orice i 2{,...,n}. Conform Propoziţiei.3, definiţia nu este ambiguă. Definiţia.72 Funcţia asociată lui ' este F ' : {0, } n!{0, }, definităastfel: F ' (",...," n )=e + ",...," n (') pentru orice (",...," n ) 2{0, } n. Funcţia asociată unei formule Propoziţia.73 (i) Fie ' oformulă.atunci (a) ' ddacă F ' este funcţia constantă. (b) ' este nesatisfiabilă ddacă F ' este funcţia constantă 0. (ii) Fie ', două formule. Atunci (a) ' ddacă F ' apple F. (b) ' ddacă F ' = F. (iii) Există formule diferite ', a.î. F ' = F. Exerciţiu. Aşadar, F ' este funcţia definită de tabela de adevăr pentru '. 97 98 Caracterizarea funcţiilor booleene Definiţia.74 O funcţie booleană este o funcţie F : {0, } n!{0, }, unden. Spunem că n este numărul variabilelor lui F. : Pentru orice formulă ', F ' este funcţie Booleană cu n variabile, unde n = Var('). Teorema.75 Fie n ş i H : {0, } n!{0, } o funcţie booleană arbitrară. Atunci există o formulă ' î n F N D a. î. H = F '. Dacă H(",...," n )=0pentruorice(",...," n ) 2{0, } n, n_ luăm ' := (v i ^ v i ).AvemcăVar(') ={v 0,...,v n }, i=0 aşadar, F ' : {0, } n!{0, }. Cum v i ^ v i este nesatisfiabilă pentru orice i, rezultăcă' este de asemenea nesatisfiabilă. Deci, F ' este de asemenea funcţia constantă 0. 99 Caracterizarea funcţiilor booleene Altcumva, mulţimea T := H () = {(",...," n ) 2{0, } n H(",...," n )=} este nevidă. Considerăm formula ' := _ (",...," n)2t 0 @ ^ v i ^ ^ v i A. " i = " i =0 Deoarece Var(') ={v,...,v n },avemcăf ' : {0, } n!{0, }. Se demonstrează că H = F ' (exerciţiu suplimentar). 00
Caracterizarea funcţiilor booleene Caracterizarea funcţiilor Booleene Teorema.76 Fie n ş i H : {0, } n!{0, } o funcţie booleană arbitrară. Atunci există o formulă î n F N C a. î. H = F. Dacă H(",...," n )=pentruorice(",...," n ) 2{0, } n, atunci luăm n^ := (v i _ v i ). Altcumva, mulţimea i=0 F := H (0) = {(",...," n ) 2{0, } n H(",...," n )=0} : Fie H : {0, } 3!{0, } descrisă prin tabelul: " " 2 " 3 H("," 2," 3 ) 0 0 0 0 D = v _ v 2 _ v 3 0 0 0 D 2 = v _ v 2 _ v 3 0 0 C = v ^ v 2 ^ v 3 0 0 D 3 = v _ v 2 _ v 3 0 0 C 2 = v ^ v 2 ^ v 3 0 C 3 = v ^ v 2 ^ v 3 0 C 4 = v ^ v 2 ^ v 3 C 5 = v ^ v 2 ^ v 3 este nevidă. Considerăm formula := ^ (",...," n)2f 0 @ _ v i " i = " i =0 Se demonstrează că H = F (exerciţiu suplimentar). v i A. 0 ' = C _ C 2 _ C 3 _ C 4 _ C 5 î n F N D a. î. H = F '. = D ^ D 2 ^ D 3 î n F N C a. î. H = F. 02 Algoritm pentru a aduce o formulă la FNC/FND: Pasul. Se înlocuiesc implicaţiile şi echivalenţele, folosind: Teorema.77 '! ' _ ş i ' $ ( ' _ ) ^ ( _ '). Orice formulă ' este echivalentă cu o formulă ' FND î n F N D ş i c u oformulă' FNC î n F N C. Fie Var(') ={x,...,x n } ş i F ' : {0, } n!{0, } funcţia booleană asociată. Aplicând Teorema.75 cu H := F ', obţinem o formulă ' FND î n F N D a. î. F ' = F ' FND. Aşadar, conform Propoziţiei.73.(ii), ' ' FND. Similar, aplicând Teorema.76 cu H := F ', obţinem o formulă ' FNC î n F N C a. î. F ' = F ' FNC.Prinurmare,' ' FNC. Pasul 2. Se înlocuiesc dublele negaţii, folosind, şiseaplică regulile De Morgan pentru a înlocui (' _ ) cu ' ^ ş i (' ^ ) cu ' _. Pasul 3. Pentru FNC, se aplică distributivitatea lui _ faţa de ^, pentru a înlocui ' _ ( ^ )cu(' _ ) ^ (' _ ) şi ( ^ ) _ ' cu ( _ ') ^ ( _ '). Pentru FND, se aplică distributivitatea lui ^ faţa de _, pentru a înlocui ' ^ ( _ )cu(' ^ ) _ (' ^ ) şi ( _ ) ^ ' cu ( ^ ') _ ( ^ '). 03 04
Considerăm formula ' := ( v 0! v 2 )! (v 0! v 2 ). Avem ' ( v 0! v 2 ) _ (v 0! v 2 ) Pasul ( v 0 _ v 2 ) _ (v 0! v 2 ) Pasul ( v 0 _ v 2 ) _ ( v 0 _ v 2 ) Pasul (v 0 _ v 2 ) _ ( v 0 _ v 2 ) Pasul 2 ( v 0 ^ v 2 ) _ ( v 0 _ v 2 ) Pasul 2 ( v 0 ^ v 2 ) _ v 0 _ v 2 Pasul 2 Putem lua ' FND := ( v 0 ^ v 2 ) _ v 0 _ v 2. Pentru a obţine FNC, continuăm cu Pasul 3: ' ( v 0 ^ v 2 ) _ ( v 0 _ v 2 ) ( v 0 _ v 0 _ v 2 ) ^ (v 2 _ v 0 _ v 2 ). Putem lua ' FNC := ( v 0 _ v 0 _ v 2 ) ^ (v 2 _ v 0 _ v 2 ). Se observă, folosind idempotenţa şi comutativitatea lui _, că' FNC v 0 _ v 2. 05 Definiţia.78 O clauză este o mulţime finită de literali: C = {L,...,L n },undel,..., L n sunt literali. Dacă n =0, obţinem clauza vidă := ;. O clauză nevidă este considerată implicit o disjuncţie. Definiţia.79 Fie C oclauzăşie : V!{0, }. Spunemcăe este model al lui C sau că e satisface C ş i s c r i e m e C dacă există L 2 C a.î. e L. Definiţia.80 OclauzăC se numeşte (i) satisfiabilă dacă are un model. (ii) validă dacă orice evaluare e : V!{0, } este model al lui C. 06 Definiţia.8 OclauzăC este trivială dacă există un literal L a.î. L, L c 2 C. Propoziţia.82 (i) Orice clauză nevidă este satisfiabilă. (ii) Clauza vidă este nesatisfiabilă. (iii) Oclauzăestevalidă ddacăestetrivială. Exerciţiu. S = {C,...,C m } este o mulţime de clauze. Dacă m = 0, obţinem mulţimea vidă de clauze ;. S este considerată implicit ca o formulă în FNC: conjuncţie de disjuncţii ale literalilor din fiecare clauză. Definiţia.83 Fie e : V!{0, }. Spunemcăe este model al lui S sau că e satisface S ş i s c r i e m e S dacă e C i pentru orice i 2{,...,m}. Definiţia.84 S se numeşte (i) satisfiabilă dacă are un model. (ii) validă dacă orice evaluare e : V!{0, } este model al lui S. 07 08
şi FNC Propoziţia.85 I Dacă S conţine clauza vidă, atuncis nu este satisfiabilă. I ; este validă. Exerciţiu. S = {{v, v 3 }, { v 3, v 3 }, {v 2, v }, {v 2, v, v 3 }} este satisfiabilă. Considerăm e : V!{0, } a.î. e(v )=e(v 2 ) =. Atunci e S. S = {{ v, v 2 }, { v 3, v 2 }, {v }, {v 3 }} nu este satisfiabilă. Presupunem că S are un model e. Atunci e(v )=e(v 3 )=şi, deoarece e { v 3, v 2 },trebuiesăavem e(v 2 ) = 0. Rezultă că e(v 2 )=e + ( v ) = 0, deci e nu satisface { v, v 2 }. Am obţinut o contradicţie. Unei formule ' î n F N C î i a s o c i e m o m u l ţ i m e d e c l a u z e S ' astfel: Fie ' := 0 n^ _ k i @ unde fiecare L i,j este literal. Pentru orice i, fiec i clauza obţinută considerând toţi literalii L i,j, j 2{,...,k i } distincţi. Fie S ' mulţimea tuturor clauzelor C i, i 2{,...,n} distincte. j= L i,j A, S ' se mai numeşte şi forma clauzală alui'. Propoziţia.86 Pentru orice evaluare e : V!{0, }, e ' ddacă e S '. Exerciţiu. 09 0 şi FNC Rezoluţia Unei mulţimi de clauze S î i a s o c i e m o f o r m u l ă ' S î n F N C a s t f e l : I C = {L,...,L n }, n 7! ' C := L _ L 2 _..._ L n. I 7! ' := v 0 ^ v 0. Fie S = {C,...,C m } omulţimenevidădeclauze.formula asociată lui S este m^ ' S := ' Ci. Formula asociată mulţimii vide de clauze este ' ; := v 0 _ v 0. Formula ' S nu este unic determinată, depinde de ordinea în care se scriu elementele în clauze şi în S, dar se observă imediat că: S = S 0 implică ' S ' S 0. Propoziţia.87 Pentru orice evaluare e : V!{0, }, e S ddacă e ' S. Exerciţiu. Definiţia.88 Fie C, C 2 două clauze. O clauză R se numeşte rezolvent al clauzelor C, C 2 dacă există un literal L a.î. L 2 C, L c 2 C 2 ş i Regula Rezoluţiei Rez R =(C \{L}) [ (C 2 \{L c }). C, C 2 (C \{L}) [ (C 2 \{L c }), L 2 C, L c 2 C 2 Notăm cu Res(C, C 2 ) mulţimea rezolvenţilor clauzelor C, C 2. I Rezoluţia a fost introdusă de Blake (937) şi dezvoltată de Davis, Putnam (960) şi Robinson (965). I Multe demonstratoare automate de teoreme folosesc rezoluţia. Limbajul PROLOG este bazat pe rezoluţie. 2
Rezoluţia Rezoluţie C = {v, v 2, v 5 }, C 2 = {v, v 2, v 00, v 5 }. I Luăm L := v 5.AtunciL 2 C ş i L c = v 5 2 C 2. Prin urmare, R = {v, v 2, v 2, v 00 } este rezolvent al clauzelor C, C 2. I Dacă luăm L 0 := v 2,atunciL 0 2 C ş i L 0c = v 2 2 C 2. Prin urmare, R 0 = {v, v 5, v 00, v 5 } este rezolvent al clauzelor C, C 2. C = {v 7 }, C 2 = { v 7 }. Atunci clauza vidă este rezolvent al clauzelor C, C 2. Fie S omulţimedeclauze. Definiţia.89 O derivare prin rezoluţie din S sau o S-derivare prin rezoluţie este osecvenţăc, C 2,...,C n de clauze a.î. pentru fiecare i 2{,...,n}, una din următoarele condiţii este satisfăcută: (i) C i este o clauză din S; (ii) există j, k < i a.î. C i este rezolvent al clauzelor C j, C k. Definiţia.90 Fie C oclauză.oderivare prin rezoluţie a lui C din S este o S-derivare prin rezoluţie C, C 2,...,C n a.î. C n = C. 3 4 Rezoluţie Fie S = {{ v, v 2 }, { v 2, v 3, v 4 }, {v }, {v 3 }, { v 4 }}. O derivare prin rezoluţie a clauzei vide din S este următoarea: C = { v 4 } C 2S C 2 = { v 2, v 3, v 4 } C 2 2S C 3 = { v 2, v 3 } C 3 rezolvent al clauzelor C, C 2 C 4 = {v 3 } C 4 2S C 5 = { v 2 } C 5 rezolvent al clauzelor C 3, C 4 C 6 = { v, v 2 } C 6 2S C 7 = { v } C 7 rezolvent al clauzelor C 5, C 6 C 8 = {v } C 8 2S C 9 = C 9 rezolvent al clauzelor C 7, C 8. 5