Loogikaalgebra ( Boole'i algebra ) George Boole (85 864) Sündinud Inglismaal Lincolnis. 6-aastasena tegutses kooliõpetaja assistendina. Õppis 5 aastat iseseisvalt omal käel matemaatikat, keskendudes hiljem algebrale. 835 avas oma kooli. Uudse lähenemisega loogikale korrastas selle kaasaegseks loogikaalgebraks. Loogikaalgebra ( {, } ;,, ) koosneb loogikaväärtuste hulgast {, }, millel on defineeritud 3 elementaarset loogikatehet: unaarne tehe inversioon ja binaarsed tehted konjunktsioon ja disjunktsioon. Kõik 3 elementaarset loogikatehet on juba eelpool lausearvutuse juures defineeritud ja loogikaalgebras kehtivad nad täpselt samal kujul. Muutuja x või x i on loogikamuutuja, kui ta saab omandada väärtusi ainult hulgast { }. x i {.... x n } Numbrimärkidena ja esitatud loogikaväärtusi nimetatakse ka "konstant " ja "konstant ", et rõhutada nende erinevust muutujatest x i. Loogikaavaldis on loogikamuutujaid x i, konstante ja tehtemärke sisaldav kooslus, mis tema muutujate x i väärtustamisel omandab (loogikatehete teostamise järel) samuti loogikaväärtuse või. Loogikaavaldis sarnaneb lausearvutuses kasutatavale lausearvutusvalemile ning ta defineeritakse analoogiliselt: / definitsioon: \ loogikamuutuja x i ja konstandid on loogikaavaldised; kui A on loogikaavaldis, siis on avaldised ka A ja ( A ) kui A ja B on loogikaavaldised, siis on avaldised ka A B A B A B A B A B tehtemärgi puudumine operandide vahel on samaväärne tehtega ehk konjunktsiooniga : A B A B A B Eelnev definitsioon välistab loogikaavaldiste hulgast ebakorrektsed operandide ja tehtemärkide kooslused: A B A B A ( B konstantide korrutamisel (konjunktsioon) on siiski vaja ka tehtemärk äranäidata : kirjutis : ei esita arusaadaval viisil nulli ja ühe konjunktsiooni ; konstantide konjunktsioon sobib väljendada kujul : või Loogikaavaldis omandab / arvutab loogikaväärtuse või, kui tema loogikamuutujad väärtustada konkreetseteks väärtusteks ( ) ja teostada avaldise loogikatehted. Loogikatehete prioriteet Kui sulgudega pole tehete järjekord avaldises määratud teisiti, siis määrab tehete teostusjärjekorra loogikatehete prioriteedijärjestus : üksiku loogikamuutuja inversioon teostatakse avaldistes kõikjal esimesena. Nagu aritmeetikas, nii on ka loogikas korrutamine (konjunktsioon) prioriteetsem kui liitmine (disjunktsioon). Loogikaavaldiste võrdsus Kaks erinevat loogikaavaldist on võrdväärsed ehk loogiliselt võrdsed, kui nad mõlemad omandavad muutujate (kõikvõimalike) samade väärtuskombinatsioonide korral sama loogikaväärtuse või. teiste sõnadega: loogikaavaldised / loogikafunktsioonid on teineteisega loogiliselt võrdsed, kui nende tõeväärtustabelid on täpselt samasugused näide: x x 2 w x 2 = x w x x 2 Asendades siin muutujate x ja x 2 asemele mingid loogikaväärtused, väärtustuvad võrduse mõlema poole avaldised alati ühtemoodi -ks või ühtemoodi -ks. (kontrollida!) Kontrollida eelpoolsete avaldiste x x 2 w x 2 ja x w x x 2 loogilist võrdsust nende tõeväärtustabelite võrdlemise teel :
x x 2 w x 2 x w x x 2 (.... ehk loogikamuutuja iga üksik "eksemplar" avaldises ) eelvaadatud avaldises x w x x 2 on 2 loogikamuutujat : kuid 3 algtermi ; avaldises ( x 2 w x ) x 2 w x 2 sisaldub samuti 2 loogikamuutujat kuid 4 algtermi x x 2 w x 2 x w x x 2 Loogikaavaldised 2-muutuja loogikafunktsioonid f ( ) olulisi mõisteid : Loogikafunktsioon seab oma määramispiirkonna igale 2ndvektorile (ehk ühtede ja nullide "komplektile") vastavaks loogikaväärtuse või. näiteks: f ( ) = Kui 2ndvektor on loogikafunktsiooni argumendiks, siis sellist 2ndvektorit nimetame ka argumentvektoriks. de piirkonna moodustavad need argumentvektorid, mille korral funktsioon väärtustub -ks. de piirkonna moodustavad need argumentvektorid, mille korral funktsioon väärtustub -ks. eelistatuim avaldisekuju: Disjunktiivne Normaalkuju (DNK) -de piirkonnast saab välja kirjutada loogikafunktsioonile tema kõige eelistatuma avaldisekuju: disjunktiivse normaalkuju (DNK) algtermiks nimetatakse loogikaavaldise igat üksikut loogikamuutujat või selle inversiooni : x i x i elementaarkonjunktsioon on algtermide konjunktsioon järgneval real on 5 erinevat elementaarkonjunktsiooni : x 3 x 4 x x 2 x 4 x 2 x x 2 x 3 x 4 x x 3 x 5 disjunktiivne normaalkuju ( DNK ) on elementaarkonjunktsioonide disjunktsioon / näiteks: \ x 3 x 4 w x x 2 x 4 w x 2 Esitada igale järgnevale tõeväärtustabelile f e f t f k f n f v.... 3 erinevat sobivat loogikaavaldist: eristame funktsioone üksteisest suvaliste indeksitega : f e f t f k f n f v
f ( x 3 ) = ( x 3 x ) x 2 w ( x x 2 ) f e x x 2 x x 2 x x 2 f t x x 2 x x 2 x x 2 x x 2 f k x 2 x x x 2 x x 2 f n x 2 f v Arvutada tõeväärtustabel 3-muutuja loogikafunktsioonile: f ( x 3 ) = ( x 3 x ) x 2 w ( x x 2 ) x 3 f ( x 3 ) x 3 f ( x 3 ) Loogikaavaldiste duaalsus Loogikaavaldis omandab oma duaalse kuju, kui avaldise kõik konjunktsioonid asendada disjunktsiooniga avaldise kõik disjunktsioonid asendada konjunktsiooniga avaldise kõik konstandid asendada konstandiga avaldise kõik konstandid asendada konstandiga
(inversioone ei asendata duaalsele kujule üleminnes) Duaalsele kujule üleminnes tehete järjekord avaldises ei tohi muutuda (ehk duaalses kujus tuleb rakendada sulud) avaldise x x 2 w x 3 jaoks tema duaalne avaldis on : ( x w x 2 ) x 3 võrduse x x 2 w x 3 = jaoks tema duaalne võrdus on : ( x w x 2 ) x 3 = Kui duaalse avaldise jaoks leida v e e l k o r d duaalne avaldis, siis saadakse esialgne avaldis tagasi. Seega duaalsed avaldised ja võrdused on v a s t a s t i k k u duaalsed : "duaalsete avaldiste paar" "duaalsete võrduste paar" duaalsusprintsiip Loogikaavaldiste kohta kehtib duaalsusprintsiip : Kui 2 loogikaavaldist on võrdsed, siis on ka nende duaalsed avaldised omavahel võrdsed : A = B A B d A = B d Loogikaalgebra põhiseosed d d erinevad kuid VÕRDSED avaldised mõlemale leitud tema DUAALNE kuju ka duaalsed avaldisekujud on teineteisega VÕRDSED Duaalsusprintsiibist tulenevalt kehtivad kõik loogikaalgebra põhiseosed duaalsete paaridena. Loogikaalgebra põhiseosed esituvad kuni 3 loogikamuutuja abil, mida tähistame siin x y z. Neid muutujatähiseid on põhiseoste esitamisel kasutatud indeksite vältimiseks ehk nad on x 3 asemel Igaüks nendest on tegelikult loogikaväärtus või : x, y, z { } Järgnevad võrdused (põhiseosed) kehtivad olenemata sellest, kumba loogikaväärtuse ( või ) me nendes iga loogikamuutuja x y z asemele asendame. Põhiseoste kehtivus tuleneb elementaarsete loogikatehete definitsioonidest : x y konjunktsioon x y disjunktsioon x y L O O G I K A A L G E B R A P Õ H I S E O S E D _ eituse eitamise seadus : x = x /! tüüpiline viga : \ selles avaldises ei ole topeltinversiooni : seega x x 2 x x 2 x x 2... kuidas teame, et nad ei ole võrdsed
kui nad on võrdsed, siis peaks mõlemad avaldised väärtustuma samade muutujaväärtuste korral alati samamoodi : / x x 2 x x 2 x x 2 x x 2 seosed konstantidega ja : = = = w = x = x = x x x = x w = x x w = x w x = ( eelnevates põhiseostes on näha duaalsed paarid ) idempotentsus : x x = x x w x = x DeMorgani seadused : ( kahe muutuja jaoks ) x w y = x ȳ x y = x w ȳ DeMorgani seaduste modifikatsioon 3 muutuja jaoks: x w y w z = x ȳ z x y z = x w ȳ w z... kehtib suvalise arvu muutujate jaoks... vaatame veelkord eelmise tunni avaldisi, mida koostasime funktsioonide f e f k tõeväärtustabelitest : x x 2 x x 2 x x 2 x x 2 x x 2 x x 2 x x 2 f e f t f k x 2 x x x 2 x x 2 f n x 2 f v ilmneb, et mõlemad pika inversiooniga (kolmandad) avaldised teisenduvad DeMorgan'i seaduse kaudu avaldisteks, mis saime eelnevalt (teisena). Seega osutuvad eelnevad värvidega esiletoodud avaldised võrdseteks ka DeMorgan'i seaduse toel. neeldumine : neeldumine : x w x y = x ("lihtsam" neeldumisseadus) x w x y = x w y ("keerulisem" neeldumisseadus)
.... meenutame eelmisel tunnil vaadatud teineteisega võrdseid avaldisi : pane tähele: x w x y = x ( w y ) on korrektne teisendussamm, kuna sulgude lahtikorrutamisel x ( w y ) tekkib taas avaldis x w x y x x 2 w x 2 x w x x 2 distributiivsus : (sulgude nn. "lahtikorrutamine" ja "lahtiliitmine) x ( y w z ) = x y w x z x w ( y z ) = ( x w y ) ( x w z ) kleepimine : (ebaolulise muutuja / avaldiseliikme lisamine) x = x y w x ȳ x = ( x w y ) ( x w ȳ ) Neeldumisseaduste olemus Lisame veel ühe märkuse neeldumisseadusele x w x y = x w y Selle reegli verbaalseks esituseks sobiks: "disjunktsiooni ühele poolele võib juurde korrutada teise poole inversiooni (avaldise väärtust sellega muutmata)". Seega kehtivad võrdused: x w y = x w y x ning samuti x w y = x ȳ w y ehk x w x y = x w y = x ȳ w y Neeldumise x w x y = x kehtivust kinnitab ka teisendus, kus ühine tegur x tuuakse võrduse vasakus pooles sulgude ette, misjuhul sulgudesse jääb konstant : x w x y =.... x w x y = x ( w y ) = x ( ) = x Neeldumisvõrduste x w x y = x w y ja x ȳ w y = x w y kehtivus on tõestatav ka nende võrduste parema poole avaldise teisendamise teel vasaku poole avaldiseks. Arvestades, et x w x = saame distributiivsusseaduse (sulgude lahtikorrutamise) abil ja neeldumise x w x y = x abil teisendada: x w y = ( x w y ) = ( x w y ) ( x w x ) = = x x w y x w x x w y x = = x w x y w w y x = x w x y Seega saime: x w y =........ = x w x y Rõhutame, et eelnevad tähised x y z esitavad mitte ainult üksikuid loogikamuutujaid, vaid x y z asemel võivad olla ka keeruka(ma)d loogikaavaldised, kuna ka avaldised arvutuvad / asenduvad loogikaväärtusteks või. neeldumisseadusest x w x y = x tuleneb, et neeldumine toimub ka näiteks avaldises x x 2 x 3 w x x 2 x 3 x 4 x 5 : x x 2 x 3 w x x 2 x 3 x 4 x 5 = ( x x 2 x 3 ) w ( x x 2 x 3 ) [ x 4 x 5 ] = x x 2 x 3 eelnevad põhiseosed sisaldasid ainult elementaarseid loogikatehteid... aga miks ei olnud põhiseoste hulgas duaalseid neeldumisseadusi tõepoolest duaalsed neeldumisseadused oleks : x w x y = x jaoks duaalne : x ( x w y ) = x
x w x y = x w y jaoks duaalne : x ( x w y ) = x y x x 2 = x w x 2 mõlema neeldumise duaalsed kujud osutuvad teisenduste jaoks mittevajalikeks, kuna sulgude lahtikorrutamine (võrduse vasaku poole avaldises) annab otsekohe sellesama tulemuse, mida duaalse neeldumisseaduse parema poole avaldis näitab. Loogikatehete asendusseosed Asendusseosed asendavad mitteelementaarseid loogikatehteid implikatsioon: ekvivalents: summa mooduliga 2: ( ka "välistav VÕI" XOR ) ( see tehe on käsitletud edaspidi )...elementaarsete loogikatehete (inversioon, disjunktsioon, konjunktsioon) kaudu: implikatsiooni asendusseos : x y = x w y ( kontrollida tõeväärtustabelite võrdlemise teel! )... aga kuidas saaksime implikatsiooni asendusseose tuletada implikatsiooni tõeväärtustabelist meenutuseks implikatsiooni tõeväärtustabel : x x 2 inversioon konjunktsioon disjunktsioon implikatsioon x x 2 ekvivalents sarnaselt eelmise tunni ülesandega pöörates tähelepanu de piirkonnale ja vaadates tõeväärtustabeli kahte rida korraga, saame üldistada: implikatsioon on väärtusega siis, kui x = või kui x 2 =... mis viibki DNK-avaldiseni : ekvivalentsi asendusseosed : meenutame : ekvivalentsi korral on mõlemad tema operandid samaaegselt teineteise eelduseks ja järelduseks : x y = ( x y ) ( y x ) eelnev võrdus ongi kasutatav ekvivalentsi ühe võimaliku asendusseosena; Püüa tuletada ekvivalentsi jaoks veel üks asendusseos, teisendades edasi avaldist : x y = ( x y ) ( y x ) =....... kasutades implikatsiooni eelpoolset asendusseost : x y = x w y.... ja sulgude järgnevat lahtikorrutamist. asendades mõlemad implikatsioonid tema asendusseosega x y = x w y... saaksime teisendada : x y = ( x y ) ( y x ) = ( x w y ) ( ȳ w x ) = = x ȳ w y ȳ w x x w y x = = x ȳ w x y... seega oleks ekvivalentsi eelistatuim asendusseos (kohe DNK-kujule) : x y = x ȳ w x y
... aga kuidas saaksime ekvivalentsi asendusseose tuletada ekvivalentsi tõeväärtustabelist meenutuseks ekvivalentsi tõeväärtustabel : x x 2 inversioon konjunktsioon disjunktsioon implikatsioon ekvivalents x x 2 meenutame eelmisel tunnil vaadeldud 2-muutujaga tõeväärtustabeleid ja neile koostatud avaldisi, kus f t oligi juhtumisi ekvivalents : f t jaoks eelmisel tunnil koostatud DNK ongi ekvivalentsi asendusseos : f e x x 2 x x 2 x x 2 f t x x 2 x x 2 x x 2 x x 2 f k x 2 x x x 2 x x 2 f n x 2 f v loogikatehte "summa mooduliga 2" asendusseos : ( käsitleme edaspidi ) x y = x y w x ȳ Loogikaavaldiste teisendamine Loogikaavaldiste teisendamine on nende viimine muule samaväärsele (lihtsamale) kujule. Loogikaavaldisi teisendatakse loogikaalgebra põhiseoseid ja loogikatehete asendusseoseid rakendades. loogikaavaldiste teisendamisel kasutatavate kõikide reeglite KOKKUVÕTE x = x = x x x = x w = x x w = x w x = x x = x x w x = x x w y = x ȳ x y = x w ȳ x w x y = x x w x y = x w y x ( y w z ) = x y w x z x w ( y z ) = ( x w y ) ( x w z ) x = x y w x ȳ x = ( x w y ) ( x w ȳ ) x y = x w y x y = x y w x ȳ x y = x ȳ w x y Lihtsusta loogikaavaldised (loogikaalgebra põhiseoste ja asendusseoste abil) x x 2 w x x 3 w x 2 =... H. Lensen M. Kruus