Dr. Željko Jurić: Diskretna matematika Radna skripta za kurs “Diskretna matematika” na Elektrotehničkom fakultetu u Sarajevu Materijal izvađen iz udžbenika “Diskretna matematika za studente tehničkih nauka”
Predavanje 2. (akademska godina 2012/13)
Predavanje 2 Standardni oblici logičkih izraza Interesantno je da se svaki logički izraz primjenom zakona iskazne algebre može svesti na neke karakteristične oblike, koji imaju vrlo jednostavnu i pravilnu strukturu. Da bismo to pokazali, moramo prvo uvesti nekoliko pojmova. Na prvom mjestu ćemo uvesti pojmove literala, elementarne konjunkcije i elementarne disjunkcije. Pod literalom podrazumijevamo bilo koju logičku promjenljivu ili njenu negaciju. Izraz koji je ili literal, ili predstavlja konjunkciju više literala u kojoj se niti jedna promjenljiva ne pojavljuje više od jedanput (npr. ACD) naziva se elementarna kojnunkcija. Slično, izraz koji je ili literal, ili predstavlja disjunkciju više literala u kojoj se niti jedna promjenljiva ne javlja više od jedanput (npr. A ∨ B ∨ D) naziva se elementarna disjunkcija ili klauza. Pored toga, logička konstanta “ T ” tretira se kao elementarna konjunkcija sa 0 literala, a logička konstanta “⊥” kao elementarna disjunkcija sa 0 literala. Izraz koji ima oblik disjunkcije više prostijih izraza (npr. B ∨ AC ) naziva se disjunktivna forma. Ukoliko je svaki od tih izraza elementarna konjunkcija (npr. A ∨ BC ∨ BC) tada govorimo o disjunktivnoj normalnoj formi (DNF). Slično, izraz koji ima oblik konjunkcije više prostijih izraza (npr. ABC(B ∨ C)) naziva se konjunktivna forma, a ukoliko je svaki od tih izraza elementarna disjunkcija (npr. A(B ∨ C)(B ∨ C)), u pitanju je konjunktivna normalna forma (KNF). Pri tome, individualne elementarne konjunkcije smatraju se specijalnim slučajem disjunktivnih normalnih formi, a individualne elementarne disjunkcije smatraju se specijalnim slučajem konjunktivnih normalnih formi. Uvođenje ovakvih “degenerisanih” specijalnih slučajeva bitno pojednostavljuje formulaciju nekih tvrđenja koja slijede. Svaki logički izraz uvijek je moguće svesti bilo na disjunktivnu, bilo na konjunktivnu normalnu formu. Da bismo neki logički izraz sveli na disjunktivnu normalnu formu, prvo se trebamo osloboditi eventualng prisustva ekskluzivnih disjunkcija, implikacija i ekvivalencija, uz pomoć pravila X ∨ Y = XY ∨ XY, X ⇒ Y = X ∨ Y i X ⇔ Y = XY ∨ XY. Dalje je potrebno osloboditi se svih negacija složenih podizraza (uključujući i višestruke negacije) pomoću De Morganovih pravila (redoslijed kojim se vrši ovo oslobađanje ne mora biti jednoznačan), a zatim obaviti sve moguće konjunkcije koje se mogu obaviti prema pravilu distributivnosti konjunkcije prema disjunkciji. Na kraju se, pomoću trivijalnih pravila (poput zakona idempotentnosti ili konzistentnosti) oslobodimo eventualnog suvišnog pojavljivanja istih promjenljivih ili čitavih podizraza. Postupak svođenja na DNF ilustriraćemo na jednom primjeru. Primjer : Svesti logički izraz AB (A ∨ BC) ∨ AC BC na disjunktivnu normalnu formu. Svođenje ćemo provesti postupno, u skladu sa gore opisanim postupkom: AB (A ∨ BC) ∨ AC BC = AB (A ∨ BC) ∨ AC ∨ BC = AB (A ∨ BC) AC BC = = (AB ∨ (A ∨ BC)) AC BC = (A ∨ B ∨ A B C) (A ∨ C) (B ∨ C) = = (A ∨ B ∨ A (B ∨ C)) (A ∨ C) (B ∨ C) = (A ∨ B ∨ AB ∨ A C) (A B ∨ A C ∨ B C ∨ C) = = A A B ∨ B A B ∨ ABA B ∨ A C A B ∨ A A C ∨ B A C ∨ ABA C ∨ A C A C ∨ ∨ A B C ∨ B B C ∨ ABB C ∨ A C B C ∨ A C ∨ B C ∨ ABC ∨ A C C = = A B ∨ A B∨ ⊥ ∨ A B C ∨ A C ∨ A B C ∨ ABC ∨ A C ∨ ∨ A B C ∨ B C ∨ ⊥ ∨ A B C ∨ A C ∨ B C ∨ ABC ∨ A C = = A B ∨ A B C ∨ A C ∨ B C ∨ ABC = A B ∨ A C ∨ B C U ovom primjeru, već pretposljednji izraz predstavlja disjunktivnu normalnu formu. Međutim, mi smo izvršili dodatno skraćenje ove forme dvostrukom primjenom pravila apsorpcije za disjunkciju: A B ∨ A BC = A B ,
A C ∨ ABC = A C
1
Dr. Željko Jurić: Diskretna matematika Radna skripta za kurs “Diskretna matematika” na Elektrotehničkom fakultetu u Sarajevu Materijal izvađen iz udžbenika “Diskretna matematika za studente tehničkih nauka”
Predavanje 2. (akademska godina 2012/13)
Usput, iz izloženog vidimo da neki izraz može imati više različitih, međusobno ekvivalentnih DNF (isto vrijedi i za KNF). Prilikom nalaženja DNF, postupak se može osjetno skratiti ukoliko u toku postupka vršimo primjenu pravila sažimanja i apsorpcije kada se god za to ukaže mogućnost. Tako smo, na primjer, u prethodnom primjeru već u drugom redu mogli uočiti da na osnovu zakona apsorpcije slijedi da je A ∨ A BC = A
i na taj način bitno skratiti postupak. Svođenje logičkog izraza na konjunktivnu normalnu formu moguće je obaviti sličnim postupkom kao i svođenje na DNF, jedino je umjesto pravila distributivnosti konjunkcije prema disjunkciji potrebno koristiti pravilo distributivnosti disjunkcije prema konjunkciji. Međutim, za razliku od prvog pravila koje glasi X (Y ∨ Z) = XY ∨ XZ i koje se primjenjuje rutinski zbog činjenice da podsjeća na slično pravilo X (Y + Z) = XY + XZ iz elementarne matematike, primjena drugog pravila X ∨ YZ = (X ∨ Y) (X ∨ Z) zahtijeva povećanu koncentraciju, jer slično pravilo ne postoji u elementarnoj matematici. Stoga je, pri primjeni ovog pravila, veća vjerovatnoća da ćemo nešto previdjeti ili napraviti neku drugu grešku. Da bi se uklonile ove poteškoće, svođenje proizvoljnog logičkog izraza na KNF najčešće se obavlja indirektnim putem, odnosno postupkom dvostruke negacije. Tako, da bi se neki izraz sveo na KNF, najpraktičnije je prvo formirati njegovu negaciju, zatim tu negaciju svesti na DNF i na kraju negirati dobijeni rezultat korištenjem De Morganovih pravila. Suština postupka oslanja se na činjenicu da De Morganova pravila prevode disjunktivne normalne forme u konjunktivne normalne forme i obrnuto. Primjer : Svesti logički izraz A (B ∨ C D) ∨ B (C ∨ D) na konjunktivnu normalnu formu, prvo direktno, a zatim postupkom dvojne negacije. Direktno svođenje ovog izraza na KNF možemo obaviti višestrukom primjenom pravila distributivnosti X ∨ Y Z = (X ∨ Y) (X ∨ Z): A ( B ∨ C D ) ∨ B (C ∨ D ) = A ( B ∨ C ) ( B ∨ D ) ∨ B (C ∨ D ) =
= (A ( B ∨ C )( B ∨ D ) ∨ B) (A ( B ∨ C )( B ∨ D ) ∨ C ∨ D ) = = (A ∨ B) (B ∨ B ∨ C ) (B ∨ B ∨ D) (A ∨ C ∨ D) (B ∨ C ∨ C ∨ D )(B ∨ C ∨ D ∨ D) = = (A ∨ B) (A ∨ C ∨ D) Postupkom dvostruke negacije prvo ćemo naći DNF negacije traženog izraza:
A (B ∨ C D) ∨ B (C ∨ D) = A (B ∨ C D) B (C ∨ D) = (A ∨ B ∨ C D) (B ∨ C ∨ D) = = (A ∨ B C D) (B ∨ CD) = (A ∨ B (C ∨ D)) (B ∨ C D) = (A ∨ BC ∨ B D) (B ∨ C D) = = A B ∨ BBC ∨ BBD ∨ ACD ∨ BC CD ∨ BCDD = A B ∨ AC D Traženu KNF sada dobijamo negacijom dobijenog izraza: A ( B ∨ C D) ∨ B (C ∨ D) = A B ∨ A C D = A B A C D = (A ∨ B) (A ∨ C ∨ D)
Disjunktivna normalna forma u kojoj svaka elementarna konjunkcija sadrži iste promjenjive (npr. ABC ∨ ABC ∨ ABC ∨ A BC ) naziva se savršena disjunktivna normalna forma (SDNF), dok se konjunktivna normalna forma u kojoj svaka elementarna disjunkcija sadrži iste promjenljive (npr. (A ∨ B ∨ C)(A ∨ B ∨ C ) ) naziva se savršena konjunktivna normalna forma (SKNF). Elementarne konjunkcije koje čine SDNF nazivaju se minterme, dok se elementarne disjunkcije koje čine SKNF nazivaju maksterme.
U slučaju kada govorimo o savršenoj disjunktivnoj odnosno konjunktivnoj normalnoj formi nekog zadanog polaznog izraza, prećutno podrazumijevamo da pri tome sve minterme odnosno maksterme trebaju sadržavati one i samo one promjenljive koje su se javljale u polaznom izrazu. Recimo, neka
2
Dr. Željko Jurić: Diskretna matematika Radna skripta za kurs “Diskretna matematika” na Elektrotehničkom fakultetu u Sarajevu Materijal izvađen iz udžbenika “Diskretna matematika za studente tehničkih nauka”
Predavanje 2. (akademska godina 2012/13)
imamo izraz AB ∨ AB ∨ AC. Mada je lako provjeriti da je ovaj izraz ekvivalentan izrazu AC ∨ AC ∨ AC, on nije SDNF polaznog izraza, bez obzira što sve njegove elementarne konjunkcije sadrže iste promjenljive A i C. Naime, ovaj izraz ne sadrži promjenljivu B koja se javljala u polaznom izrazu (ispravna SDNF ovog izraza glasi ABC ∨ ABC ∨ ABC ∨ ABC ∨ ABC ∨ ABC). Svaka DNF može se lako svesti na SDNF tako da u svakom članu u kojem nedostaje neka od promjenljivih uvedemo nedostajuću promjenljivu pomoću razvoja X = X (Y ∨ Y) = XY ∨ XY. Ukoliko u nekom članu nedostaje više od jedne promjenljive, ovaj razvoj po potrebi primjenjujemo više puta sve dok ne uvedemo sve nedostajuće promjenljive. Postupak ponavljamo dok se svi članovi ne dovedu u oblik koji sadrži sve promjenljive. Na kraju se oslobodimo eventualnog suvišnog pojavljivanja istih članova koji mogu nastati kao posljedica provedene ekspanzije. Primjer : Svesti izraz A B ∨ B C ∨ A C u DNF obliku na SDNF oblik. Da bi ovaj izraz dobio oblik SDNF, u prvi član treba uvesti promjenljivu C, u drugi član promjenljvu A, a u treći član promjenljivu B, tako da imamo: A B ∨ B C ∨ A C = A B C ∨ A B C ∨ B C ∨ A C = A B C ∨ A B C ∨ AB C ∨ A B C ∨ A C =
= A B C ∨ A B C ∨ A B C ∨ A B C ∨ ABC ∨ A B C = A B C ∨ A B C ∨ A B C ∨ ABC Slično, svaka KNF se lako može svesti na SKNF primjenom razvoja X = X ∨ YY = (X ∨ Y)(X ∨ Y). Alternativno, i ovdje se može primijeniti postupak dvojne negacije.
Primjer : Svesti izraz (A ∨ B) ( A ∨ C ∨ D) u KNF obliku na SKNF oblik. U ovom slučaju, u prvom faktoru nedostaju promjenljive C i D, a u drugom faktoru promjenljiva B. Radi bolje preglednosti, promjenljive ćemo uvoditi postupno, jednu po jednu: (A ∨ B) (A ∨ C ∨ D) = (A ∨ B ∨ C) (A ∨ B ∨ C) (A ∨ C ∨ D) =
= ( A ∨ B ∨ C) ( A ∨ B ∨ C) ( A ∨ B ∨ C ∨ D ) ( A ∨ B ∨ C ∨ D ) = = ( A ∨ B ∨ C ∨ D ) ( A ∨ B ∨ C ∨ D ) ( A ∨ B ∨ C) ( A ∨ B ∨ C ∨ D ) ( A ∨ B ∨ C ∨ D ) = = ( A ∨ B ∨ C ∨ D ) ( A ∨ B ∨ C ∨ D ) ( A ∨ B ∨ C) ( A ∨ B ∨ C ∨ D ) = = ( A ∨ B ∨ C ∨ D) ( A ∨ B ∨ C ∨ D ) ( A ∨ B ∨ C ∨ D) ( A ∨ B ∨ C ∨ D) ( A ∨ B ∨ C ∨ D) Ovim smo formirali i traženu SKNF. Alternativno, možemo formirati negaciju ovog izraza, svesti je na SDNF, i negirati dobijeni izraz da dobijemo traženu SKNF: (A ∨ B) (A ∨ C ∨ D) = A ∨ B ∨ A ∨ C ∨ D = A B ∨ A C D = A BC ∨ A B C ∨ A BC D ∨ A B C D =
= A BC D ∨ A BC D ∨ A B C D ∨ A B C D ∨ A B C D ∨ A B C D = = A BC D ∨ A B C D ∨ A B C D ∨ A B C D ∨ A B C D (A ∨ B) (A ∨ C ∨ D) = A BC D ∨ A BC D ∨ A B C D ∨ A B C D ∨ A BC D =
= A BC D A BC D A B C D A B C D A BC D = = ( A ∨ B ∨ C ∨ D) ( A ∨ B ∨ C ∨ D ) ( A ∨ B ∨ C ∨ D) ( A ∨ B ∨ C ∨ D) ( A ∨ B ∨ C ∨ D) Kao što vidimo, dobili smo rezultat koji se od prethodnog rezultata razlikuje samo u poretku članova. Ovo nije slučajnost, jer se može dokazati da su SDNF i SKNF svakog logičkog izraza jedinstvene, u smislu da se dvije različite SDNF (ili SKNF) istog logičkog izraza mogu eventualno razlikovati samo u poretku članova. Odavde slijedi jedan sistematičan metod za ispitivanje da li su dva logička izraza ekvivalentna ili ne (bez korištenja tablica istine). Naime, oba izraza treba svesti na oblik SDNF ili SKNF. Tada, ukoliko su posmatrani izrazi ekvivalentni (i samo tada), dobijene SDNF odnosno SKNF mogu se eventualno razlikovati samo u poretku pojedinih članova. Nažalost, dužina postupka
3
Dr. Željko Jurić: Diskretna matematika Radna skripta za kurs “Diskretna matematika” na Elektrotehničkom fakultetu u Sarajevu Materijal izvađen iz udžbenika “Diskretna matematika za studente tehničkih nauka”
Predavanje 2. (akademska godina 2012/13)
svođenja nekog izraza na oblik SDNF ili SKNF u općem slučaju eksponencijalno raste sa porastom broja varijabli, tako da je efiksanost takvog metoda tipično loša.
Formiranje logičkog izraza na osnovu poznate tablice istine Oblici SDNF i SKNF nekog logičkog izraza naročito su pogodni ukoliko je potrebno na osnovu zadane tablice istine konstruisati logički izraz čija je tablica istine jednaka zadanoj. Ako uočimo da svaka minterma dobija vrijednost “ T ” samo za jednu kombinaciju promjenljivih (dakle, u samo jednom redu tablice istine), dok svaka maksterma dobija vrijednost “⊥” samo za jednu kombinaciju promjenljivih, veoma je lako dokazati sljedeća pravila (ona su, zapravo, gotovo očigledna): •
Da bismo formirali izraz u obliku SDNF koji odgovara zadanoj tablici istine, za svaki red tablice u kojem izraz uzima vrijednost “ T ” formiramo mintermu u kojoj one promjenljive koje u tom redu tablice imaju vrijednost “⊥” ulaze sa negacijom, a one koje imaju vrijednost “ T ” ulaze bez negacije. Tražena SDNF je disjunkcija svih takvih mintermi.
•
Da bismo formirali izraz u obliku SKNF koji odgovara zadanoj tablici istine, za svaki red tablice u kojem izraz uzima vrijednost “⊥” formiramo makstermu u kojoj one promjenljive koje u tom redu tablice imaju vrijednost “⊥” ulaze bez negacije, a one koje imaju vrijednost “ T ” ulaze sa negacijom. Tražena SKNF je konjunkcija svih takvih makstermi.
Opisani postupak je najlakše ilustrirati kroz konkretan primjer. Primjer : Odrediti nepoznati izraz I u obliku SDNF i SKNF, kojem odgovara sljedeća tablica istine: A ⊥ ⊥ ⊥ ⊥ T T T T
B ⊥ ⊥
C ⊥
I
T
T T
T T
⊥
⊥
T
⊥ ⊥
⊥
T T
⊥
⊥ ⊥
T
T
T
T T
Primjenom opisanih pravila neposredno nalazimo: I = A B C ∨ A BC ∨ A BC ∨ A B C ∨ A BC
/ SDNF /
I = (A ∨ B ∨ C) (A ∨ B ∨ C) (A ∨ B ∨ C)
/ SKNF /
Odavde slijedi da je za svaku tablicu istine uvijek moguće naći logički izraz koji generira tu tablicu istine, i to koristeći samo operacije negacije, konjunkcije i disjunkcije. Međutim, vrijedi napomenuti da ovaj postupak gotovo nikad ne daje najkraći izraz koji generira traženu tablicu istine. Na primjer, tablicu istine iz prethodnog primjera generiraju i izrazi BC ∨ BC ∨ AC, (B ∨ C)(A ∨ B ∨ C), BC ∨ B(A ∨ C) i (B⇔C) ∨ AC, od kojih je prvi u DNF formi, drugi u KNF formi, a treći i četvrti izraz predstavljaju disjunktivne forme koje nisu normalne. Svi ovi izrazi znatno su kraći od pronađenih izraza u SDNF odnosno SKNF formi.
Činjenica da neki izraz može imati više suštinski različitih DNF odnosno KNF dovodi do sljedećih definicija. Za neki logički izraz kaže se da je u minimalnoj disjunktivnoj normalnoj formi (MDNF) ukoliko ne postoji drugi ekvivalentni DNF oblik istog izraza koji sadrži manje literala od posmatranog izraza. Analogno se definira i minimalna konjunktivna normalna forma.
Quineov postupak nalaženja MDNF i MKNF
4
Dr. Željko Jurić: Diskretna matematika Radna skripta za kurs “Diskretna matematika” na Elektrotehničkom fakultetu u Sarajevu Materijal izvađen iz udžbenika “Diskretna matematika za studente tehničkih nauka”
Predavanje 2. (akademska godina 2012/13)
Odmah na početku, treba napomenuti da do danas nije pronađen sistematičan postupak koji omogućava da se izvrši potpuna minimizacija nekog logičkog izraza, odnosno da se pronađe apsolutno najjednostavniji logički izraz koji je ekvivalentan zadanom logičkom izrazu. S druge strane, W. V. Quine je otkrio sistematičan postupak za pronalaženje MDNF odnosno MKNF oblika proizvoljnog logičkog izraza. Ovaj postupak poznat je pod nazivom Quineov algoritam minimizacije logičkih izraza. Mada MDNF i MKNF oblici nisu nužno i najkraći oblici logičkih izraza, oni su tipično dosta blizu optimumu i često se za neke praktične aspekte digitalne tehnike smatraju pogodnijim od potpuno minimiziranog izraza (na primjer, digitalni sklopovi zasnovani na oblicima MDNF i MKNF optimalni su po pitanju brzine rada). Stoga se, u tom smislu, smatra da je problem minimizacije logičkih izraza u priličnoj mjeri danas riješen. U slučaju potrebe, često je moguće ručno izvršiti dodatnu optimizaciju dobijenih izraza u MDNF ili MKNF obliku (naravno, dobijeni izrazi više neće imati DNF odnosno KNF oblik), i tako ostvariti još neke uštede. Quineov algoritam odvija se u dvije etape. U prvoj etapi, traženi izraz se prvo prikazuje u SDNF formi. Zatim treba uočiti sve parove mintermi koje se mogu sažimati primjenom pravila XY ∨ XY = X. Polazni izraz jednak je disjunkciji svih rezultata takvih sažimanja, i onih mintermi koje nisu učestvovale niti u jednom sažimanju (ovu činjenicu je lako dokazati). Na novodobijeni izraz ponovo primjenjujemo isti postupak, i ponavljamo ga sve dok se ne može izvršiti niti jedno novo sažimanje. Ovim je prva etapa Quineovog algoritma završena. Ilustrirajmo ovo na primjeru logičkog izraza A B C D ∨ ABC D ∨ A B C D ∨ A BCD ∨ A BCD ∨ A B C D ∨ ABCD
Prvi član u ovom izrazu može se sažimati samo sa trećim članom (po promjenljivoj B) i kao rezultat tog sažimanja dobija se član ACD. Drugi član ne može se sažimati ni sa čim. Treći član može se sažimati (osim sa prvim članom, što je već obavljeno) sa petim (po promjenljivoj C) i šestim (po promjenljivoj D) članom, čime se kao rezultat sažimanja dobijaju članovi ABD i ABC. Četvrti član se, također, može sažimati sa petim i šestim članom, čime se dobijaju članovi ABC i ABD, ali se može sažimati i sa sedmim članom, čime se dobija član ACD. Ovim smo iscrpili sva sažimanja koja se mogu obaviti. Slijedi da je polazni izraz ekvivalentan sljedećem izrazu (drugi član koji se nije mogao sažimati ni sa čim je prosto prepisan): A C D ∨ A BC D ∨ A B D ∨ A B C ∨ A BC ∨ A BD ∨ ACD
U novodobivenom izrazu je ponovo moguće izvršiti neka sažimanja. Prvi i drugi član ne mogu se sažimati ni sa čim, ali se zato treći član može sažimati sa šestim, čime se dobija član AB. Isti rezultat dobija se i nakon sažimanja četvrtog i petog člana, čime su iscrpljena sva moguća sažimanja u ovom izrazu. Slijedi da se polazni izraz može predstaviti i u sljedećem obliku: A C D ∨ A BC D ∨ A B ∨ ACD
Ovim su iscrpljene sve mogućnosti sažimanja, čime je završena prva etapa Quineovog algoritma. Ova etapa je u potpunosti šablonizirana i nedvosmislena, tako da ne stvara nikakve principijelne poteškoće, osim što sam postupak može biti dugotrajan. Ipak, pri ručnom radu veoma je lako previdjeti neki par članova koji se mogu sažimati. Pokažimo stoga na primjeru istog polaznog izraza kako je moguće obaviti prvu etapu Quineovog algoritma na znatno sistematičniji način, pomoću kojeg se smanjuje mogućnost da napravimo grešku. Na početku, prvo razvrstamo sve članove u polaznoj SDNF u klase po broju negacija: 0 negacija: 1 negacija: 2 negacije: 3 negacije: 4 negacije:
ABCD ABCD ABC D , AB C D , ABCD , AB C D AB C D nema
Razumije se da se mogu sažimati samo članovi iz klasa čiji se broj negacija razlikuje za 1, recimo iz klase sa i negacija i klase sa i+1 negacija, a kao rezultat se dobija član koji sadrži i negacija. Također, bilo koji član iz i-te klase može se sažimati samo sa onim članovima iz i+1-ve klase koji sadrže iste one
5
Dr. Željko Jurić: Diskretna matematika Radna skripta za kurs “Diskretna matematika” na Elektrotehničkom fakultetu u Sarajevu Materijal izvađen iz udžbenika “Diskretna matematika za studente tehničkih nauka”
Predavanje 2. (akademska godina 2012/13)
negacije kao i razmatrani član iz i-te klase, što se lako uočava. Rezultate sažimanja možemo odmah sortirati po klasama onako kako ih nalazimo (pri tome ćemo imati jednu klasu manje): 0 negacija: 1 negacija: 2 negacije: 3 negacije:
ACD A B C , AB D A C D , AB D , AB C nema
U sljedećem koraku se ponovo mogu sažimati samo parovi iz istih klasa, pod istim uvjetima kao i u prethodnom slučaju, uz dodatni uvjet da se mogu sažimati samo članovi koji se sastoje od istih promjenljivih. Rezultate sažimanja ponovo razvrstavamo po klasama: 0 negacija: 1 negacija: 2 negacije:
nema AB nema
Jasno je da dalja sažimanja nisu moguća. Polazni izraz sada je ekvivalentan disjunkciji svih članova koji nisu učestvovali u daljim sažimanjima. Da bismo lakše uvidjeli koji su članovi učestvovali u sažimanjima a koji ne, potrebno je nakon svakog obavljenog sažimanja na neki način označiti učesnike u sažimanju, recimo podcrtavanjem učesnika u sažimanju nakon svakog obavljenog sažimanja. Kao rezultat prve etape Quineovog algoritma dobija se disjunktivna normalna forma koja ima osobinu da se niti iz jedne elementarne konjunkcije od kojih se ona sastoji ne može odstraniti niti jedan literal, a da se vrijednost izraza ne promijeni. Takva disjunktivna normalna forma naziva se skraćena disjunktivna normalna forma (ovo ime nije baš najsretnije odabrano, s obzirom da postoje situacije u kojima skraćena disjunktivna normalna forma sadrži više literala čak i od savršene disjunktivne normalne forme). Skraćena DNF je tijesno povezana sa pojmom implikante (umjesto izraza implikanta susreće se i naziv preduvjet). Pod implikantom (preduvjetom) nekog izraza F podrazumijeva se svaki izraz ϕ za koji vrijedi ϕ╞ F, odnosno svaki izraz ϕ za koji vrijedi da je izraz F njegova logička posljedica, tako da je implikacija ϕ ⇒ F tautologija (lako se pokazuje da je ovaj uvjet ekvivalentan sa uvjetom F ∨ ϕ = F). U načelu, izraz ϕ je implikanta izraza F ukoliko ϕ dobija vrijednost “⊥” za sve vrijednosti promjenljivih za koje i izraz F dobija vrijednost “⊥”. Alternativno, ϕ je implikanta izraza F ukoliko za sve vrijednosti promjenljivih za koje ϕ uzima vrijednost “ T ”, izraz F također uzima vrijednost “ T ”. Iz definicije neposredno slijedi da je svaka elementarna konjunkcija neke DNF ujedno i njena implikanta. Međutim, neka DNF može imati i kraćih implikanti nego što su njene elementarne konjunkcije. Recimo, često se dešava da je neki dio neke elementarne konjunkcije i sam implikanta. Stoga se za neku implikantu ϕ nekog izraza F kaže da je prosta implikanta ukoliko niti jedan njen dio nije i sam implikanta izraza F. Veoma je lako pokazati da sve elementarne konjunkcije koje čine neku MDNF moraju biti proste implikante. Naime, kada neka elementarna konjunkcija ϕ nekog izraza F u obliku MDNF ne bi bila prosta implikanta, tada bi se ona mogla apsorbovati u neku drugu kraću implikantu ϕ1, pa bi, ukoliko primijenimo jednakost F = F ∨ ϕ1, nakon apsorpcije ϕ ∨ ϕ1 = ϕ dobili novi izraz koji je ekvivalentan izrazu F, a kraći je od njega, što je u protivriječnosti sa pretpostavkom da izraz F ima oblik MDNF. Također je lako pokazati da je disjunkcija svih prostih implikanti nekog izraza F ekvivalentna polaznom izrazu. Naime, svaka prosta implikanta je ili minterma ili neki njen dio, tako da će razvoj disjunkcije svih prostih implikanti u savršenu disjunktivnu formu dati upravo SDNF polaznog izraza. Quineova teorema tvrdi da skraćena DNF nekog izraza nije ništa drugo nego disjunkcija svih njegovih prostih implikanti. Drugim riječima, sve elementarne konjunkcije od kojih se sastoji skraćena DNF nekog izraza F su njegove proste implikante, a pored toga, izraz F nema drugih prostih implikanti osim elementarnih konjunkcija od kojih se sastoji njegova skraćena DNF. Bitno je naglasiti da skraćena DNF, koja se dobija kao rezultat nakon prve etape Quineovog algoritma, ne mora biti MDNF. Naime, mada sve elementarne konjunkcije od kojih se sastoji MDNF moraju biti proste implikante, MDNF se ne mora sastojati od svih prostih implikanti (a skraćena DNF je disjunkcija svih prostih implikanti). Stoga se može desiti da u skraćenoj DNF nekog izraza postoje
6
Dr. Željko Jurić: Diskretna matematika Radna skripta za kurs “Diskretna matematika” na Elektrotehničkom fakultetu u Sarajevu Materijal izvađen iz udžbenika “Diskretna matematika za studente tehničkih nauka”
Predavanje 2. (akademska godina 2012/13)
članovi koji se mogu potpuno izbaciti, a da se vrijednost izraza ne promijeni. Na primjer, primijenimo li prvu etapu Quineovog algoritma na izraz ABC ∨ ABC ∨ ABC ∨ ABC, dolazimo do izraza AB ∨ BC ∨ AC. Međutim, ovaj izraz ekvivalentan je izrazu AB ∨ AC, odnosno član BC je suvišan. Stoga, za neku DNF nekog izraza sastavljenu od njegovih prostih implikanti kažemo da je nesvodljiva ukoliko se iz nje ne može izbaciti niti jedan član a da se vrijednost izraza ne promijeni. Jasno je da MDNF mora biti nesvodljiva, jer u suprotnom ne bi bila minimalna. S druge strane, proizvoljna nesvodljiva DNF ne mora nužno biti minimalna, ali je jasno da najkraća od svih mogućih nesvodljivih DNF nekog izraza (kojih ima konačno mnogo) mora biti upravo njegova MDNF. Druga etapa Quineovog algoritma namijenjena je upravo nalaženju nesvodljivih DNF nekog izraza, među kojima se nalazi i tražena MDNF. Ovaj korak je mnogo delikatniji i nije ga lako u potpunosti formalizirati. U ovom koraku potrebno je izabrati što manji skup što kraćih članova iz dobijene skraćene DNF čija je disjunkcija ekvivalentna traženom izrazu. Najpregledniji način da se to uradi je formiranje tzv. tablice pokrivanja, čiji redovi odgovaraju nađenim članovima skraćene DNF nakon obavljene prve etape, a kolone mintermama polazne SDNF. U presjeku i-tog reda i j-te kolone upisuje se znak “+” ukoliko i-ti član predstavlja dio j-te minterme. Na primjer, sljedeća tablica predstavlja tablicu pokrivanja za prethodno nađeni izraz: ABC D AC D ABCD AB ACD
ABCD
+
AB C D
A BCD
A BC D
A B CD
+ +
+
+
ABCD
+ + +
+
Tablica pokrivanja omogućava da relativno lako odredimo koji se članovi mogu izbaciti. Naime, mi moramo izabrati članove čija disjunkcija daje izraz ekvivalentan polaznom, tj. koji je ekvivalentan disjunkciji svih mintermi. To ćemo uraditi tako da ćemo odabrati takav skup članova kod kojeg će u svakoj koloni tablice pokrivanja biti barem jedan znak “+”. U slučaju kada je broj članova veliki, ne postoji generalna sugestija kako odabrati najmanji takav skup, pa u takvim slučajevima pomaže samo intuicija ili metod isprobavanja različitih varijanti i izbor najbolje varijante. Ipak, u svakom slučaju, postupak treba započeti posmatranjem kolona u kojima se nalazi samo jedan znak “+”, kao što su prva, druga, peta, šesta i sedma kolona u navedenom primjeru. Odgovarajući članovi nazivaju se esencijalni članovi i njih svakako moramo zadržati. Tek kada razmotrimo sve esencijalne članove, prelazimo na razmatranje ostalih (neesencijalnih) članova i od njih biramo minimalan skup članova koji pokriva znacima “+” preostale kolone tablice pokrivanja. Ukoliko je ovo moguće uraditi na više različitih načina, to znači da postoji više različitih nesvodljivih DNF, a najkraća među njima predstavlja traženu MDNF. Ovu činjenicu nije teško dokazati, u šta se ovdje nećemo upuštati. U razmotrenom primjeru lako uviđamo da su svi nađeni članovi esencijalni. Naime, prvi član moramo zadržati, jer jedino on unosi znak “+” u prvu kolonu. Iz istog razloga moramo zadržati drugi, treći i četvrti član, jer jedino oni unose znakove “+” u drugu, petu, šestu i sedmu kolonu. Kao zaključak slijedi da se niti jedan član ne može izbaciti, odnosno da nađena skraćena DNF ujedno predstavlja i traženu MDNF. Quineov algoritam može se iskoristiti i za nalaženje minimalne konjunktivne normalne forme zadanog logičkog izraza. Za tu svrhu, prvo je potrebno u savršenoj disjunktivnoj normalnoj formi predstaviti negaciju zadanog logičkog izraza. To nije teško učiniti, s obzirom da se SDNF negacije nekog logičkog izraza sastoji od onih i samo onih mintermi koje se ne nalaze u SDNF samog izraza. Nakon toga se na tako formiranu SDNF primjenjuje Quineov algoritam, čime dobijamo MDNF negacije logičkog izraza. Na kraju, negacijom dobijene MDNF dobijamo MKNF polaznog izraza. Primijetimo da Quineov algoritam traži prethodno svođenje izraza na oblik SDNF. Ovo je naročito pogodno ukoliko je izraz čiju MDNF tražimo zadan tablicom istine (u suprotnom je potrebno razmatrani izraz ručno svesti na SDNF). Quineov algoritam ćemo detaljno ilustrirati na još jednom primjeru.
7
Dr. Željko Jurić: Diskretna matematika Radna skripta za kurs “Diskretna matematika” na Elektrotehničkom fakultetu u Sarajevu Materijal izvađen iz udžbenika “Diskretna matematika za studente tehničkih nauka”
Predavanje 2. (akademska godina 2012/13)
Primjer : Quineovim algoritmom naći izraze u obliku MDNF i MKNF, a koji odgovaraju sljedećoj tablici istine: A ⊥ ⊥ ⊥ ⊥ ⊥ ⊥ ⊥ ⊥ T T T T T T T T
B ⊥ ⊥ ⊥ ⊥
C ⊥ ⊥
D ⊥ T
T T
⊥
T T T T
⊥ ⊥
⊥
T T
⊥
⊥ ⊥ ⊥ ⊥
⊥ ⊥
⊥
T T T T
T T
T
⊥ T
⊥ ⊥
T
T T T
T T
⊥
⊥
T
⊥ ⊥
⊥
T T
T T
T
I ⊥ ⊥
T
⊥ T
⊥ T T
Početni korak je formiranje SDNF za dati izraz, što nije teško uraditi: A BC D ∨ ABC D ∨ ABCD ∨ A B C D ∨ A B C D ∨ A BCD ∨ ABC D ∨ ABCD ∨ ABCD Radi lakšeg pronalaženja članova koji se mogu sažimati, sve članove ćemo razvrstati u klase prema broju negacija, slično kao u prethodnom primjeru: 0 negacija: 1 negacija: 2 negacije: 3 negacije: 4 negacije:
ABCD ABCD , ABCD , ABCD AB C D , ABC D ABCD , AB C D , AB C D nema
Rezultate sažimanja ćemo ponovo razvrstavati u klase, tako da nakon prvog ciklusa sažimanja imamo sljedeću situaciju, pri čemu minterma ABCD nije učestvovala u sažimanju: 0 negacija: 1 negacija: 2 negacije: 3 negacije:
BCD , ACD , ABC ABD , ABD AB C , B C D , A C D nema
U ovom trenutku, dalja sažimanja nisu moguća, tako da je prva etapa Quineovog algoritma okončana. Skraćenu DNF obrazuju svi članovi dobijeni nakon drugog ciklusa sažimanja, kao i minterma ABCD koja nije učestvovala u prvom ciklusu sažimanja: A BC D ∨ BCD ∨ ACD ∨ ABC ∨ A BD ∨ ABD ∨ A B C ∨ BC D ∨ A C D Sada prelazimo na drugu etapu Quineovog algoritma, odnosno na formiranje tablice pokrivanja. U načelu, nema nikakve potrebe da eksplicitno ispisujemo skraćenu DNF, nego možemo odmah formirati tablicu prekrivanja na osnovu implikanti nađenih u toku prve etape Quineovog algoritma. Nađene proste implikante smo u tablici označili oznakama od I1 do I9 radi lakšeg snalaženja:
8
Dr. Željko Jurić: Diskretna matematika Radna skripta za kurs “Diskretna matematika” na Elektrotehničkom fakultetu u Sarajevu Materijal izvađen iz udžbenika “Diskretna matematika za studente tehničkih nauka”
Predavanje 2. (akademska godina 2012/13)
A BCD A BC D A BCD A B C D A B CD A BCD ABC D A BCD ABCD I1 = A BCD I2 = BCD I3 = ACD I4 = ABC I5 = A BD I6 = ABD I7 = A B C I8 = BC D I9 = A C D
+ + + + +
+ +
+
+ + +
+
+
+
+ +
+
Prvo je potrebno naći esencijalne članove, ako takvi postoje. Odmah vidimo da su članovi I1, I2 i I8 esencijalni tako da ih svakako moramo zadržati, jer bi njihovim izbacivanjem prva, druga odnosno treća kolona tablice pokrivanja ostale nepokrivene. Nakon nalaženja esencijalnih članova, potrebno je od preostalih članova (koji nisu esencijalni) izabrati što manji skup članova tako da budu pokrivene i preostale kolone tabele. Ovaj postupak nije uvijek jednostavan i često traži izvjesnu dozu domišljatosti. Pri ručnom radu (bez pomoći računara), najbolje je redove koji odgovaraju esencijalnim članovima, kao i kolone koje su već pokrivene esencijalnim članovima (kolone 1, 2, 3, 7 i 9) precrtati da nam ne odvlače nepotrebno pažnju. Tako dobijamo sljedeću tablicu: A B C D A B CD A BCD I3 = ACD I4 = ABC I5 = A BD I6 = ABD I7 = A B C I9 = A C D
ABCD
+ + +
+ +
+ +
+
Da bismo dobili nesvodljivu formu, nikada ne smijemo uzeti član koji pokriva kolone koje su već pokrivene drugim članovima. Postoji jedan jednostavan postupak koji uvijek garantira da ćemo pronaći nesvodljivu formu. Naime, možemo analizirati redom jedan po jedan član i eliminirati ga iz razmatranja ukoliko ustanovimo da on prekriva one redove koji su već pokriveni ostalim članovima. Na primjer, krenemo li od člana I3, vidimo da ga možemo eliminirati iz razmatranja, jer on ne pokriva niti jednu kolonu koja nije pokrivena ostalim članovima (konkretno, članom I5). Slično, možemo eliminirati član I4, s obzirom da jedina kolona koju on pokriva također pokriva i član I6. Nakon ovih eliminacija, član I5 ne smijemo izbaciti, jer bi u suprotnom treća kolona ostala nepokrivena. Također, ne smijemo izbaciti ni član I6, jer u suprotnom četvrta kolona ostaje nepokrivena. Sada, član I7 možemo izbaciti, jer on ne pokriva niti jednu kolonu koja nije pokrivena preostalim članovima I5, I6 i I9. Međutim, nakon njegovog izbacivanja, član I9 moramo zadržati, da pokrijemo prvu kolonu. Tako smo dobili nesvodljivu formu koju čine upravo članovi I5, I6 i I9. Izbacivanje članova smo mogli izvršiti i drugim poretkom, čime bismo mogli dobiti i druge nesvodljive forme. Za izraz iz ovog primjera moguće je pronaći čak šest nesvodljivih pokrivanja, koja su sva iste dužine (tri člana, svaki sa po tri promjenljive). To su, redom, pokrivanja sastavljena od trojki članova (I3, I4, I7), (I3, I6, I7), (I4, I5, I7), (I4, I5, I9), (I5, I6, I7) i (I5, I6, I9). Slijedi da su sve odgovarajuće nesvodljive forme ujedno i minimalne, tako da traženi izraz ima čak 6 različitih ekvivalentnih MDNF. Na primjer, uzmemo li članove I3, I4 i I7, dobijamo sljedeću MDNF (ne smijemo zaboraviti uključiti i esencijalne članove I1, I2 i I8): A BC D ∨ BCD ∨ BC D ∨ ACD ∨ ABC ∨ A B C
9
Dr. Željko Jurić: Diskretna matematika Radna skripta za kurs “Diskretna matematika” na Elektrotehničkom fakultetu u Sarajevu Materijal izvađen iz udžbenika “Diskretna matematika za studente tehničkih nauka”
Predavanje 2. (akademska godina 2012/13)
Interesantno je napomenuti da postoji i jedan čisto algebarski (mada najčešće izuzetno glomazan) postupak za nalaženje svih nesvodljivih pokrivanja, poznat pod nazivom Petrickov metod. Za tu svrhu, posmatramo sve članove dobijene nakon prve etape Quineovog algoritma kao neovisne promjenljive, i formiramo pomoćni izraz Φ u vidu konjunktivne forme, u kojoj je svaka elementarna disjunkcija formirana od članova koji pokrivaju po jedan red tablice pokrivanja. Konkretno, za prethodnu tablicu, izraz Φ glasi ovako: Φ = (I7 ∨ I9) (I5 ∨ I7) (I3 ∨ I5) (I4 ∨ I6) Zatim, izraz Φ treba prevesti u DNF oblik, primjenom pravila distribucije i apsorbovanja. U konkretnom primjeru, nakon nešto dužeg računa, dobija se Φ = I3 I4 I7 ∨ I3 I6 I7 ∨ I4 I5 I7 ∨ I4 I5 I9 ∨ I5 I6 I7 ∨ I5 I6 I9 Svaka elementarna konjunkcija u dobijenoj DNF odgovara jednom nesvodljivom pokrivanju, u šta se možemo lako uvjeriti. Valjanost ovog postupka nije teško dokazati. Da bismo našli MKNF traženog izraza, prvo treba naći SDNF negacije ovog izraza, što je lako uraditi direktno iz tablice istine, zamjenom uloge simbola “ T ” i “⊥” u koloni koja predstavlja vrijednosti izraza (primijetimo da se u SDNF negacije izraza nalaze one i samo one minterme koje se ne nalaze u SDNF polaznog izraza): A B C D ∨ A B C D ∨ A BCD ∨ A BC D ∨ A BCD ∨ A BCD ∨ ABC D
Razvrstajmo sve minterme u klase prema broju negacija: 0 negacija: 1 negacija: 2 negacije: 3 negacije: 4 negacije:
nema ABC D A BCD , ABCD , ABCD , A BC D A BCD A BCD
Nakon prvog ciklusa sažimanja dobijamo sljedeću situaciju, pri čemu se minterme ABCD i ABCD nisu sažimale ni sa čim: 0 negacija: 1 negacija: 2 negacije: 3 negacije:
nema BC D A BD , A CD A BC
Ovim su iscrpljene sve mogućnosti sažimanja, tako da nakon prve etape dolazimo do sljedećeg prikaza (ovo je prikaz negacije traženog izraza): A BCD ∨ A BCD ∨ BC D ∨ A B D ∨ A C D ∨ A B C Sada prelazimo na formiranje tablice prekrivanja: A B C D A B C D A BCD
A BC D
A BC D
ABC D
+
I1 = A BCD
+
I2 = A BCD +
I3 = BC D I4 = A BD
+
I5 = A C D
+
I6 = A B C
A BCD
+
+ +
+
10
+
Dr. Željko Jurić: Diskretna matematika Radna skripta za kurs “Diskretna matematika” na Elektrotehničkom fakultetu u Sarajevu Materijal izvađen iz udžbenika “Diskretna matematika za studente tehničkih nauka”
Predavanje 2. (akademska godina 2012/13)
Na osnovu tablice prekrivanja odmah vidimo da su članovi I1, I2, I3, I4 i I6 esencijalni. Međutim, ovih 5 članova ujedno prekrivaju sve kolone tablice prekrivanja, tako da član I5 možemo izbaciti. Na taj način dolazimo do jedinstvene nesvodljive disjunktivne normalne forme negacije traženog logičkog izraza, koja je, prema tome, ujedno i njegova MDNF: A BCD ∨ A BCD ∨ BC D ∨ A B D ∨ A B C Konačno, MKNF traženog izraza dobijamo negacijom dobijenog izraza: (A ∨ B ∨ C ∨ D) (A ∨ B ∨ C ∨ D) ( B ∨ C ∨ D) (A ∨ B ∨ D) (A ∨ B ∨ C)
Bitno je napomenuti da ne postoji nikakva sugestija koja apriori ukazuje kojim redoslijedom treba eliminirati suvišne članove da bi se dobila minimalna forma. Situacija može bitno ovisiti od poretka u kojem eliminiramo članove, a samim tim i od načina kako su članovi sortirani. Na primjer, uzmimo da smo dobili sljedeću tablicu prekrivanja prilikom minimizacije nekog logičkog izraza:
I1 = A C I2 = B C I3 = AB I4 = BC
A BC
A BC
+ +
+
A BC
AB C
A BC
ABC
+ +
+ +
+ +
I5 = A B I6 = AC
+ +
+
Eliminiramo li na početku član I1, vidimo da moramo zadržati članove I2 i I3. Ukoliko sada eliminiramo član I4, vidjećemo da možemo eliminirati član I5, a zadržati član I6, čime dobijamo nesvodljivu formu sastavljenu od članova I2, I3 i I6 (koja je, zapravo, i minimalna). Međutim, ukoliko nakon eliminacije člana I1 odmah eliminiramo član I6 (jer ni on ne pokriva ništa što nije pokriveno ostalim članovima), došli bismo do zaključka da moramo sačuvati sve preostale članove I2, I3, I4 i I5, čime bismo dobili nesvodljivu formu koja nije minimalna! Jedina garancija za dobijanje zaista minimalne forme je formiranje svih mogućih nesvodljivih pokrivanja i izbor najkraćeg od njih. Sva moguća nesvodljiva pokrivanja moguće je odrediti recimo pomoću maločas opisane algebarske metode. Na primjer, za prethodni primjer imamo:
Φ = (I1 ∨ I2) (I1 ∨ I3) (I3 ∨ I4) (I2 ∨ I5) (I5 ∨ I6) (I4 ∨ I6) = ... = = I1 I3 I5 I6 ∨ I1 I2 I4 I6 ∨ I2 I3 I4 I5 ∨ I1 I4 I5 ∨ I2 I3 I6 Odavde vidimo da postoji ukupno 5 nesvodljivih pokrivanja, od kojih nije teško odabrati najmanja pokrivanja – u ovom slučaju to su pokrivanja (I1, I4, I5) ili (I2, I3, I6). Međutim, kako u općem slučaju takvih pokrivanja može biti zaista veoma mnogo (pogotovo kada izraz zavisi od mnogo promjenljivih), koriste se izvjesni intuitivni postupci. Na primjer, dobra je ideja uvijek birati članove koje ćemo zadržati takvim redoslijedom tako da svaki novi član pokriva što je god moguće više do tada nepokrivenih kolona. Recimo, u gornjem primjeru, izaberemo li prvo član I1, sljedeći član koji bi trebalo uzeti je I4, jer on prekriva dvije nove kolone, dok članovi I2 i I3 pokrivaju samo jednu kolonu koja već nije prekrivena članom I1. Nakon izbora članova I1 i I4, izbor člana I5 koji pokriva preostale dvije kolone je očigledan, čime smo dobili minimalnu nesvodljivu formu, koju čine članovi I1, I4 i I5. Ipak, ni takva strategija ne mora uvijek garantirati optimalnost. Ovim je završen opis Quineovog algoritma za minimizaciju logičkih izraza. Ovaj algoritam je posve jasno formuliran i stoga je pogodan za programiranje na računaru. E. J. McCluskey je predložio modifikaciju ovog algoritma, poznatu pod nazivom Quine–McCluskeyjev algoritam, u kojem se u prvom koraku članovi koji se sažimaju na pogodan način numeriraju binarnim brojevima, čime se znatno dobija na preglednosti i olakšava implementacija algoritma prilikom programiranja na računaru (drugi korak, tj. traženje optimalnog pokrivanja, isti je kao kod običnog Quineovog algoritma). S obzirom da ovaj algoritam u suštini ne donosi ništa novo u odnosu na izvorni Quineov algoritam, osim olakšanog
11
Dr. Željko Jurić: Diskretna matematika Radna skripta za kurs “Diskretna matematika” na Elektrotehničkom fakultetu u Sarajevu Materijal izvađen iz udžbenika “Diskretna matematika za studente tehničkih nauka”
Predavanje 2. (akademska godina 2012/13)
predstavljanja članova u računarskom programu i nešto većoj preglednosti pri ručnom računanju (u smislu da se lakše uočavaju članovi koji se mogu sažimati), njegov opis nećemo navoditi. Quineov odnosno Quine–McCluskyjev algoritam je, pored tzv. Rothovog algoritma, jedan od najpodesnijih algoritama za minimizaciju logičkih izraza za programiranje na računaru. Međutim, svi spomenuti algoritmi su prilično glomazni i stoga nepodesni za ručni rad, tako da je već za npr. šest promjenljivih gotovo nemoguće ručno provesti cijeli postupak, a da se pri tome nigdje ne napravi greška. Pored toga, dužina postupka koji treba provesti eksponencijalno raste sa porastom broja promjenljivih (dodavanje svake nove promjenljive može produžiti postupak i do 4 puta). Naime, izraz koji zavisi od n promjenljivih očigledno može imati do 2n mintermi u savršenoj disjunktivnoj normalnoj formi, dok se može pokazati da broj prostih implikanti može ići do oko 3n/n. Slijedi da za izraz koji zavisi od 10 promjenljivih tabela pokrivanja može biti i formata recimo 5000 × 1000, što je prilično mnogo i za računar (o ručnom radu nema ni govora). Za slučaj izraza sa više od 15–20 promjenljivih, čak ni upotreba računara ne dolazi u obzir. Da bi se omogućila minimizacija izraza sa još većim brojem promjenljivih, razvijeni su i razni heuristički algoritmi, kao što je npr. Espresso algoritam (koji ovdje nećemo opisivati), koji može uspješno raditi i sa većim brojem promjenljivih, ali ne garantira pronalaženje optimalnog rješenja, već samo rješenja koje je “dovoljno dobro” (tj. koje nije “previše loše”). S druge strane, kako se u praktičnim situacijama uglavnom susreće potreba za minimizacijom izraza koje ovise od malog broja promjenljivih (recimo do 6), razvijene su i metode koje su znatno prilagođenije za ručni rad i koje znatno brže vode rješenju nego Quineov algoritam (mada se, u suštini, radi samo o prerušenim verzijama Quineovog algoritma). To su grafo-analitičke metode, zasnovane na predstavljanju logičkih izraza pomoću specijalnih tablica nazvanih Karnaughove mape ili Veitchovi dijagrami. Kako se radi o važnim inžinjerskim metodama, bitnim za logičko projektiranje digitalnih sistema, a koje izlaze izvan okvira ovog kursa, zainteresiranima su ove metode ponuđene u prilogu koji se nalazi uz ova predavanja (nije obavezno čitati).
Shefferova i Pierceova operacija U primjenama logike iskaza u digitalnoj tehnici od velikog su značaja dvije dodatne logičke operacije, koje se označavaju simbolima “↑ ” i “↓”, a koje se respektivno nazivaju Shefferova operacija i Pierceova operacija (ili operacija Lukasiewitza). Ove operacije su respektivno definirane kao negacija konjunkcije i negacija disjunkcije, odnosno def
def
X ↑ Y = XY ,
X↓Y = X∨Y
Napomenimo da se u literaturi Shefferova operacija često označava i simbolom “ | ”, tako da se umjesto X ↑ Y često piše samo X | Y. Međutim, ovdje nećemo koristiti tu simboliku, s obzirom da se simbol “ | ” često koristi i za druge svrhe, tako da postoji opasnost od zabune. Na primjer, u elementarnoj teoriji brojeva (koja je također grana diskretne matematike) simbol “ | ” označava relaciju “biti djelilac od”, dok se isti simbol u nekim programskim jezicima koristi za operaciju disjunkcije. Pored toga, simboli “↑ ” i “↓” posjeduju i vizualnu sličnost sa simbolima “∧” i “∨ ”, tako da je lako zapamtiti da su u pitanju operacije izvedene iz konjunkcije i disjunkcije. Već smo rekli da se svaki logički izraz može izraziti preko operacija konjunkcije, disjunkcije i negacije. U suštini su dovoljne samo negacija i konjunkcija, jer se disjunkcija može izraziti preko ove dvije operacije korištenjem formule X∨Y = XY
Na sličan način zaključujemo da su dovoljne samo negacija i disjunkcija, jer vrijedi formula XY = X ∨ Y
Štaviše, svaki logički izraz može se zapravo izraziti pomoću jedne jedine operacije, i to bilo pomoću upravo definirane Shefferove operacije, bilo pomoću Pierceove operacije. Stoga se ove operacije
12
Dr. Željko Jurić: Diskretna matematika Radna skripta za kurs “Diskretna matematika” na Elektrotehničkom fakultetu u Sarajevu Materijal izvađen iz udžbenika “Diskretna matematika za studente tehničkih nauka”
Predavanje 2. (akademska godina 2012/13)
nazivaju univerzalne logičke operacije. Da bi dokazali ovu tvrdnju, dovoljno je pokazati da se konjunkcija, disjunkcija i negacija mogu izraziti preko Shefferove ili Pierceove operacije. I zaista, vrijede sljedeća pravila (zagrade su neophodne, s obzirom da ove operacije nisu asocijativne): X = X X = X ↑X
X ∨ Y = X Y = X ↑ Y = (X ↑X)↑(Y ↑Y) X Y = X Y = X ↑ Y = (X ↑Y)↑(X ↑Y) X = X ∨ X = X ↓X
X ∨ Y = X ∨ Y = X ↓ Y = (X ↓Y) ↓ (X ↓Y) X Y = X ∨ Y = X ↓ Y = (X ↓X) ↓ (Y ↓Y) Ova činjenica ima naročit značaj u digitalnoj tehnici, jer omogućava da se svaki logički digitalni sklop može realizirati uz pomoć samo jednog tipa elementarnog logičkog sklopa (tzv. logičkog kola). Naime, pri proizvodnji integriranih kola (čipova), tehnološki je povoljnije imati veći broj logičkih sklopova istog tipa nego manji broj logičkih sklopova različitog tipa. Svođenje proizvoljnog izraza na oblik u kojem se javljaju samo Shefferova ili Pierceova operacija u načelu se može obaviti direktnom primjenom gore prikazanih formula, ali na taj način se dobijaju mnogo glomazniji izrazi nego što bi mogli biti. Stoga se za tu svrhu koriste prikladniji postupci. Da bismo neki izraz izrazili samo pomoću Shefferove operacije, najbolje je krenuti od njegove MDNF i izvršiti njenu dvostruku negaciju. Na unutrašnju negaciju tada treba primijeniti De Morganova pravila, nakon čega se tražena realizacija pomoću Shefferove operacije jednostavno očitava. Da bismo izrazili isti izraz samo pomoću Pierceove operacije, postupamo analogno, samo polazimo od MKNF umjesto od MDNF. Postupak je najbolje ilustrirati na konkretnom primjeru.
Primjer : Predstaviti logički izraz ABC ∨ AC ∨ BD ∨ AC D ∨ C samo pomoću Shefferove operacije, i samo pomoću Piercove operacije. Za izražavanje preko Shefferove operacije, najpogodnije je poći od MDNF datog izraza. MDNF ovog izraza možemo naći, recimo pomoću Quineovog algoritma (uradite to sami) i on glasi: AD ∨ BD ∨ C
Primjenom dvostruke negacije i elementarnih transformacija dobijamo: AD ∨ BD ∨ C = A D ∨ BD ∨ C = AD BDC = (A ↑(D ↑D)) ↑(B ↑D) ↑(C ↑C)
Za izražavanje preko Pierceove operacije, prvo nam je potrebna MKNF ovog izraza, koja glasi (provjerite): ( B ∨ C ∨ D) ( A ∨ C ∨ D)
Primjenom dvostruke negacije i elementarnih transformacija dobijamo: (B ∨ C ∨ D) (A ∨ C ∨ D) = (B ∨ C ∨ D) (A ∨ C ∨ D) = B ∨ C ∨ D ∨ A ∨ C ∨ D =
= (B ↓C ↓(D ↓D)) ↓(A ↓C ↓D) Ponekad se dešava da je MDNF mnogo kraća od MKNF za isti izraz, ili obratno. Zbog toga su razvijeni postupci da se iz MDNF dobije realizacija pomoću Pierceove operacije, odnosno iz MKNF realizacija pomoću Shefferove operacije. Ideja postupka je da prvo negiramo izraz, zatim da realiziramo njegovu negaciju i na kraju da negiramo rezultat.
13
Dr. Željko Jurić: Diskretna matematika Radna skripta za kurs “Diskretna matematika” na Elektrotehničkom fakultetu u Sarajevu Materijal izvađen iz udžbenika “Diskretna matematika za studente tehničkih nauka”
Predavanje 2. (akademska godina 2012/13)
Primjer : Predstaviti logički izraz A D ∨ BD ∨ C pomoću Pierceove operacije, bez njegovog prethodnog svođenja na MKNF. Ukoliko negiramo ovaj izraz, a zatim na dobijenu negaciju primijenimo elementarne transformacije, možemo pisati:
A D ∨ BD ∨ C = A D BD C = (A ∨ D) (B ∨ D) C = (A ∨ D) (B ∨ D) C =
= A ∨ D ∨ B ∨ D ∨ C = ((A ↓A) ↓D) ↓((B ↓B) ↓(D ↓D)) ↓C Da bismo dobili realizaciju polaznog izraza preko Pierceove operacije, dovoljno je iskoristiti relaciju X = X ↓X, čime dobijamo izraz (((A ↓A) ↓D) ↓((B ↓B) ↓(D ↓D)) ↓C) ↓(((A ↓A) ↓D) ↓((B ↓B) ↓(D ↓D)) ↓C) Dobijeni izraz, doduše, jeste veoma glomazan, ali postoje brojne primjene u digitalnoj tehnici u kojima se upravo ovakva forma izraza pokazuje kao veoma pogodna. Naime, iako primjena posljednjeg koraka ovog postupka u kojem se negacija izraza X izražava kao X ↓X praktično udvostručuje dužinu izraza X, ovaj korak se pri praktičnoj realizaciji logičkih izraza u digitalnoj tehnici realizira upotrebom samo jednog logičkog kola.
Baze iskazne algebre Vidjeli smo da se svaki izraz logike iskaza može predstaviti koristeći samo operacije negacije, konjunkcije i disjunkcije, a da se po volji jedna od operacija konjunkcije ili disjunkcije (ali ne obje) može izostaviti, a da se zadrži mogućnost predstavljanja proizvoljnog izraza logike iskaza. Skupovi operacija, takvi da se pomoću njih može formirati proizvoljan izraz logike iskaza, nazivaju se baze iskazne algebre. Na primjer, jedna od baza iskazne algebre je skup {¬, ∧, ∨}. Baza iskazne algebre naziva se elementarna baza (ili prosta baza) ukoliko se niti jedna od operacija iz baze ne može izostaviti a da se zadrži mogućnost predstavljanja proizvoljnog izraza logike iskaza (ponegdje se u literaturi pod pojmom baze smatraju isključivo elementarne baze). Tako smo, na primjer, utvrdili da su skupovi {¬, ∧} i {¬, ∨} dvije moguće elementarne baze iskazne algebre. Dalje, kako smo vidjeli da se samo pomoću Shefferove ili samo pomoću Piercove operacije također može predstaviti svaki izraz logike iskaza, to su i jednočlani skupovi {↑} i {↓} također elementarne baze iskazne algebre. Postoji veliki broj elementarnih baza iskazne algebre, a ovdje ćemo navesti neke najinteresantnije. Operacije konjunkcije i ekskluzivne disjunkcije dovoljne su (bez negacije) za predstavljanje proizvoljnog izraza logike iskaza, ukoliko dozvolimo i upotrebu konstante “ T ” (koju možemo posmatrati i kao operaciju sa nula argumenata). Zaista, imamo X = X ∨ T,
X ∨ Y = X ∨Y ∨ XY
Odavde slijedi da skup {∧, ∨ , T } također čini jednu elementarnu bazu iskazne algebre, koja se naziva Žegalkinova baza. Na ovoj bazi zasniva se tzv. Žegalkinova algebra, sa kojom ćemo se informativno upoznati nešto kasnije. Interesantna je činjenica da je sama operacija implikacije dovoljna za predstavljanje proizvoljnog logičkog izraza, ukoliko dozvolimo i upotrebu konstante “⊥”, odnosno skup {⇒, ⊥} čini još jednu elementarnu bazu iskazne algebre. Zaista, imamo X = X⇒⊥
XY = (X ⇒ (Y ⇒ ⊥)) ⇒ ⊥
X ∨ Y = (X ⇒ ⊥) ⇒ Y
Odavde slijedi zanimljiva posljedica da je svaki izraz logike iskaza moguće zapisati u obliku u kojem se od operacija javlja samo implikacija (po cijenu da se dobije glomazan i posve nerazumljiv izraz). Na primjer, za izraz AB ∨ BC dobijamo (((A ⇒ (B ⇒ ⊥)) ⇒ ⊥) ⇒ ⊥) ⇒ (((B ⇒ ⊥) ⇒ (C ⇒ ⊥)) ⇒ ⊥)
14
Dr. Željko Jurić: Diskretna matematika Radna skripta za kurs “Diskretna matematika” na Elektrotehničkom fakultetu u Sarajevu Materijal izvađen iz udžbenika “Diskretna matematika za studente tehničkih nauka”
Predavanje 2. (akademska godina 2012/13)
Ovakva interpretacija logičkih izraza je interesantna sa aspekta proučavanja logike iskaza kao formalne teorije, s obzirom da postoje stanovišta da se cijela logika iskaza u osnovi zasniva na operaciji implikacije (koja formalizira proces donošenja zaključaka). S druge strane, posmatrano sa praktičnog aspekta, možemo primijetiti da je praktično nemoguće utvrditi kakvu logičku činjenicu iskazuje dobijeni izraz predstavljen samo pomoću operacije implikacije. Još jednu elementarnu bazu logike iskaza čini skup {⇒, ¬}, odnosno operacije implikacija i negacija. Ova baza se dosta koristi pri zasnivanju logike iskaza kao formalne teorije. Za vježbu sami pronađite kako se u ovoj bazi izražavaju operacije konjunkcije i disjunkcije (dobijaju se izrazi koji su znatno prostiji nego u bazi {⇒, ⊥}). Postoji opći rezultat koji iskazuje potrebne i dovoljne uvjete da bi izabrani skup operacija predstavljao bazu iskazne algebre, poznat kao Postova teorema o funkcionalnoj kompletnosti logičkih funkcija. Za izlaganje ovog rezultata, potrebno je uvesti nekoliko novih pojmova. Svakoj operaciji iskazne algebre možemo pridružiti njenu karakterističnu funkciju, čiji su argumenti i vrijednosti iz skupa {T, ⊥}. Takve funkcije nazivaju se logičke funkcije (zapravo se svakom izrazu iskazne algebre može pridružiti odgovarajuća logička funkcija). Na primjer, negaciji možemo pridružiti funkciju f jednog argumenta datu pravilima f (⊥) = T i f (T) = ⊥. Konjunkciji možemo pridružiti funkciju f dva argumenta datu pravilima f (⊥, ⊥) = f (⊥, T ) = f ( T , ⊥) = ⊥ i f ( T , T ) = T , itd. Sada, za neku logičku operaciju, čija je karakteristična funkcija f (x1, x2, ..., xn), kažemo: • • • • •
da zadržava neistinu ukoliko vrijedi f (⊥, ⊥, ... ⊥) = ⊥; da zadržava istinu ukoliko vrijedi f ( T, T, ... T) = T ; da je linearna ukoliko se može napisati u obliku f (x1, x2, ...xn) = a0 ∨ a1x1∨ ... anxn gdje su a0, a1, ... an neke konstante iz skupa {⊥, T }; da je samodualna ukoliko vrijedi f (x1, x2, ...xn) = f (x1, x2, ...xn); da je neopadajuća (ili monotona) ukoliko iz xi’ ≤ xi” slijedi f (x1, ...xi’, ...xn) ≤ f (x1, ...xi”, ...xn) za sve indekse i od 1 do n (pri čemu se smatra da vrijedi ⊥ < T ).
Nakon izlaganja ovih uvodnih pojmova, Postovu teoremu o funkcionalnoj kompletnosti logičkih funkcija možemo iskazati na sljedeći način: Da bi neki skup logičkih operacija predstavljao bazu iskazne algebre, potrebno je i dovoljno da se među njima nalazi barem jedna operacija koja ne zadržava neistinu, barem jedna operacija koja ne zadržava istinu, barem jedna operacija koja nije linearna, barem jedna operacija koja nije samodualna i barem jedna operacija koja nije neopadajuća. Na primjer, za slučaj klasičnog skupa logičkih operacija {¬, ∧, ∨}, konjunkcija zadržava neistinu i istinu i neopadajuća je, ali nije linearna i nije samodualna, dok je negacija linearna i samodualna, ali ne zadržava niti neistinu niti istinu i nije neopadajuća. Stoga su po Postovoj teoremi, konjunkcija i negacija dovoljne za predstavljanje proizvoljnog logičkog izraza. U slučaju Žegalkinove baze imamo konjunkciju (koja nije linearna niti samodualna, ali je neopadajuća i zadržava neistinu i istinu), kao i ekskluzivnu disjunkciju koja zadržava neistinu i linearna je, ali ne zadržava istinu, nije samodualna i nije neopadajuća. Očigledno nam za ispunjenje uvjeta Postove teoreme nedostaje operacija koja ne zadržava neistinu. Takva je očigledno “operacija” konstanta “ T ” (operacija sa nula argumenata), koja očigledno ne zadržava neistinu (mada je linearna, samodualna, neopadajuća i zadržava istinu). U slučaju Shefferove odnosno Pierceove operacije, svaka od njih ne zadržava niti neistinu niti istinu, nije linearna, nije samodualna i nije neopadajuća, tako da je po Postovoj teoremi svaka od njih sama za sebe dovoljna za prikaz proizvoljnog logičkog izraza. Što se tiče implikacije, ona ne zadržava neistinu, nije linearna, niti samodualna, niti neopadajuća, ali zadržava istinu, tako da nam je potrebna još neka operacija koja ne zadržava istinu. Za takvu operaciju možemo upotrijebiti recimo negaciju, ili trivijalnu operaciju izraženu konstantom “⊥”.
15