- •Алгебра логіки
- •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.2. Побудова скорочених днф
Найуживанішими методами побудови скороченої ДНФ є такі методи: метод Блейка, метод Нельсона, алгоритм Квайна, метод, який базується на поданні функції булевим кубом.
У
методі
Блейка
скорочену ДНФ будують з будь-якої ДНФ:
у довільній ДНФ логічної функції треба
здійснити всі можливі узагальнені
склеювання
,
а потім усунути всі елементарні поглинання
Приклад 5.2. Використовуючи метод Блейка, побудуємо скорочену ДНФ за заданою ДНФ:
.
Відповідно до методу Блейка, спочатку, доки можливо, застосуємо правило узагальненого склеювання :
.
Після цього, доки можливо, застосуємо правило поглинання :
.
Метод
Нельсона
дає можливість будувати скорочену ДНФ
за КНФ. Спочатку на основі закону
дистрибутивності в КНФ треба розкрити
дужки, а потім спростити формулу,
застосовуючи тотожності
,
і правило поглинання
.
Приклад 5.3. Побудуємо скорочену ДНФ за заданою КНФ:
.
Відповідно до методу Нельсона, на основі закону дистрибутивності в КНФ розкриємо дужки і виконаємо спрощення:
.
В
алгоритмі
Квайна
скорочену ДНФ будують за ДДНФ. При цьому
кожна конституента порівнюється з
наступними конституентами і для одержання
імплікант, якщо це можливо, застосовуємо
правило склеювання
.
Одержані імпліканти знову порівнюємо
і знову склеюємо. Алгоритм повторюємо
доти, доки не буде одержано імпліканти,
які вже не можливо склеїти. Це будуть
прості імпліканти; їхня диз’юнкція дає
скорочену ДНФ.
Приклад 5.4. Використовуючи алгоритм Квайна, побудуємо скорочену ДНФ для функції, заданої своїми значеннями .
Спочатку запишемо ДДНФ заданої функції:
.
Щоб легше було порівнювати конституенти, розіб’ємо їх на групи за кількістю змінних без заперечення (від 0 до n). Тоді кожну конституенту треба буде порівняти лише з конституентами наступної групи, знайти ті, які відрізняються лише інверсією однієї змінної, і попарно виконати склеювання :
Отже, скорочена ДНФ має вигляд:
.
Якщо кількість змінних невелика, то для побудови скороченої ДНФ можна застосувати метод, у якому використовують геометричне подання логічної функції булевим кубом (діаграмою Хассе).
Спочатку введемо деякі поняття. Ребром на булевому кубі називають пару вершин, між якими немає інших вершин. Два ребра називають паралельними, якщо вони мають один напрямок. Два паралельні ребра називають сусідніми, якщо один набір домінує над іншим (набори поелементно теж відрізняються однією компонентою). Будь-яка пара сусідніх ребер утворює грань розміру 2; її називають квадратом. Будь-яка пара сусідніх граней розміру 2 утворює грань розміру 3 і т.д. Ребро вважається гранню розміру 1, а вершина — гранню розміру 0.
Нехай
функція задана своїми значеннями
.
На булевому кубі треба позначити ті
вершини, в яких функція набуває значення
1, і виписати максимально можливі грані,
які містять ці вершини. У відповідність
граням треба поставити їхні коди, а в
кодах спільні елементи залишити без
змін, а різні позначити прочерками. За
одержаними кодами виписати елементарні
кон’юнкції (замість 0 записуємо
,
замість 1 —
,
а замість почерку — нічого), які є
простими імплікантами і з яких будуємо
скорочену ДНФ.
Приклад
5.5. Використовуючи
подання булевим кубом, побудуємо
скорочені ДНФ для функцій, заданих
своїми значеннями:
,
,
.
На булевих кубах позначимо вершини, в яких функції набувають значення 1, і виділимо ребра, які з’єднують ці вершини:
Для
функції
випишемо максимальні грані (ними будуть
ребра) і відповідні їм коди:
,
,
,
.
За одержаними кодами запишемо елементарні
кон’юнкції, які є простими імплікантами:
,
,
,
.
Отже, скорочена ДНФ має такий вигляд:
.
Функції
на булевому кубі відповідає одне ребро
і один квадрат
.
За одержаними кодами побудуємо прості
імпліканти х
і
;
скорочена ДНФ функції має такий вигляд:
.
Оскільки
одержана скорочена ДНФ не містить
заперечень (див. теорему 4.2), то функція
є монотонною.
Функції
на булевому кубі відповідають два ребра
,
і
одна ізольована вершина
.
Отже, простими імплікантами є
,
і
;
скорочена ДНФ має такий вигляд:
.
Теорема 5.1. Скорочена ДНФ монотонної функції не містить заперечень змінних і є її найкоротшою і єдиною мінімальною ДНФ.
Наслідок 1. Якщо в простих імплікантах скороченої ДНФ всі змінні містяться лише з запереченням, то ця ДНФ є найкоротшою і єдиною мінімальною.
Наслідок 2. Якщо скорочена ДНФ не містить жодної змінної, яка входить в неї одночасно з запереченням і без заперечення, то ця ДНФ є найкоротшою і єдиною мінімальною.
