Pređi na sadržaj

Kvajn–Maklaskijev algoritam

S Vikipedije, slobodne enciklopedije

Kvajn–Maklaskijev algoritam (engl. Quine–McCluskey algorithm, metod prostih implikanata) je metod koji se koristi za minimalizaciju logičkih funkcija koji su otkrili Vilard Van Orman Kvajn i Edvard Dž. Maklaski 1956. godine.[1][2][3] Ovaj metod je vrlo funkcionalan, baš kao i karnoove karte, ali njegova tablična forma ga čini lakšim i praktičnijim za programiranje, takođe, daje i deterministički put pronalaženja minimalne forme koji upravo garantuje da je dobijena istinitosna funkcija minimalna. Zovu ga još i tablični metod.

Metod čine dva koraka:

  1. Pronalaženje prostih inplikanata funkcije.
  2. Koristi te proste implikante u tabeli prostih implikanata da pronađe samo bitne proste implikante funkcije, kao i druge proste implikante koji su potrebni da pokriju celu funkciju.

Kompleksnost[uredi | uredi izvor]

Iako praktičniji od karnovih karti, kada kao ulaz funkcija dobija više od četiri promennjive, Kvajn–Maklaskijev algoritam ima takođe ograničen spektar upotrebe, jer problem spada u NP-teške probleme: vreme izvršavanja Kvajn–Maklaskijevog algoritma raste eksponencijalno sa porastom promenljivih. Može se pokazati da je za funkciju od n promennjivih gornja granica broja primarnih implikanata 3n/n. Za n = 32 može biti preko 6.5 * 1015 prostih implikanata. Funkcije sa velikim brojem promenljivih moraju biti minimalizovane sa neoptimalnim heurističnim metodama, zapravo algoritam ESPRESSO je standard.[4]

Primer[uredi | uredi izvor]

Korak 1: pronalaženje prostih implikanata[uredi | uredi izvor]

Minimalizovaćemo jednu proizvoljnu funkciju:

Izraz naznačuje da će izlazna vrednost funkcije f biti 1 za ulazne vrednosti 4,8,10,11,12 i 15 (označene sa 'm'). Takođe, govori da nam izlazna vrednost ukoliko ulazni podaci odgovaraju decimalnim brojevima 9 i 14 nisu bitne. ('d' označava nebitne vrednosti).

A B C D f
m0 0 0 0 0 0
m1 0 0 0 1 0
m2 0 0 1 0 0
m3 0 0 1 1 0
m4 0 1 0 0 1
m5 0 1 0 1 0
m6 0 1 1 0 0
m7 0 1 1 1 0
m8 1 0 0 0 1
m9 1 0 0 1 x
m10 1 0 1 0 1
m11 1 0 1 1 1
m12 1 1 0 0 1
m13 1 1 0 1 0
m14 1 1 1 0 x
m15 1 1 1 1 1

Lako se može formirati izraz kanonskog zbira proizvoda iz ove tabele, upravo sumirajući kolone na kojima se kao izlazna vrednost dobija 1 (bez nebitnih vrednosti).

Ova funkcija nije minimalna. Da bi je optimizovali, potrebno je grupisati sve članove Funkcije, tako da svi članovi jedne grupe imaju isti broj cifara "1" u svojoj binarnoj predstavi. Nebitne vrednosti su takođe ubačene u tablu tako da se mogu kombinovati sa članovima funkcije.

Broj jedinica Min član Binarna reprezenzacija
1 m4 0100
m8 1000
2 m9 1001
m10 1010
m12 1100
3 m11 1011
m14 1110
4 m15 1111

U ovom trenutku možemo početi sa kombinovanjem članova funkcije sa drugim članovima. Ukoliko se dva člana razlikuju na tačno jednom mestu(u binarnom obliku) ta cifra biva zamenjena crticom '-', što implicira da ona nije bitna. Članovi koji više ne mogu biti kombinovane su označene sa '*'. Kada se prelazi sa kombinacija veličine dva, na kombinacije veličine četiri, smatrati '-' kao treću vrednost bitova. Primer: -110 i -100 ili -11- mogu biti kombinovane, međutim, -110 i 011- ne mogu. (Napomena: mesta na kojima se nalaze '-' moraju da se poklapaju.)

Broj jedinica Min člam 0-kocka veličina 2 implikanata veličina 4 implikanata
1 m4 0100 m(4,12) -100* m(8,9,10,11) 10--*
m8 1000 m(8,9) 100- m(8,10,12,14) 1--0*
-- -- -- m(8,10) 10-0 --
2 m9 1001 m(8,12) 1-00 m(10,11,14,15) 1-1-*
m10 1010 -- --
m12 1100 m(9,11) 10-1 --
-- -- -- m(10,11) 101- --
3 m11 1011 m(10,14) 1-10 --
m14 1110 m(12,14) 11-0 --
4 m15 1111 m(11,15) 1-11 --
m(14,15) 111-

Napomena: U ovom primeru, ni jedan član veličine 4 se ne može kombinovati u nastavku. Ovo implicira da je kraj prvog koraka algoritma, ukoliko bi bila moguća dalja kombinovanja algoritam bi trebalo nastaviti (članovi veličine 8 ).

Korak 2: tabela prostih implikanata[uredi | uredi izvor]

Ni jedan od članova ne može biti dalje kombinovan, dakle možemo pristupiti pronalaženju bitnih primarnih implikanata. Redove tablice predstavljaju implikanti koji su nastali, dok kolone čine članovi funkcije. Nebitne vrednosti nisu postavljene kao zasebne kolone - one su suvišne za ovaj deo algoritma jer ih ne moramo implementirati(nisu obavezni kao ulazi).

4 8 10 11 12 15 => A B C D
m(4,12)* X X -100 => - 1 0 0
m(8,9,10,11) X X X 10-- => 1 0 - -
m(8,10,12,14) X X X 1--0 => 1 - - 0
m(10,11,14,15)* X X X 1-1- => 1 - 1 -

Ovde, svaki od bitnih prostih implikanata je označen * - drugi prost implikant može biti pokriven trećim i četvrtim, i treći prost implikant može biti pokriven drugim i prvim, međutim to nije ni bitno. Ako je prost implikant od suštinskog značaja, kao što je i očekivano, potrebno ga je uključiti u minimalnu formu. U nekim slučajevima, bitni prosti implikatori ne pokrivaju sve članove funkcije, u tom slučaju dodatna procedura algoritma mora biti upošljena. Jednostavna "dodatna procedura" je presuđivanje i greška, ali više sistematičniji način je Patrikov metod. U ovom primeru, bitni prosti implikatori ne pokrivaju sve članove, dakle, u ovom slučaju mogu se kombinovati bitni implikanti sa jednim od dva nebitna pa se tako dobija jedno od dva moguća rešenja:

.
.

Oba rešenja su ekvivalentna originalnom , ne minimalnom rešenju:

.

Vidi još[uredi | uredi izvor]

Reference[uredi | uredi izvor]

  1. ^ Quine, W. V. (1952). „The Problem of Simplifying Truth Functions”. The American Mathematical Monthly. 59 (8): 521—531. JSTOR 2308219. doi:10.2307/2308219. 
  2. ^ Quine, W. V. (1955). „A Way to Simplify Truth Functions”. The American Mathematical Monthly. 62 (9): 627—631. JSTOR 2307285. doi:10.2307/2307285. 
  3. ^ McCluskey, E.J., Jr. (1956). „Minimization of Boolean Functions”. Bell System Technical Journal. 35 (6): 1417—1444. doi:10.1002/j.1538-7305.1956.tb03835.x. Pristupljeno 24. 08. 2014. 
  4. ^ V.P. Nelson e.a., Digital Circuit Analysis and Design, Prentice Hall, 1995, pag. 234

Spoljašnje veze[uredi | uredi izvor]