MATEMATINĖ LOGIKA Įžanginių paskaitų medžiaga iš knygos Aleksandras Krylovas. Diskrečioji matematika: vadovėlis aukštųjų mokyklų studentams. Vilnius: Technika, 2009. 320 p. ISBN 978-9955-28-450-5 Teiginio sąvoka Logika nagrinėja mąstymo dėsnius, užtikrinančius jo taisyklingumą, t. y. apibrėžtumą, neprieštaringumą, nuoseklumą, pagrįstumą. Viena iš pagrindinių, bazinių, pirminių logikos sąvokų yra teiginys toks sakinys, tvirtinimas, reiškimas, kuris visada yra arba teisingas, arba klaidingas. Nagrinėjamų logikoje samprotavimų turinys nėra svarbus: logika domisi teisingų samprotavimų sudarymo formomis. Todėl svarbios yra tik teiginių reikšmės: tiesingas arba klaidingas, kurios žymimos TRUE, FALSE, T, F, t, k, 1, 0,... ir vadinamos loginėmis konstantomis. Abstraktieji teiginiai žymimi raidėmis su indeksais arba be jų: A, B,..., c, d, e,..., f 1, h 2,... ir vadinami loginiais kintamaisiais. Matematinė logika nagrinėja matematinių samprotavimų formas ir dažnai naudoja simbolius ir formules. Iš teiginių, kuriuos galima pavadinti pirminiais, elementariais arba loginiais kintamaisiais, sudaromi nauji, sudėtiniai teiginiai. Naujiems teiginiams sudaryti apibrėžiamos loginės operacijos, kurios formalizuoja matematinių teoremų įrodymą. Tarkime, kad x ir y yra teiginiai (loginiai kintamieji). Atliekant su x ir y logines operacijas (veiksmus), gaunami nauji teiginiai. Teiginio T neigimu vadinamas naujas teiginys, kurį žymime T arba T ir skaitome ne T, netiesa, kad T. Kai loginio kintamojo T reikšmė yra tiesa, tai kintamojo T reikšmė yra klaida, ir atvirkščiai, kai T klaida T tiesa. Neigimo operacijos apirėžimą patogu užrašyti tokia lentele T k t Operacija disjunkcija žymima (skaitoma x arba y ): teiginys x y yra teisingas, jei teisingas bent vienas iš teiginių x, y (t. y. teisingas yra bent kuris nors iš x, y, tačiau jie gali būti teisingi ir abu.) Operacija konjunkcija žymima & (skaitoma x ir y ): teiginys x & y yra teisingas, jei teisingi abu teiginiai x, y (t. y. teisingas ir x, ir y). Operacija implikacija žymima ( skaitoma jei x, tai y arba iš x išplaukia y ). Teiginys x y yra klaidingas tik tuo atveju, kai teiginys x yra teisingas, o y klaidingas (t. y. implikacija klaidinga, jei iš tiesos išplaukia melas, o visais kitais atvejais implikacija yra teisinga Operacija ekvivalentumas žymimas (skaitoma x tada ir tik tada, kai y ): teiginys x y yra teisingas, jei abu teiginiai x, y yra teisingi arba abu klaidingi (dar sakome, kad sąlyga x yra būtina ir pakankama sąlygai y. T t k 1
Keturių dviviečių operacijų lentelė x y x y x & y x y y x x y k k k k t t t k t t k t k k t k t k k t k t t t t t t t Disjunkcija kartais vadinama logine suma, o konjunkcija logine sandauga. Jei logines konstantas k ir t pažymėsime 0 ir 1 ir į simbolius 0 ir 1 žiūrėsime kaip į skaičius, tai x & y = x y, x y = x y x y. Operacija vadinama sudėtimi moduliu du: 0 0 = 0, 1 1 = 0, 0 1 = 1 0 = 1. Sudėtis moduliu du kartais vadinama griežtąja disjunkcija ir žymima. Formulė F vadinama tautologija (tapačiai teisinga), jei ji įgyja reikšmę t, esant bet kurioms kintamųjų reikšmėms. Formulė F vadinama prieštara (tapačiai klaidinga), jei esant bet kurioms kintamųjų reikšmėms ν = (ν 1, ν 2,..., ν n ): F(ν) = k. Pastebėkime, kad F yra prieštara tada ir tik tada, kai F tautologija. Formulės F ir G vadinamos ekvivalenčiosiomis, jei esant bet kurioms kintamųjų reikšmėms ν = (ν 1, ν 2,..., ν n ): F(ν) = G(ν). Ekvivalenčiąsias formules žymime ženklu =: F = G. Tai reiškia, kad ekvivalenčios formulės gali būti užrašytos įvairiais būdais, bet jei apskaičiuojame jų reikšmes, gausime tą patį rezultatą. Teorema. Formulės F ir G yra ekvivalenčiosios tada ir tik tada, kai formulė (F G) yra tautologija. Pateiksime ekvivalenčiųjų formulių pavyzdžių. F = F; F G = G F; F G = F G; F F = F; F&F = F; F G = F G; F G = (F& G); F t = t; F&t = F; F k = F; F&k = k. Žinodami įeinančių į loginę formulę loginių kintamųjų reikšmes, atliekame logines operacijas ir surandame formulės reikšmes. Visas formulės reikšmes įrašome į teisingumo reikšmių lentelę. Taigi teisingumo lentelė apie loginę formulę teikia visą informaciją. Pavyzdys. Formulės f(x 1, x 2, x 3 ) = (x 1 x 2 ) & (x 1 x 3 ) 2
reikšmes ir jų skaičiavimo eigą nusako ši teisingumo reikšmių lentelė. x 1 x 2 x 3 x 1 x 2 x 1 x 2 x 1 x 3 f(x 1, x 2, x 3 ) k k k t t t k k k k t t t t t t k t k t k t k k k t t t k t t t t k k k t t t t t k t k t t t t t t k k k k t k t t t k k k t k Tapačiai teisingos formulės tautologijos dar vadinamos logikos dėsniais. Įrašykime svarbiausius iš jų į lentelę Pavadinimas negalimo trečiojo dėsnis dvigubasis neigimas Formulė x x x x prieštaravimas x & x tapatybės dėsnis x x modus ponens x & (x y) y modus tollens (x y)& y x (x y) & (y z) silogizmas (x z) kontrapozicija x y y x x & y x y de Morgano dėsniai x y x & y Visos formulės įrodomos sudarant jų teisingumo reikšmių lenteles. Įrodykime, pavyzdžiui, pirmąjį de Morgano dėsnį: x y x y x & y x & y x y x & y x y k k t t k t t t k t t k k t t t t k k t k t t t t t k k t k k t Iš lentelės matome, kad formulė x & y x y yra tautologija, kurią galima perrašyti ir taip: x & y = x y. Tautologijų nustatymo taisyklės Teisingumo reikšmių lentelės metodas yra universalus, tačiau reikalaujantis daug darbo. Kartais įrodyti, kad formulė yra tautologija, galima greičiau. Pavyzdys. Įrodykime prieštaros metodu, kad formulė F = (A (B A)) yra tautologija. Sprendžiame loginę lygtį F(X) = k. Implikacija ( ) įgyja klaidingą reikšmę tik tada, kai t k. Taigi turi būti A = t, (B A) = k. 3
Gauname, kad turi būti (B t) = k, bet implikacija tokių reikšmių neturi, nepaisant B. Todėl lygtis F(X) = k neturi sprendinių ir visais atvejais gauname F = t, t. y. formulė F yra tautologija. Pavyzdys. Ekvivalenčiųjų pertvarkių metodu įrodykime, kad formulė A & B (A B) yra tautologija. Taikome dvigubojo neigimo dėsnį: A & B = A & B. Reiškiniui A & B taikome de Morgano dėsnį: A & B = A B. Taikydami negalimo trečiojo dėsnį, gauname A B (A B) = t. Bulio funkcijos Logikos algebros funkcijos, kai jų pačių ir jų argumentų reikšmės lygios 0 arba 1, dar vadinamos Bulio funkcijomis. Jis (George Boole (1815 1864) anglų matematikas ir logikas) pirmas pradėjo taikyti matematikos principus logikoje. Tarkime, kad nepriklausomi kintamieji x 1, x 2,...,x n ir priklausomas kintamasis funkcija f(x 1, x 2,..., x n ) įgyja tik dvi reikšmes, kurias žymėsime 0, 1. Tokias funkcijas ir kintamuosius vadinsime buliniais arba Bulio kintamaisiais ir bulinėmis funkcijomis. Bet kurią Bulio funkciją galima apibrėžti jos teisingumo lentele: x 1 x 2... x n f(x 1, x 2,...,x n ) 0 0... 0 f(0, 0,...,0) 0 0... 1 f(0, 0,...,1)..................... 0 1... 1 f(0, 1,...,1) 1 1... 1 f(1, 1,...,1) Skirtingų n kintamųjų Bulio funkcijų yra 2 2n. Bulio funkcijos f(x 1, x 2,...,x n ) kintamasis x j (1 j n) vadinamas fiktyviuoju, jei visoms kintamųjų x 1,..., x j 1, x j+1,..., x n reikšmėms f(..., x j 1, 0, x j+1,...) = f(...,x j 1, 1, x j+1,...). Kintamieji, kurie nėra fiktyvieji, vadinami esminiais. Pavyzdys. Tarkime, kad trijų kintamųjų x, y, z Bulio funkcija f(x, y, z) apibrėžta tokia lentele x y z f(x, y, z) 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 0 1 0 1 0 1 1 0 1 1 1 1 1 Matome, kad ketvirtasis stulpelis sutampa su antruoju, t. y. funkcija f(x, y, z) išreiškiama tik vienu kintamuoju y ir todėl galima rašyti (=), kai tą pačią Bulio 4
funkciją reiškiame skirtingomis formulėmis. Taigi rašome f(x 1, x 2,..., x n ) = g(x 1, x 2,...,x n ), kai sutampa šių Bulio funkcijų teisingumo lentelės, t. y. kai lygybė galioja bet kuriam kintamųjų rinkiniui (x 1, x 2,..., x n ) {0, 1} n. Funkcija f(x, y, z) nepriklauso nuo kitų dviejų kintamųjų x ir y ir todėl jie yra fiktyvieji. Pastebėkime, kad tą pačią funkciją galima išreikšti ir kitomis formulėmis, į kurias šie kintamieji įeina: f(x, y, z) = y = y & (x x) = y & (y y) x &x. Taigi fiktyvieji kintamieji gali ir įeiti, ir neįeiti į formulę, tačiau, jei funkcija išreiškiama formule, kurioje kintamojo nėra jis yra fiktyvusis. Vieno kintamojo Bulio funkcijos Vieno kintamojo x Bulio funkcijų f(x) yra tik keturios: x f(x) = 0 f(x) = x f(x) = x f(x) = 1 0 0 0 1 1 1 0 1 0 1 Funkcijos f(x) = 0 ir f(x) = 1 yra konstantos ir x šiuo atveju fiktyvusis kintamasis. Kitos dvi funkcijos išreiškiamos kintamuoju x arba jo neiginiu x: f(x) = x, f(x) = x ir šioms funkcijoms x yra esminis kintamasis. Jei formulė priklauso nuo vieno kintamojo x, ji išreiškia kurią nors vieną iš keturių surašytų lentelėje funkcijų. Taigi tokią formulę visada galima supaprastinti ir išreikšti konstanta 0 arba 1, kintamuoju x arba jo neiginiu x. Pavyzdys. Suprastinkime formulę Kai x = 0, gauname Kai x = 1, turime Taigi gauname, kad (x (x x)) x. (0 (0 1)) 0 = (0 1) 0 = 1 0 = 0. ((1 (1 0)) 1) = ((1 0) 1) = (0 1) = 1. ((x (x x)) x) = x. Dviejų kintamųjų Bulio funkcijos Išnagrinėkime visas dviejų kintamųjų Bulio funkcijas f(x 1, x 2 ). Kadangi kintamieji įgyja tik dvi reikšmes 0, 1 ir funkcijos reikšmių irgi yra tik dvi, tai egzistuoja lygiai 16 skirtingų dviejų kintamųjų Bulio funkcijų. Įrašykime visas jas į lentelę. x 1 x 2 f 0 f 1 f 2 f 3 f 4 f 5 f 6 f 7 0 0 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 5
x 1 x 2 f 8 f 9 f 10 f 11 f 12 f 13 f 14 f 15 0 0 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Bulio funkcijų reiškimas formulėmis Funkcijos f 0 ir f 15 yra konstantos: f 0 = 0, f 15 = 1. Funkcija f 10 = x 2 nepriklauso nuo kintamojo x 1, o funkcija f 12 = x 1 nuo x 2. Funkcijos f 0 ir f 15 neturi esminių kintamųjų. Funkcijų f 10 ir f 12 esminiai kintamieji yra x 2 ir x 1, o fiktyvieji x 1 ir x 2. Funkcijos f 3, f 5, f 8, f 9, f 11, f 13, f 14 išreiškiamos jau apibrėžtomis loginėmis operacijomis: f 3 f 5 f 8 f 9 f 11 f 13 f 14 x 1 x 2 x 1&x 2 x 1 x 2 x 1 x 2 x 2 x 1 x 1 x 2 Funkcijos f 1, f 2, f 4, f 6 ir f 7 išreiškiamos žinomų operacijų neiginiais: f 1 f 2 f 4 f 6 f 7 x 1 x 2 x 2 x 1 x 1 x 2 x 1 x 2 x 1&x 2 Jau buvo minėta funkcija, kuri vadinama sudėtimi moduliu du. Galima įrodyti (pakanka sudaryti teisingumo lentelę), kad Taigi (x 1 x 2 ) ((x 1 x 2 )&(x 1 x 2 )). f 6 (x 1, x 2 ) = x 1 x 2 = (x 1 x 2 )&(x 1 x 2 ). Funkcija f 1 yra vadinama Pyrso (Charles Peirce (1839 1914) amerikiečių matematikas, filosofas ir logikas) rodykle ir žymima : f 1 (x 1, x 2 ) = x 1 x 2 = x 1 x 2 = x 1 &x 2. Funkcija f 7 žymima ir vadinama Šeferio (Henry Sheffer (1883 1964) amerikiečių logikas.) brūkšneliu f 7 (x 1, x 2 ) = x 1 x 2 = x 1 &x 2 = x 1 x 2. Teorema. Bet kuri loginė formulė gali būti užrašyta, taikant tik vieną loginę operaciją ( ) arba ( ). Įrodymas. Pakanka įsitikinti, kad neigimas išreiškiamas taip: x = (x x). Tada (x & y) = ((x y) (x y)). Disjunkciją išreiškiame, taikydami šias formules ir de Morgano dėsnį. Pastebėję, kad (x y) = (x&y), gauname įrodymą Pyrso rodyklei. Dualumo principas Funkcija f 1 (x 1, x 2,..., x n ) vadinama dualiąja funkcijai f 2 (x 1, x 2,...,x n ), jei f 1 (x 1, x 2,...,x n ) = f 2 (x 1, x 2,..., x n ). 6
Pavyzdžiui, funkcijos 1 dualioji yra funkcija 0: f(x) = 1 = x x, Pastebėkime, kad f(x) = x (x) = (x) & x = x & x = 0. f 2 (x 1, x 2,..., x n ) = f 2 (x 1, x 2,...,x n ) = f 1 (x 1, x 2,...,x n ). Taigi jei funkcija f 1 yra dualioji funkcijai f 2, tai ir funkcija f 2 yra dualioji funkcijai f 1. Pavyzdžiui, kai f 1 (x, y) = x y ir f 2 (x, y) = x&y, turime f 1 (x, y) = x y = x & y = x & y = f 2 (x, y), f 2 (x, y) = x & y = x y = x y = f 1 (x, y). Funkcijos f(x 1, x 2,...,x n ) dualiąją funkciją f(x 1,...,x n ) žymėsime f (x 1,..., x n ). Tada f1 (x, y) = f 2 (x, y) ir f 2 (x, y) = f 1 (x, y). Arba bendrojo pavidalo: f = (f ) = f Tarkime, kad funkcijos F = F(f 1, f 2,..., f m ) dualioji yra F (f 1, f 2,...,f m ) ir f i (x 1, x 2,..., x n ), i = 1, 2,...,m yra dualiosios funkcijų f i (x 1, x 2,...,x n ). Tada galioja dualumo principas: sudėtinės funkcijos G(x 1, x 2,..., x n ) = dualioji funkcija yra F(f 1 (x 1,...,x n ),..., f n (x 1,..., x n )) F (f 1 (x 1, x 2,...,x n ), f 2 (x 1, x 2,..., x n ),..., f m (x 1, x 2,..., x n )). Pavyzdys. Funcijos F(u, v) = u v dualioji yra F (u, v) = u v = u & v. Funkcijų u(x) = x ir v(y) = y dualiosios funkcijos yra: u (x) = x = x, v (y) = y = y. Taigi funkcijos F(x, y) = F(u(x), v(y)) dualioji yra F (x, y) = F (u (x), v (y)) = x & y. Dualiosios funkcijos f (x 1,..., x n ) teisingumo lentelę gauname iš funkcijos f(x 1,..., x n ) teisingumo lentelės, keisdami visus 0 ir 1 vietomis. Pavyzdys. Raskime pateiktos lentelėje funkcijos f(x 1, x 2, x 3 ) dualiąją funkciją f (x 1, x 2, x 3 ). 7
x 1 x 2 x 3 f(x 1, x 2, x 3 ) x 1 x 2 x 3 f(x 1, x 2, x 3 ) 0 0 0 0 1 1 1 f(0,0, 0) = 1 0 0 1 0 1 1 0 f(0,0, 1) = 1 0 1 0 0 1 0 1 f(0,1, 0) = 1 0 1 1 1 1 0 0 f(0,1, 1) = 0 1 0 0 0 0 1 1 f(1,0, 0) = 1 1 0 1 1 0 1 0 f(1,0, 1) = 0 1 1 0 1 0 0 1 f(1,1, 0) = 0 1 1 1 1 0 0 0 f(1,1, 1) = 0 Rašydami Bulio kintamųjų rinkinius įprastinėse vietose, gauname x 1 x 2 x 3 f (x 1, x 2, x 3 ) 0 0 0 f(1, 1, 1) 0 0 0 1 f(1, 1, 0) 0 0 1 0 f(1, 0, 1) 0 0 1 1 f(1, 0, 0) 1 1 0 0 f(0, 1, 1) 0 1 0 1 f(0, 1, 0) 1 1 1 0 f(0, 0, 1) 1 1 1 1 f(0, 0, 0) 1 Funkcija f(x 1,..., x n ) vadinama savidualiąja, kai f (x 1,...,x n ) = f(x 1,..., x n ). Pavyzdžiui, funkcija f(x, y, z) = x&y x&z y&z yra savidualioji. Išnagrinėtame pavyzdyje ši funkcija pateikta jos teisingumo lentele. Dualiosios funkcijos konstravimo algoritmas Tarkime, kad funkcija f(x 1,...,x n ) išreikšta formule, kurioje yra kintamieji, jų neigimas ir keturios operacijos: 0, 1, &,. Tada dualioji funkcija f (x 1,..., x n ) išreiškiama formule, kurią gauname pakeitę 0 1; 1 0; & ; &; neigimo operacija nekeičiama. 8
Pavyzdys. Taikome aprašytą dualiosios funkcijos radimo algoritmą funkcijai f(x 1, x 2 ) = x 1 & x 2 x 1 & x 2. Keičiame Taigi (x 1 [& ] x 2 ) [ &] (x 1 [& ] x 2 ). f (x 1, x 2 ) = (x 1 x 2 ) & (x 1 x 2 ). Pavyzdys. Parodykime dar kartą, kad (jau nagrinėta) funkcija yra savidualioji. Turime f(x, y, z) = x&y x&z y&z f (x, y,z) = ((x&y) (x&z) (y&z)) = (x y) & (y z) & (y z) = (x&x x&z y&x y&z) & (y z) = x&x&y x&z&y y&x&y y&z&y x&x&z x&z&z y&x&z y&z&z = x&y x&z&y y&x y&z x&z x&z y&x&z y&z = x&y x&z x&y x&y&z y&z = x&y x&z y&z x&y&z = x&y x&z y&z&(1 x) = x&y x&z y&z&1 = x&y x&z y&z = f(x, y, z). Disjunkcinės ir konjunkcinės formos Pažymėkime { x σ x, σ = 0 = x, σ = 1. T. y. x x = 1 ir kai x y : x y = 0. Pastebėkime dar, kad x σ = x σ = x σ. Formulė x σ1 1 &xσ2 2 &...&xσn n vadinama elementariąja konjunkcija. Čia σ = (σ 1, σ 2,..., σ n ) yra nulių ir vienetų rinkinys, o kai kurie kintamieji x j gali ir kartotis. Kartais gali būti praleistas disjunkcijos ženklas (&). Taigi šie reiškiniai yra elementariosios konjunkcijos x 1 &x 2 &x 3, x 1 x 2 x 3 x 1 x 2, x 2 &x 4, x 3 x 1 x 2. Formulės x 1 &x 2 &x 3, x 1 x 1, x 3 x 3 &x 2 &x 1 9
nėra elementariosios konjunkcijos. Elementariųjų konjunkcijų disjunkcija vadinama disjunkcine normaliąja forma. Pavyzdžiui, šios formulės yra disjunkcinės normaliosios formos: Formulės x 1 &x 2 x 3 &x 4 &x 5, x 1 x 3 x 4 x 2 x 3. x 1 &1&x 4 0, x 1 x 9 x 2 x 4 nėra disjunkcinės normaliosios formos. Tarkime, kad Bulio funkcija f(x 1, x 2,..., x n ) išreikšta disjunkcine normaliąja forma. Funkcija f tapačiai lygi nuliui (yra prieštara) tada ir tik tada, kai kiekviena elementarioji konjunkcija turi kurį nors kintamąjį x j ir jo neiginį x j. Elementarioji konjunkcija vadinama taisyklingąja, kai kiekvienas kintamasis x σj j įeina į ją ne daugiau, kaip vieną kartą (t. y. skaičiuojant ir neiginius). Taigi šios formulės yra taisyklingosios elementariosios konjunkcijos x 1 &x 2 &x 3, x 5 &x 3 &x 4. Šios elementariosios konjunkcijos nėra taisyklingosios Formulė x σ1 1 xσ2 2... xσn n x 2 &x 2 &x 3, x 4 &x 3 &x 3. vadinama elementariąja disjunkcija. Elementariųjų disjunkcijų konjunkcija vadinama konjunkcine normaliąja forma. Tarkime, kad Bulio funkcija f(x 1, x 2,..., x n ) išreikšta konjunkcine normaliąja forma. Funkcija f tapačiai lygi vienam (yra tautologija) tada ir tik tada, kai kiekviena elementarioji konjunkcija turi kurį nors kintamąjį x j ir jo neiginį x j. Pavyzdžiui, šios formulės yra taisyklingosios elementariosios disjunkcinės formos x 1 x 2 x 4, x 2 x 5 x 4 x 7. Tobuloji disjunkcinė normalioji forma Taisyklingoji elementarioji konjunkcija (disjunkcija) vadinama pilnąja kintamųjų x 1, x 2,..., x n atžvilgiu, jei kiekvienas kintamasis x σj j įeina į ją lygiai vieną kartą (t. y. įeina arba kintamasis x j, arba jo neiginys x j ). Disjunkcinė (konjunkcinė) normalioji forma vadinama tobuląja, kai visos ją sudarančios elementariosios konjunkcijos (disjunkcijos) yra pilnosios (kintamųjų x 1, x 2,..., x n atžvilgiu) ir nėra vienodų elementariųjų konjunkcijų (disjunkcijų). Ši disjunkcinė forma yra tobuloji x 1 &x 2 &x 3 x 1 &x 2 &x 3 x 1 &x 2 &x 3. Bulio funkciją galima taip išskleisti jos kintamaisiais: f(x 1, x 2 ) = x 1 &f(1, x 2 ) x 1 &f(0, x 2 ). 10
Taikant šią formulę dar kartą, gaunama funkcijos f(x 1, x 2 ) tobuloji normalioji disjunkcinė forma: f(x 1, x 2 ) = x 1 &x 2 &f(1, 1) x 1 &x 2 &f(1, 0) x 1 &x 2 &f(0, 1) x 1 &x 2 &f(0, 0). Pastebėję, kad 0&x = 0, paliksime tik tuos narius, kai f( ) = 1. Suformuluokime Bulio funkcijos tobulosios normaliosios disjunkcinės formos konstravimo algoritmą (taisyklę). 1. Teisingumo lentelėje pasirenkame tas eilutes (kintamųjų x 1, x 2,..., x n realizacijas σ 1, σ 2,..., σ n ), kai funkcijos reikšmė lygi 1. 2. Rašome disjunkcine forma tiek taisyklingųjų elementariųjų konjunkcijų x σ1 1 &xσ2 2 &...&xσn n, kiek teisingumo lentelėje yra vienetų. 3. Neigimus rašome su tais kintamaisiais x j, kai σ j = 0. Pavyzdžiui, (x 0 1 &x0 2 &x1 3 &x1 4 ) = (x 1 &x 2 &x 3 &x 4 ). Pavyzdys. Užrašykime funkcijos, apibrėžtos jos teisingumo reikšmių lentele, disjunkcinę normaliąją formą. x 1 x 2 x 3 f(x 1, x 2, x 3 ) 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 1 1 0 0 1 1 1 0 Matome, kad nelygios nuliui tik trys funkcijos reikšmės: f(0, 0, 1), f(1, 0, 0) ir f(1, 0, 1). Todėl funkcijos disjunkcinė normalioji forma yra tokia: f(x 1, x 2, x 3 ) = x 1 x 2 x 3 x 1 x 2 x 3 x 1 x 2 x 3. Kiekviena (išskyrus const = 0) Bulio funkcija užrašoma disjunkcine normaliąja forma: f(x 1, x 2,..., x n ) = x σ1 1 xσ2 2 xσn n. f(σ 1,σ 2,...,σ n)=1 Dar kartą atkreipkime dėmesį į tai, kad formulėje yra visi kintamieji x 1, x 2,...,x n. Ši disjunkcinė forma yra vadinama tobuląja. Taikydami ekvivalenčiuosius loginius pertvarkius x xy = x(x y) = x, xy xy = x, x xy = x y, 11
bet kurią disjunkcinę normaliąją formą galima pertvarkyti į tobuląją. Pavyzdys. Pertvarkome reiškinį: xy x z = xyz xyz xyz x y z. Tobuloji konjunkcinė normalioji forma Panašiai disjunkcinei normaliajai formai Bulio funkcija išreiškiama tobuląja konjunkcine 1 normaliąja forma: f(σ 1,σ 2,...,σ n )=0 f(x 1, x 2,...,x n ) = ( ) x σ1 1 x σ2 2 x σn n. Suformuluokime Bulio funkcijos tobulosios normaliosios konjunkcinės formos konstravimo algoritmą (taisyklę). 1. Teisingumo lentelėje pasirenkame tas eilutes (kintamųjų x 1, x 2,..., x n realizacijas σ 1, σ 2,..., σ n ), kai funkcijos reikšmė lygi 0. 2. Rašome konjunkcine forma tiek taisyklingųjų elementariųjų disjunkcijų x σ1 1 x σ2 2... x σn n, kiek vienetų yra teisingumo lentelėje. 3. Neigimus rašome su tais kintamaisiais x j, kai σ j = 1. Pavyzdžiui, (x 0 1 x0 2 x 1 3 x1 4 ) = (x 1 x 2 x 3 x 4 ). Taigi lentelėje apibrėžtos funkcijos f(x 1, x 2, x 3 ) tobuloji konjunkcinė normalioji forma yra (x 1 x 2 x 3 )&(x 1 x 2 x 3 )&(x 1 x 2 x 3 )& (x 1 x 2 x 3 )&(x 1 x 2 x 3 ). Pilnosios funkcijų sistemos Bulio funkcijų (funkcijas dar vadiname operacijomis; pavyzdžiui, operacijomis & arba vadiname funkcijas f(x, y) = x & y arba g(x, y) = x y) sistema {f 1, f 2,..., f s,...} vadinama pilnąja, jei bet kurią Bulio funkciją f(x 1, x 2,...,x n ) galima išreikšti šios sistemos operacijomis (funkcijomis): f(x 1, x 2,..., x n ) = ( ( ) ) ) f j1 f j2 ( f j3 ( f jk (x i1,..., x im ). Kitaip sakant, pilnosios funkcijų (operacijų) sistemos operacijų pakanka bet kuriai Bulio funkcijai išreikšti. Pateiksime jau mums žinomų pilnųjų sistemų pavyzdžių. 1. Visų Bulio funkcijų aibė yra pilnoji sistema. 2. Funkcijų sistema {x 1, x 1 & x 2, x 1 x 2 } yra pilnoji. 3. Sistemos {x 1, x 1 & x 2 } ir {x 1, x 1 x 2 } yra pilnosios. 4. Sistemos {x 1 x 2 } ir {x 1 x 2 } yra pilnosios. 1 Čia konjunkcijos operacija pažymėta. 12
5. Sistema {0, 1} nėra pilnoji. Teorema. Tarkime, kad funkcijų sistema F = {f 1, f 2,...,f s,...} yra pilnoji ir kiekvieną funkciją f j galima išreikšti kitos sistemos G = {g 1, g 2,...,g n,...} funkcijomis. Tada sistema G irgi yra pilnoji. Pavyzdžiui, funkcijų sistema {x, x 1 & x 2 } yra pilnoji ir x 1 & x 2 = x 1 x 2 (de Morgano formulė). Todėl sistema {x, x 1 x 2 } irgi pilnoji. Uždarosios funkcijų klasės Tarkime, kad F = {f 1, f 2,...,f s,...} yra Bulio funkcijų sistema. Visų funkcijų, kurias galima išreikšti sudarytomis iš funkcijų f 1, f 2,... formulėmis, aibė vadinama klasės F uždariniu ir žymima [F]. Aibės [F] sudarymo veiksmą vadiname uždarymo operacija. Nekeičiančios nulio funkcijos Bulio funkciją f(x 1, x 2,..., x n ) vadiname nekeičiančia nulio, jei f(0, 0,...,0) = 0. Visų tokių (nekeičiančių nulio) funkcijų klasę (aibę) žymėsime T 0. Tarkime, kad f j T 0, t. y. f j (0, 0,...,0) = 0. Tada bet kuri sudėtinė funkcija F(x 1, x 2,..., x n ) = f j1 (f j2 (x i1, x i2, ), f j3 ( ), ) ir nekeičia nulio: F(0, 0,, 0) = f j1 (f j2 (0, 0,, 0), f j3 (0, 0,, 0), ) = f j1 (0, 0,, 0) = 0. Taigi klasė T 0 yra uždaroji: [T 0 ] = T 0. Nekeičiančios vieneto funkcijos Nekeičiančių vieneto Bulio funkcijų klasė apibrėžiama taip: T 1 = {f : f(1, 1,..., 1) = 1}. Pavyzdžiui, funkcijos f(x) = x, g(x, y) = x y, h(x, y) = x&y priklauso abiem klasėms, o funkcija w(x) = x nė vienai. Akivaizdu, kad [T 1 ] = T 1, t. y. klasė yra uždaroji. Savidualiųjų funkcijų klasė Savidualiųjų funkcijų klasę pažymėkime: T = {f : f(x 1, x 2,...,x n ) = f (x 1, x 2,..., x n )}. Šiai klasei priklauso, pavyzdžiui, funkcijos f(x) = x ir w(x) = x. Tarkime, kad funkcijos f, f 1, f 2,..., f m T. Taikydami funkcijai F(x 1, x 2,..., x n ) = f (f 1 (x 1,..., x n ),..., f m (x 1,...,x n )) 13
dualumo principą, gauname, kad F = f (f 1,..., f m) = f (f 1,..., f m ) = F. Taigi F T ir [T ] = T. Pastaba. Dviejų kintamųjų savidualiajai funkcijai f(x, y) galioja lygybės: f(0, 0) = f(1, 1), f(0, 1) = f(1, 0). Todėl savidualiosios funkcijos teisingumo lentelėje turi būti du nuliai ir du vienetai. Iš čia išplaukia, kad funkcijos &,,,, nėra savidualiosios. Pastebėkime, kad ši sąlyga yra būtina, bet nėra pakankama. Pavyzdžiui, ( ) = ir todėl funkcijos, irgi nėra savidualiosios. Monotoninės funkcijos Tarkime, kad α = (α 1, α 2,..., α n ), β = (β 1, β 2,...,β n ) yra du Bulio kintamųjų rinkiniai ir α β. Susitarkime rašyti kai (α 1, α 2,...,α n ) (β 1, β 2,...,β n ), α j β j ( j = 1, 2,...,n). Pavyzdys. Turime α 1 = β 1 = 0, α 2 = β 2 = 1, α 3 = β 3 = 1, α 4 = β 4 = 1, α 5 = β 5 = 0, α 6 = 0 < β 6 = 1, α 7 = 0 < β 7 = 1. Todėl (0, 1, 1, 1, 0, 0, 0) (0, 1, 1, 1, 0, 1, 1). Pastebėkime, kad ne visi Bulio kintamųjų rinkiniai α ir β išpildo kurią nors iš sąlygų α β arba β α. Pavyzdžiui, (0, 0) (0, 1) (1, 1), tačiau negalima rašyti (0, 1) (1, 0) arba (0, 1) (1, 0). Apibrėžkime monotoninių funkcijų klasę T = {f : α β f(α) f(β)}. Taigi vieno kintamojo funkcija f(x) yra monotoninė, kai f(0) f(1). Todėl funkcijos 0, 1 ir x yra monotoninės, o x nėra. Dviejų kintamųjų funkcija f(x, y) yra monotoninė, kai galioja visos (šešios) nelygybės: f(0, 0) f(0, 1) f(1, 1), f(0, 0) f(1, 0) f(1, 1). Gauname, kad funkcijos g(x, y) = x y ir h(x, y) = x & y yra monotoninės, o funkcijos x y, x y, x y, x y, x y nėra. Tiesinės funkcijos 14
Tiesinių funkcijų klasė apibrėžiama taip (Skliaustų nerašome, nes operacijos & prioritetas yra didesnis, negu operacijos.): T L = {f : f(x 1, x 2,..., x n ) = c 0 c 1 &x 1 c 2 &x 2 c n &x n }, čia c j {0, 1} yra tiesinio darinio koeficientai. Taigi Bulio funkcija vadinama tiesine, jei ją galima išreikšti tiesiniu dariniu. Funkcijos f(x) = x ir w(x) = x yra tiesinės: f(x) = x = 0 1&x, w(x) = x = x 1 = 1 1&x. Pavyzdys. Parodysime, kad funkcija g(x, y) = x y nėra tiesinė. Bandome išreikšti funkciją g(x, y) tiesinio darinio su neapibrėžtais koeficientais c 0, c 1, c 2 pavidalo: g(x, y) = x y = c 0 c 1 &x c 2 &y. Imdami Bulio kintamųjų x ir y reikšmes, gauname: g(0, 0) = 0 0 = 0 = c 0 c 1 &0 c 2 &0 = c 0, g(0, 1) = 0 1 = 1 = 0 c 1 &0 c 2 &1 = c 2, g(1, 0) = 1 0 = 1 = 0 c 1 &1 1&0 = c 1. Taigi visi koeficientai rasti: c 0 = 0, c 1 = 1, c 2 = 1 ir gauname g(x, y) = x y. Tačiau g(1, 1) = 1 1 = 1 1 1 = 0 ir todėl x y x y. Sistemos pilnumo būtinos ir pakankamos sąlygos Bet kuri Bulio funkcija išreiškiama disjunkcine arba konjunkcine normaliąja forma. Todėl funkcijų (rašome atitinkamas operacijas) sistema {, &, } yra pilnoji. Taikant de Morgano dėsnius, konjunkciją galima išreikšti neigimu bei disjunkcija, ir atvirkščiai. Taigi pilnosios yra ir šios sistemos: {, }, {, &}. Prisiminkime, kad žinome dar tris pilnąsias funkcijų sistemas: {, }, { }, { }. Teorema. Bulio funkcijų sistema F yra pilnoji tada ir tik tada, kai ji turi bent po vieną funkciją, nepriklausančią kiekvienai klasei T 0, T 1, T, T, T L, t. y. galima nurodyti bent vieną funkciją kuri nėra nekeičianti nulio, nėra nekeičianti vieneto ir t. t. Pavyzdys. Parodykime, kad sistema {0, 1, &, } yra pilnoji. Užpildome lentelę. T 0 T 1 T T T L 0 / / 1 / / & / / / / / Matome, kad klasei T 0 nepriklauso funkcija 1, klasei T 1 nepriklauso funkcijos 0 ir, visos sistemos {0, 1, &, } funkcijos nėra savidualiosios (/ T ), sistemoje yra (bent viena) funkcija ( ) nepriklausanti klasei T (funkcija nėra monotoninė) ir sistemoje yra netiesinė funkcija (& / T L ). Taigi teoremos sąlygos galioja ir todėl operacijų sistema {0, 1, &, } yra pilnoji. 15