- •Алгебра логіки
- •2.1. Алгебра Буля і алгебра логіки
- •2.2. Логічні функції однієї і двох змінних
- •2.3. Властивості елементарних логічних функцій
- •2.4. Формули в алгебрі логіки
- •2.5. Диз’юнктивні й кон’юктивні нормальні форми алгебри Буля
- •2.6. Двоїсті функції
- •2.7. Досконалі диз’юнктивні й кон’юнктивні нормальні форми
- •Питання для самоконтролю
- •3.1. Поняття алгебри Жегалкіна
- •3.2. Властивості операцій алгебри Жегалкіна
- •3.3. Многочлени Жегалкіна
- •Питання для самоконтролю
- •4.1. Поняття повної системи функцій
- •4.2. Замикання множини логічних функцій
- •4.3. Основні замкнуті класи логічних функцій
- •4.4. Критерій Поста повноти системи функцій
- •Питання для самоконтролю
- •5.1. Поняття мінімізації
- •5.2. Побудова скорочених днф
- •5. 3. Побудова тупикових днф. Метод імплікантних таблиць Квайна. Метод Петрика
- •5.4. Мінімізація на основі карт Карно
- •Питання для самоконтролю
5.4. Мінімізація на основі карт Карно
Для спрощення пошуку тупикових і, зокрема, мінімальних ДНФ при кількості змінних, не більшій від чотирьох, дуже зручно застосовувати карти Карно7 (ще кажуть: карти Карнау, діаграми Вейча). При п’яти чи шести змінних треба мати певний навик роботи з цими картами, а при семи і більше змінних повністю втрачається наочність геометричних зображень і переваги роботи з картами.
Карти Карно є графічним поданням таблиць істинності логічних функцій, у яких змінні розміщено не одновимірним, а двовимірним масивом і кожному набору змінних поставлено у відповідність одну клітинку, в яку записують значення функції на даному наборі значень змінних (як правило, в клітинку записують тільки значення 1).
Одиничні значення змінних x, y, z, t позначають фігурними дужками навпроти відповідних рядків і колонок.
Оскільки
таблиця істинності має
рядків, то відповідна карта Карно має
клітинок. Карти Карно для однієї (хоч
ними не користуються), двох, трьох і
чотирьох змінних мають такий вигляд:
(а) (б) (в) (г)
Рис. 2. Карти Карно для однієї, двох, трьох і чотирьох змінних
На рис. 2 як допоміжну інформацію зліва і згори біля карт подано нумерацію клітинок, яка відповідає значенням певних змінних. Також у клітинки карт записано десяткові числа, які відповідають двійковим значенням наборів аргументів — таку нумерацію зручно використовувати при заповненні клітинок одиницями й нулями.
Як видно з таблиць для трьох і чотирьох змінних, нумерація клітинок іде в порядку 00, 01, 11, 10, що відповідає числам 0, 1, 3, 2. Такий порядок вибрано для того, щоб геометрично сусідні набори аргументів відрізнялися цифрою тільки одного двійкового розряду. При цьому також вважається, що верхня границя карти Карно склеюється з нижньою, а ліва з правою.
Визначення 5.8. Набори аргументів, які відрізняються значенням тільки однієї змінної, називають сусідніми наборами.
Сусідні
клітинки карти Карно мають сусідні
набори. На картах Карно до чотирьох
змінних включно сусідні клітинки
розміщено поряд. Так, на карті Карно для
чотирьох змінних (див рис. 2(г)) сусідніми
є клітинки з номерами 0 і 1 (оскільки їм
відповідають набори аргументів
і
),
0 і 2 (
і
),
0 і 8 (
і
),
5 і 7 (
і
),
але клітинки з номерами 1 і 2 — не сусідні
(бо набори аргументів відрізняються
значеннями двох змінних
і
).
Якщо змінних п’ять і більше, то сусідні
клітинки, які відрізняються лише
значенням однієї змінної, не завжди
розміщуються поряд і їхнє сусідство не
очевидне. Тому, як правило, мінімізація
за картами Карно використовують для
функцій, які залежать не більш ніж від
чотирьох змінних.
Відповідно до значення функції на певному наборі значень аргументів, у клітинки таблиці записують нулі (або клітинки залишають порожніми) й одиниці.
Із
клітинок таблиці, заповнених одиницями,
формуються правильні
прямокутники,
які займають по
клітинок.
Та сама клітинка може покриватися двома
і більше прямокутниками, які можуть
перетинатися, але не можуть бути частинами
один одного (у такому разі імпліканти
не будуть простими).
Визначення
5.9.
Сукупність прямокутників, які покривають
всі одиниці функції
,
називають покриттям
цієї функції.
Мінімізація логічних функцій за картами Карно полягає в найекономнішому покритті одиниць мінімальною кількістю максимально можливих правильних прямокутників. Такими прямокутниками можуть бути: одноклітинний — одна клітинка з одиницею, оточена нулями; двоклітинний — дві сусідні клітинки з одиницями, оточені нулями чи частково іншими прямокутиками; чотириклітинний — прямокутник або квадрат із чотирьох сусідніх клітинок з одиницями; восьмиклітинний — прямокутник із восьми сусідніх клітинок з одиницями і т.д.
За
картою легко знайти просту імпліканту
— в неї входять ті змінні
(
),
які у всіх клітинках сформованого
прямокутника не змінюють свого значення;
якщо цим незмінним значенням є 1, то в
просту імпліканту записується
,
якщо є 0, то записується
.
Скільки прямокутників утворюють покриття
одиниць на карті Карно, стільки ж буде
елементарних кон’юнкцій (імплікант) в
побудованій тупиковій ДНФ.
Приклад 5.7. Використовуючи карти Карно, для заданої своїми значеннями функції , побудуємо всі можливі тупикові ДНФ і серед них знайдемо мінімальні й найкоротші.
Задана функція залежить від трьох змінних і на наборах значень аргументів 1, 2, 3, 5, 6 набуває значення 1. Заповнимо одиницями карту Карно і позначимо на ній мінімальну кількість максимально можливих правильних прямокутників. Варіантів покриття є два:
За цими картами відповідно одержимо:
,
.
Обидві знайдені тупикові ДНФ є мінімальними й найкоротшими.
Приклад 5.8. Використовуючи карти Карно, мінімізуємо задану своїми значеннями функцію .
Д
ана
функція залежить від трьох змінних і
на наборах значень аргументів 0, 1, 2, 5,
6, 7 набуває значення 1. Заповнимо одиницями
карту Карно і позначимо на ній мінімальну
кількість максимально можливих правильних
прямокутників; при цьому врахуємо, що
ліва границя карти склеюється з правою.
Варіантів покриття є два:
За цими картами відповідно одержимо тупикові ДНФ, які є найкоротшими і мінімальними:
, .
Приклад
5.9. За картою
Карно мінімізуємо функцію від чотирьох
змінних
.
З
адана
функція набуває значення 1 на наборах
значень аргументів 0-8, 13, 15. Карта Карно
і єдиний можливий варіант покриття має
такий вигляд:
За картою, відповідно до виділених прямокутників, одержимо мінімальну ДНФ:
.
За картою Карно також можна проводити мінімізацію в класі КНФ. При цьому кожному правильному прямокутникові з нулів ставиться у відповідність імплієнта — елементарна диз’юнкція, яка будується із змінних, які не змінюють свого значення в прямокутнику; якщо незмінним значенням є 1, то в просту імплієнту записуємо , якщо є 0, то записуємо .
