Метод Куайна — Мак-Класкі (метод простих імплікант) - табличний метод мінімізації булевих функцій розроблений і . Функціонально ідентичний карті Карно, але таблична форма робить його ефективнішим для використання в комп'ютерних алгоритмах.
Складність
Незважаючи на більшу можливість практичного застосування ніж у карт Карно, коли мова йде про більше ніж чотири змінних, метод Куайна — Мак-Класкі теж має обмеження області застосування через експоненціальне зростання часу зі збільшенням кількості змінних. Можна показати, що для функції від n змінних верхня границя кількості основних імплікант 3n/n. Якщо n = 32 їх може бути більше ніж 6.5 * 1015. Функції з великою кількістю змінних мають бути мінімізовані з допомогою потенційно не оптимального евристичного алгоритму, на сьогодні евристичний алгоритм мінімізації є фактичним світовим стандартом.
Приклад
Крок 1: знаходимо основні імпліканти
Нехай функція задана за допомогою наступної таблиці істинності:
|
|
Можна легко записати ДДНФ, просто просумувавши мінтерми (не звертаючи увагу на ) де функція приймає значення 1.
Для оптимізації запишемо мінтрерми, включно із тими, що відповідають байдужим станам, в наступну таблицю:
Кількість 1 | Мінтерм | Двійкове представлення |
---|---|---|
1 | m4 | 0100 |
m8 | 1000 | |
2 | m9 | 1001 |
m10 | 1010 | |
m12 | 1100 | |
3 | m11 | 1011 |
m14 | 1110 | |
4 | m15 | 1111 |
Тепер можна починати комбінувати між собою мінтерми (фактично проводити операцію склеювання). Якщо два мінтерми відрізняються лише символом, що стоїть в одній і тій самій позиції в обох, заміняємо цей символ на «-», це означає, що даний символ для нас не має значення. Терми, що не піддаються подальшому комбінуванню позначаються «*». При переході до імплікант другого рангу, трактуємо «-» як третє значення. Наприклад: -110 і -100 або -11- можуть бути скомбіновані, але не -110 і 011-. (Підказка: Спершу порівнюй «-».)
Кількість 1 Мінтерми | Імпліканти 1-го рівня | Імпліканти 2го рівня ------------------------------|-----------------------|---------------------- 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- |
Крок 2: таблиця простих імплікант
Коли подальше комбінування вже неможливе, конструюємо таблицю простих імплікант. Тут враховуємо лише ті виходи функції, що мають значення, тобто не звертаємо уваги на байдужі стани.
4 | 8 | 10 | 11 | 12 | 15 | ||
m(4,12) | X | X | -100 | ||||
m(8,9,10,11) | X | X | X | 10-- | |||
m(8,10,12,14) | X | X | X | 1--0 | |||
m(10,11,14,15) | X | X | X | 1-1- |
Принцип вибору імплікант такий самий як і в методі Куайна. Прості імпліканти, що є ядрами виділені жирним шрифтом. В цьому прикладі, ядра не перекривають усі мінтерми, в такому випадку може бути виконана додаткова процедура спрощення таблиці (див. Метод Петрика). Маємо два варіанти:
Обидві ці функції функціонально еквівалентні до:
Примітки
- V.P. Nelson e.a., Digital Circuit Analysis and Design, Prentice Hall, 1995, pag. 234
Див. також
- Метод Куайна
- Карта Карно
- евристичний алгоритм мінімізації
Посилання
- Мінімізація ДНФ, Інтернет-ресурс для мінімізації ДНФ методом Куайна - Мак-Класкі.
- , стаття Джека Кренча з порівняння методів Куайна - Мак-Класкі та К-карт. (англ.)
- Kmap minimizer Флеш програма базована методі Куайна - Мак-Класкі. (англ.)
- Аплет, що мінімізує булеві функції методом Куайна - Мак-Класкі. (нім.)
- Karma (Karnaugh Map Viewer) – A CAD tool for Karnaugh map manipulation with didactic features in logic circuit synthesis. Uses Quine–McCluskey algorithm to generate a minimal sum of products.
- A. Costa BFunc, QMC based boolean logic simplifiers supporting up to 64 inputs / 64 outputs (independently) or 32 outputs (simultaneously)
- to display all the generated primes.
- Python Implementation by Robert Dick.
- Quinessence, an open source implementation written in Free Pascal by Marco Caminati.
- A literate program written in Java implementing the Quine-McCluskey algorithm.
- a MATLAB implementation by Andrey Popov.
- an open source, R based implementation used in the social sciences, by Adrian Duşa
- A series of two articles describing the algorithm(s) implemented in R: and . The R implementation is exhaustive and it offers complete and exact solutions. It processes up to 20 input variables.
- [1], an applet for a step by step analyze of the QMC- algorithm by Christian Roth
- [2] SourceForge.net C++ program implementing the algorithm.
- Perl Module by Darren M. Kulp.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Metod Kuajna Mak Klaski metod prostih implikant tablichnij metod minimizaciyi bulevih funkcij rozroblenij i Funkcionalno identichnij karti Karno ale tablichna forma robit jogo efektivnishim dlya vikoristannya v komp yuternih algoritmah SkladnistNezvazhayuchi na bilshu mozhlivist praktichnogo zastosuvannya nizh u kart Karno koli mova jde pro bilshe nizh chotiri zminnih metod Kuajna Mak Klaski tezh maye obmezhennya oblasti zastosuvannya cherez eksponencialne zrostannya chasu zi zbilshennyam kilkosti zminnih Mozhna pokazati sho dlya funkciyi vid n zminnih verhnya granicya kilkosti osnovnih implikant 3n n Yaksho n 32 yih mozhe buti bilshe nizh 6 5 1015 Funkciyi z velikoyu kilkistyu zminnih mayut buti minimizovani z dopomogoyu potencijno ne optimalnogo evristichnogo algoritmu na sogodni evristichnij algoritm minimizaciyi ye faktichnim svitovim standartom PrikladKrok 1 znahodimo osnovni implikanti Nehaj funkciya zadana za dopomogoyu nastupnoyi tablici istinnosti x displaystyle x y displaystyle y z displaystyle z t displaystyle t f x y z t displaystyle f x y z t 0 0 0 0 0 01 0 0 0 1 02 0 0 1 0 03 0 0 1 1 04 0 1 0 0 15 0 1 0 1 06 0 1 1 0 07 0 1 1 1 0 x displaystyle x y displaystyle y z displaystyle z t displaystyle t f x y z t displaystyle f x y z t 8 1 0 0 0 19 1 0 0 1 x10 1 0 1 0 111 1 0 1 1 112 1 1 0 0 113 1 1 0 1 014 1 1 1 0 x15 1 1 1 1 1 Mozhna legko zapisati DDNF prosto prosumuvavshi mintermi ne zvertayuchi uvagu na de funkciya prijmaye znachennya 1 f x yz t xy z t xy zt xy zt xyz t xyzt displaystyle f x yz t xy z t xy zt xy zt xyz t xyzt Dlya optimizaciyi zapishemo mintrermi vklyuchno iz timi sho vidpovidayut bajduzhim stanam v nastupnu tablicyu Kilkist 1 Minterm Dvijkove predstavlennya1 m4 0100m8 10002 m9 1001m10 1010m12 11003 m11 1011m14 11104 m15 1111 Teper mozhna pochinati kombinuvati mizh soboyu mintermi faktichno provoditi operaciyu skleyuvannya Yaksho dva mintermi vidriznyayutsya lishe simvolom sho stoyit v odnij i tij samij poziciyi v oboh zaminyayemo cej simvol na ce oznachaye sho danij simvol dlya nas ne maye znachennya Termi sho ne piddayutsya podalshomu kombinuvannyu poznachayutsya Pri perehodi do implikant drugogo rangu traktuyemo yak tretye znachennya Napriklad 110 i 100 abo 11 mozhut buti skombinovani ale ne 110 i 011 Pidkazka Spershu porivnyuj Kilkist 1 Mintermi Implikanti 1 go rivnya Implikanti 2go rivnya 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 Krok 2 tablicya prostih implikant Koli podalshe kombinuvannya vzhe nemozhlive konstruyuyemo tablicyu prostih implikant Tut vrahovuyemo lishe ti vihodi funkciyi sho mayut znachennya tobto ne zvertayemo uvagi na bajduzhi stani 4 8 10 11 12 15m 4 12 X X 100m 8 9 10 11 X X X 10 m 8 10 12 14 X X X 1 0m 10 11 14 15 X X X 1 1 Princip viboru implikant takij samij yak i v metodi Kuajna Prosti implikanti sho ye yadrami vidileni zhirnim shriftom V comu prikladi yadra ne perekrivayut usi mintermi v takomu vipadku mozhe buti vikonana dodatkova procedura sproshennya tablici div Metod Petrika Mayemo dva varianti fA B C D BC D AB AC displaystyle f A B C D BC D AB AC fA B C D BC D AD AC displaystyle f A B C D BC D AD AC Obidvi ci funkciyi funkcionalno ekvivalentni do fA B C D A BC D AB C D AB C D AB CD AB CD ABC D ABCD ABCD displaystyle f A B C D A BC D AB C D AB C D AB CD AB CD ABC D ABCD ABCD PrimitkiV P Nelson e a Digital Circuit Analysis and Design Prentice Hall 1995 pag 234Div takozhMetod Kuajna Karta Karno evristichnij algoritm minimizaciyiPosilannyaMinimizaciya DNF Internet resurs dlya minimizaciyi DNF metodom Kuajna Mak Klaski stattya Dzheka Krencha z porivnyannya metodiv Kuajna Mak Klaski ta K kart angl Kmap minimizer Flesh programa bazovana metodi Kuajna Mak Klaski angl Aplet sho minimizuye bulevi funkciyi metodom Kuajna Mak Klaski nim Karma Karnaugh Map Viewer A CAD tool for Karnaugh map manipulation with didactic features in logic circuit synthesis Uses Quine McCluskey algorithm to generate a minimal sum of products A Costa BFunc QMC based boolean logic simplifiers supporting up to 64 inputs 64 outputs independently or 32 outputs simultaneously to display all the generated primes Python Implementation by Robert Dick Quinessence an open source implementation written in Free Pascal by Marco Caminati A literate program written in Java implementing the Quine McCluskey algorithm a MATLAB implementation by Andrey Popov an open source R based implementation used in the social sciences by Adrian Dusa A series of two articles describing the algorithm s implemented in R and The R implementation is exhaustive and it offers complete and exact solutions It processes up to 20 input variables 1 an applet for a step by step analyze of the QMC algorithm by Christian Roth 2 SourceForge net C program implementing the algorithm Perl Module by Darren M Kulp