- •Питання до іспиту
- •Множини. Основні поняття та означення.
- •Способи задання множин.
- •Скінченні та нескінченні множини. Зчисленні та незчисленні множини. Теорема Кантора
- •Круги Ейлера-Венна. Операції над множинами. Навести приклади.
- •Універсальна множина, порожня множина. Привести приклади універсуму і порожньої множини.
- •Порожня множина. Обґрунтуйте необхідність використання порожньої множини. Чи завжди будь-яка множина містить у собі порожню множину?
- •Дайте визначення підмножини. Чим відрізняється поняття включення ( або ) від поняття приналежності ( ).
- •Алгебра множин. Основні властивості операцій над множинами. Принцип двоїстості.
- •Метод доведення в алгебрі множин з застосуванням теореми о рівності множин (використання двостороннього включення).
- •Метод доведення в алгебрі множин з застосуванням основних властивостей операцій над множинами.
- •Декартовий добуток множин. Приклади.
- •Бінарні відношення на множинах. Основні поняття та означення.
- •Представлення відношення за допомогою матриці і графа. Приклади.
- •16. Функціональне бінарне відношення
- •17.Властивості бінарних відношень.
- •18.Відображення .Типи відображень.
- •19. Відно́шення еквівале́нтності .Класи еквівалентності.
- •20. Відношення порядку називається нестрогим, якщо воно рефлексивне
- •21.Елементарна комбінаторика.Правила суми та правило добутку.
- •22.Сполуки без повторень.
- •26.Графи.Основні поняття і означення.
- •Способи подання графа. Приклади.
- •Поняття логіки висловлень, операції над висловленнями. Таблиці істинності. Логічні формули.
- •Формули алгебри логіки.
- •Реалізація функцій формулами. Рівносильність формул
- •Основні тотожності алгебри логіки. Принцип двоїстості. Правила де Моргана для висловлень.
- •Булеві змінні. Булеві функції. Основні поняття. Способи задання булевих функцій.
- •Нормальні форми зображення булевих функцій.
- •44, 45. Досконалі диз’юнктивні нормальні форми (дднф), Досконалі кон’юнктиві нормальні форми (дкнф).
- •Методи мінімізації булевих функцій: карти та куб Карно, метод Квайн-Мак-Класкі, метод Борецького-Блейка.
- •Мінімізація булевих функцій. Логічні елементи. Логічні схеми
Методи мінімізації булевих функцій: карти та куб Карно, метод Квайн-Мак-Класкі, метод Борецького-Блейка.
Может ну его нах?
Мінімізація булевих функцій методом карт Карно (діаграм Вейча)
Ціллю мінімізації є знаходження мінімальної з тупикових ДНФ (КНФ), тобто знаходження мінімального покриття даної функції. Для цього необхідно побудувати всі можливі тупикові ДНФ (КНФ), використовуючи операції склеювання та поглинання для даної функції. Методика Карно і Вейча дозволяє виконати зазначені операції графічно.
Карта Карно для ДНФ (діаграма Вейча — для КНФ) є аналогом таблиці істинності, зображеній у спеціальній формі. Значення змінних розташовані у заголовках рядків і стовпців карти. Кожній конституенті одиниці функції відповідає одна клітка (комірка) таблиці. Нуль або одиниця в клітці визначає значення функції на даній інтерпретації. Значення змінних розташовані так, щоб сусідні (що мають спільну межу) рядки і стовпці таблиці відрізнялись значенням тільки однієї змінної. Тому запис інтерпретацій двох змінних у порядку (0, 0), (0, 1), (1, 0), (1, 1) неприпустимий, оскільки сусідні набори
(0, 1) і (1, 0) відрізняються значеннями обох змінних. У картах Карно інтерпретації двох змінних розташовуються у такій послідовності: (0, 0), (0, 1), (1, 1), (1,0). У цій послідовності перша та остання інтерпретації також відрізняються значенням тільки однієї змінної, тому перший і останній рядки (стовпці) таблиці вважаються сусідніми (протилежні границі таблиці вважаються співпадаючими). При такому розташуванні мінтер-ми, до яких застосовна операція склеювання, розташовуються у сусідніх клітках карти, і склеювання проводиться графічно за допомогою об єднання кліток у групи.
Карти Карно для функцій двох змінних мають вид таблиці 2х2, де стовпці відповідають значенням першої змінної, а рядки — значенням другої змінної. На рис. 4.1 зображено структури карти Карно, в клітках вказано відповідні мінтерми у виді формул з абстрактними змінними.
Структура карти Карно для функцій трьох змінних має вид таблиці 2 х 4, де стовпці відповідають всіляким наборам значень перших двох змінних, а рядки — значенням Oil третьої змінної (рис. 4.2). В клітках структури вказано відповідні мінтерми з абстрактними змінними.
Для конкретної булевої функції карта Карно заповнюється таким чином. У клітках, що відповідні інтерпретаціям, на яких функція дорівнює одиниці, записують одиниці. Ці клітки відповідають конституентам одиниці, що присутні у ДДНФ функції. В інші клітки записують нулі.
Розв'язок. Побудова карти Карно для заданої функції: поміщаємо одиниці до кліток, що відповідають мінтермам, які присутні в даній ДДНФ, і нулі — в решту кліток (рис. 4.3).
До конституентів одиниці, що відповідають будь-яким двом сусіднім кліткам, можна застосувати операцію склеювання, оскільки вони відрізняються тільки однією змінною. Зауважимо, що на карті Карно для функції трьох змінних кожна клітка має три сусідні клітки, на карті Карно для функції чотирьох змінних — чотири, на карті Карно для функції п'яти змінних — п'ять тощт. При цьому для кліток на карті Карно функції трьох змінних, розташованих у крайньому правому або у крайньому лівому стовпцях, сусідніми є клітки, що розташовані безпосередньо зліва (або справа), вище (або нижче) у сусідньому рядку, і крайня ліва (або права) у тому ж рядку. Як приклад на рис. 4.4 відзначено клітки, сусідні з клітками А і В.
. Мінімізація функцій методом Квайна — Мак-Класкі
Метод мінімізації Квайна — Мак-Класкі також реалізує перехід від ДДНФ до мінімальної ДНФ з використовуванням операцій склеювання та поглинання. Він був запропонований В. Квайном, а потім удосконалений Мак-Класкі.
Алгоритм Квайна складається з таких кроків:
Записати ДДНФ заданої функції.
Виконати всі можливі операції неповного диз'юнктивного склеювання. Результуюча формула є диз'юнкцією всіх можливих імплікант даної функції.
Виконати всі можливі операції диз'юнктивного поглинання. Результуюча формула є скороченою ДНФ даної функції.
Скласти імплікантну таблицю і знайти диз'юнктивне ядро.
Спростити імплікантну таблицю за допомогою видалення рядків, що відповідають імплікантам диз'юнктивного ядра, і стовпців, що відповідають тим конституентам одиниці, які покриваються імплікантами ядра.
Знайти всі тупикові ДНФ даної функції.
Знайти мінімальну ДНФ.
Якщо при мінімізації деякої функції виходить, що спрощена імплікантна таблиця порожня, то тупикова ДНФ цієї функції є мінімальною і складається тільки з імплікант диз'юнктивного ядра. Якщо ж спрощена імплікантна таблиця не порожня, то в кожній тупиковій ДНФ функції, крім імплікант ядра, присутні і деякі прості імпліканти, що не входять до диз'юнктивного ядра. Набір даних імплікант визначає різниці між тупиковими ДНФ.
З робивши попарне порівняння всіх елементарних ко-н'юнкцій, що входять у дану формулу, приходимо до висновку, що одержати інші елементарні кон'юнкції за допомогою операції склеювання в даній формулі неможливо. Таким чином, одержано диз'юнкцію всіх можливих імплікант даної функції:
Одержана формула є скороченою ДНФ даної функції. Складемо імплікантну таблицю (таблиця 4.33). її рядки задаються простими імплікантами, а стовпці — конституентами одиниці функції. Зірочкою відзначається кожна клітка таблиці, для якої імпліканта з рядка є власною частиною консти-туенти із стовпця.
Знайдемо диз'юнктивне ядро. До нього входить кожна проста імпліканта, яка є єдиною у покритті будь-якої консти-туенти одиниці. В імплікантній таблиці по одному знаку «*» містять стовпці, що відповідають конституентам одиниці хуг і хуг, напроти простих імплікант у z і у z . Ці прості імпліканти складають диз'юнктивне ядро. Складемо спрощену імплікантну таблицю. Для цього з імплікантної таблиці викреслюємо рядки, що відповідають імплікантам диз'юнктивного ядра, і стовпці, що відповідають конституентам одиниці, які покриті імплікантами ядра (таблиця 4.34).
В даному випадку імпліканти ядра покривають всі кон-ституенти одиниці, крім однієї, тому спрощена імплікантна таблиця має такий вигляд (таблиця 4.35):
Із спрощеної імплікантної таблиці знаходимо, що тупикові ДНФ даної функції, крім диз'юнктивного ядра, включають або імпліканту х z, або х у. Таким чином, одержуємо дві тупикові ДНФ для даної функції:
Вказані ДНФ містять по 6 символів змінних, а також однакову кількість знаків операцій диз'юнкції (2) і кон'юнкції (3), тому виберемо як мінімальну ДНФ1, що містить менше знаків операцій заперечення.
В методі Квайна для функції більшого числа змінних перелічення варіантів склеювання і множини тупикових ДНФ є значною складністю. Удосконалення, що введене Мак-Класкі, спрощує запис мінімізаційної формули. Згідно з його пропозицією конституенти одиниці записуються у вигляді двійкового коду — номери даної конституенти. Вказаний номер відповідає інтерпретації, на якій конституен-та дорівнює одиниці. Всі останні імпліканти, що одержані в результаті застосування операцій неповного склеювання, також записуються у вигляді двійкових кодів. У позиціях коду, що відповідають реальним змінним імпліканти, поміщається набір значень змінних, який обертає імпліканту на одиницю. В позиціях фіктивних змінних імпліканти ставиться прочерк. Таким чином, операції склеювання і поглинання проводяться не з самими імплікантами, а з їх двійковими кодами, що робить алгоритм простим у програмній реалізації.
Крім того, множина кодів імплікант ділиться на групи за кількістю одиниць, що в них утримуються. Оскільки операції неповного склеювання застосовні до імплікант, коди яких відрізняються значенням тільки в одній позиції, в склеюванні можуть брати участь тільки імпліканти, що належать до сусідніх груп, номери яких відрізняються на одиницю. Крім того, виконання операцій склеювання здійснюється покроково. На першому кроці здійснюються всі можливі склеювання конституент одиниці, на другому кроці здійснюється склеювання на множині імплікант, що одержані на першому кроці, тощо. Ділення на групи та кроки дозволяє істотно скоротити кількість перевірок пар імплікант на можливість здійснення склеювання і робить алгоритм більш ефективним.
При виконанні операцій поглинання з формули видаляються всі імпліканти, що не є простими. Результуюча формула зображує диз'юнкцію простих імплікант функції — її скорочену ДНФ. Імпліканти, що брали участь хоча б в одному склеюванні, не є простими. Отже, замість операцій поглинання можна видалити з формули всі імпліканти, що брали участь хоча б в одному склеюванні, з однаковим результатом. Тому при виконанні операцій склеювання одержані імпліканти позначаються. Після виконання всіх можливих склеювань позначені імпліканти видаляються. Це дає той же результат, що і при виконанні операцій поглинання.
Формальний метод знаходження множини всіх тупикових ДНФ функції був запропонований С. Петриком. У цьому методі кожній з простих імплікант функції, що не входять до диз'юнктивного ядра, приписується буквене позначення. Нагадаємо, що пошук простих імплікант проводиться у спрощеній імплікантній таблиці. За допомогою цієї таблиці записується логічна формула покриття конституент одиниці простими імплікантами. Для цього для кожної конституенти одиниці складається диз'юнкція літерних позначень всіх простих імплікант, які її покривають. Далі записується формула, що зображує кон'юнкцію одержаних елементарних диз'юнкцій. В формулі розкриваються всі дужки, після чого вона здобуває вид диз'юнкції елементарних кон'юнкцій. Кожна елементарна кон'юнкція в одержаній формулі відповідає одній з тупикових ДНФ функції. Для побудови такої ДНФ необхідно записати імпліканти, що відповідають літерним позначенням, які входять до складу даної елементарної кон'юнкції, й імпліканти диз'юнктивного ядра функції.
Приклад. Знайти за допомогою метода Квайна — Мак-Кла-скі мінімальну ДНФ функції f(x, у, г, t), що задана такою ДДНФ:
Розв'язок. У таблиці 4.36 запишемо конституенти одиниці даної функції у вигляді двійкових кодів у другий стовпчик. У першому стовпці запишемо десяткові номери інтерпретацій.
Відповідно до методу здійснимо такі кроки:
Згрупуємо двійкові коди імплікант з однаковою кількістю одиниць. Назвемо число одиниць т індексом групи. Упорядкуємо групи у порядку зростання т.
Починаючи з т = 0, зробимо порівняння кожного двійкового коду в групі з індексом т з кожним кодом з групи з індексом т + 1. Якщо порівнювані двійкові коди різні тільки в одному розряді, то у наступний стовпчик таблиці запишемо відповідний їм двійковий код з порожньою позначкою «-» на місці зазначеного розряду. Напроти кожного нового коду запишемо номери кодів двох імплікант, що брали участь у порівнянні, і у наступному стовпчику ці імпліканти позначимо знаком «V», оскільки вони не є простими імплікантами. Всі коди, які залишилися непо-значеними знаком «V», відповідають простим імплікантам, тому позначимо їх знаком «X».
Якщо серед знов одержаних імплікант є однакові, то з них для подальшого використання залишаємо тільки одну.
Повторюємо кроки 1-3 доти, доки існує можливість одержувати нові коди імплікант.
Результат виконання описаних кроків наведено у таблиці 4.37. Спочатку заповнюємо три стовпця нульового циклу: т (десятковий індекс групи), двійковий код імшпкан-ти, номер імпліканти. Імпліканти ділимо на групи за значенням т.
Потім здійснимо порівняння першої імпліканти з групи т = 0 (імпліканта 0000) з першою імплікантою з групи т = 1 (імпліканта 0001). Вони відрізняються тільки в одному розряді, тому робимо їх склеювання та одержуємо нову імпліканту з кодом 000-. Записуємо даний код у стовпчик коду імпліканти циклу 1, а напроти імплікант 0000 і 0001 ставимо позначки «V», оскільки вони не є простими. їх номери вказуємо поряд з кодом 000-. Потім порівнюємо імпліканту 0000 з другою імплікантою з групи т = 1 — імплікантою 0010 тощо.
Коли порівняння всіх кодів імплікант стовпця «цикл 0» завершено, аналізуємо стовпчик виду імпліканти. Напроти всіх імплікант ставимо позначення «V», оскільки в циклі 0 кожна імпліканта припускає склеювання і не є простою. Далі розділяємо на групи m = 0, т = 1 і т = 2 коди імплікант циклу 1. Потім попарно порівнюємо ці імпліканти й одержуємо стовпчик коду імплікант «цикл 2». Коди, що містять знаки «-», можуть утворювати нові імпліканти, тільки якщо вони містять знаки «-» в одних і тих же розрядах. Закінчивши порівняння, виділяємо прості імпліканти у стовпці «вид» «циклу 1», які не мають позначки «V», і позначаємо їх позначкою «X». У стовпці «код» «циклу 2» є однакові імпліканти, тому довільно викреслюємо один з однакових рядків, щоб кожна імплікан-та зустрічалася тільки один раз. Порівнюючи коди імплікант у «циклі 2», приходимо до висновку, що методом склеювання з них неможливо одержати нові імпліканти. Всі коди циклу 2 відповідають простим імплікантам, отже, побудову таблиці завершено.
Для знаходження тупикових ДНФ побудуємо імплікант-ну таблицю, в рядках якої розташовуємо двійкові коди, що відповідають простим імплікантам, а в стовпцях — коди, що відповідають конституентам одиниці. Якщо двійковий код рядку є частиною коду стовпця (позиції із знаком «-» не порівнюються), то у відповідну клітку таблиці записуємо знак «*» (таблиця 4.38).
Відзначимо стовпці таблиці, які містять по одному знаку «*». Відповідні їм прості імпліканти є диз'юнктивними ядрами. Викреслюємо рядки таблиці, що відповідають ядрам, і стовпці, покриті ядрами, як зображено у таблиці 4.39.
Тепер знайдемо всі тупикові ДНФ функції f(x, у, z, t) і оберемо з них мінімальну. Згідно з методом Петрика кожній з імплікант таблиці приписуємо літерне позначення і записуємо формулу покриття конституент одиниці простими імпліканта-ми. Конституента одиниці з кодом 0000 може бути покрита імплікантою D або імплікантою Е, тобто диз'юнкції: D v E. Конституента одиниці з кодом 1000 може бути покрита імплікантою А або імплікантою Е: A v E. Аналогічно 1100 може бути покрита A v С, а 1101 — диз'юнкцією В v С. Таким чином, покриття конституент одиниці спрощеної імплікантної таблиці функції f(x, у, z, t) простими імплікантами можна записати у вигляді формули покриття:
Якщо в цій формулі розкрити дужки, то отримаємо символьне зображення всіх можливих наборів простих імплікант для тупикових ДНФ, що не включає диз'юнктивні ядра:
В одержаній формулі кожна кон'юнкція буквених позначень відповідає набору імплікант у деякій тупиковій ДНФ, до якої обов'язково входять також диз'юнктивні ядра. Для того щоб одержати мінімальну ДНФ, необхідно вибрати набір з мінімальною кількістю імплікант (у даному прикладі це EC) і додати імпліканти ядра (0--1, -01-). Одержуємо мінімальну ДНФ вихідної функції f:
Таким чином, за допомогою метода Квайна — Мак-Класкі одержана мінімальна ДНФ функції f(x, у, г, t), яка містить всього лише 4 елементарні кон'юнкції замість 11 конституент одиниці ДДНФ.
Недолік методу мінімізації булевих функцій Квайна — Мак-Класкі полягає у необхідності записувати ДДНФ функції, яка вже при семи змінних може містити більше ста конституент одиниці. Наступний метод дозволяє здійснювати диз'юнктивну мінімізацію, використовуючи як вихідну довільну ДНФ функції.
Мінімізація функцій методом Порецького — Блейка
Метод мінімізації Порецького — Блейка реалізує перехід від довільної ДНФ функції до скороченої ДНФ за допомогою операцій узагальненого склеювання і поглинання.
Метод Порецького — Блейка полягає у застосуванні різних операцій узагальненого склеювання до ДНФ функції. Потім у одержаній формулі здійснюються всі можливі операції поглинання.
Очевидно, диз'юнкція лівих частин співпадає з функцією /". До знову одержаних імплікант може бути застосована операція повного диз'юнктивного склеювання (п. 4.11.1):