Метод Куайна

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Метод Куайна — спосіб мінімізації функцій алгебри логіки. Представляє функції у вигляді ДНФ або КНФ з мінімальною кількістю членів і з мінімальним набором змінних.

Метод Куайна має чітко сформульований алгоритм здійснення окремих операцій і через це може бути використаний для реалізації на ЕОМ. Для проведеня мінімізації цим методом вимагається досить багато часу через необхідність попарного порівняння одного з одним членів логічної функції. У випадку мінімізації за методом Куайна припускається, що початкова функція задана в ДДНФ або ДКНФ.

Сам метод проходить в два етапи:

  • Перехід від канонічної форми (ДДНФ або ДКНФ) до скороченої форми.
  • Перехід від скороченої до мінімальної форми.

Перший етап (перехід до скороченої форми)[ред.ред. код]

Здійснюється перехід від канонічної форми запису (ДДНФ) до скороченої на основі формули склеювання , де однакова частинах обох кон'юнкціях,  — змінна, яка має протилежне значення.

Якщо потрібно отримати мінімальну КНФ, тоді правило склеювання має такий вигляд: .

Другий етап (отримання мінімальної форми)[ред.ред. код]

Здійснюється перехід від скороченої форми до мінімальної шляхом поглинання (член поглинає вираз ).

У випадку необхідності отримати отримання мінімальної КНФ операція поглинання має такий вигляд: .

Приклад отримання мінімальної ДНФ[ред.ред. код]

Нехай ми маємо функцію, задану за допомогою таблиці істинності.

#
0 0 0 0 0 1
1 0 0 0 1 1
2 0 0 1 0 0
3 0 0 1 1 0
4 0 1 0 0 1
5 0 1 0 1 0
6 0 1 1 0 1
7 0 1 1 1 1
#
8 1 0 0 0 1
9 1 0 0 1 1
10 1 0 1 0 0
11 1 0 1 1 0
12 1 1 0 0 0
13 1 1 0 1 0
14 1 1 1 0 1
15 1 1 1 1 1

Запишемо ДДНФ функції, заданої ТІ. В формулі кожну кон'юнкцію пронумеруємо відповідно до її порядкового номера в ТІ. Нумерація потрібна для відслідкування попарного перебору всіх кон'юнкцій на предмет застосування правила склеювання.

На першому етапі порівнюємо попарно всі кон'юнкції (мінітерми четвертого рангу). Склеюванню підлягають лише ті, що відрізняються інверсією лише однієї змінної. Це 0 і 1, 0 і 4, 0 і 8, 1 і 9, 4 і 6, 6 і 7, 6 і 14, 7 і 15, 8 і 9, 14 і 15 кон'юнкції.

За номерами мінітермів перевіряємо чи всі початкові мінітерми четвертого рангу склеїлися. В отриманій формулі присутні номери всіх початкових кон'юнкцій, що всі вони піддалися первинному склеюванню. У випадку, якщо номер якоїсь кон'юнкції відсутній в отриманій формулі, вона має бути введена в неї через знак диз'юнкції, для уникнення викривлення результату. Далі, за можливості, до мінітермів одного рангу знов застосовуємо правило склеювання. В отриманій функції склеюванню піддаються наступні мінітерми третього рангу 0-1 і 8-9, 0-8 і 1-9, 6-7 і 14-15, 6-14 і 7-15. В результаті утворюються мінітерми другого рангу. При цьому мінітерми 0-4 і 4-6 не піддаються склеюванню і через це присутні в скороченій формі функції.

Члени, що повторюються можна видалити. Якщо більше склеїти нічого не виходить, то перший етап спрощення завершився.

На другому етапі складається імплікантна таблиця, або таблиця поглинань (перекриттів). Ця таблиця дозволяє спростити застосування правило поглинання і одночасно відслідкувати, чи всі початкові кон'юнкції (імпліканти) враховані в спрощеній функції.

# Спрощені імпліканти Початкові імпліканти
1 V V V V
2 V V
3 V V
4 V V V V
рядок перекриттів V V V V V V V V V
Примітки:
1. Жирним виділені ті спрощені імпліканти, що складають ядро функції.
2. Червоним виділені ті комірки, що увійдуть у рядок перекриттів через "ядерність" відповідних імплікантів.
3. Зеленим виділені дві комірки з яких можемо вибирати будь-яку.
4. Позначки першого ядра показані жирним, косим шрифтом, другого просто жирним, а позначки додатків - звичайним шрифтом.

В імплікантну таблицю входять всі початкові кон'юнкції (у стовпчиках) і всі кон'юнкції, піддані склеюванню на останньому етапі (в рядках), разом з тими, що не були склеєні (якщо такі є). В таблиці на перетині рядків і стовпців, до мінтермів яких може бути застосоване поглинання, ставиться позначка. Після проставлення всіх позначок визначаються ядра функції.

Ядро функції — скорочена імпліканта, яка одноосібно перекриває які-небудь стовпці таблиці (тобто в цих стовпцях стоїть лише одна позначка).

Спрощена функція може мати декілька ядер або не мати взагалі. Якщо функція має ядро, то воно має обов'язково бути присутніми в мінімальній формулі. Якщо функція не має ядер, то умовно за ядро приймається та імпліканта, яка є найпростішою і одночасно перекриває якомога більше стовпців початкових імплікант функції.

Додаток — скорочена імпліканта, яка дозволяє оптимальним чином заповнити комірки рядка перекриттів, що залишилися. Додаток необхідно обирати таким чином, щоб вони були як найпростіші (мали меншу кількість змінних, інверсій) і одночасно перекривали якомога більше незаповнених комірок рядка перекриттів. При цьому формула спрощеної функції буде складатися з ядер і додатків.

В нашому варіанті вибір додатків такий: і . В даному випадку обираємо другий варіант через меншу кількість інверсій.

Тож отримуємо мінімізований методом Куайна варіант функції:

Недоліки[ред.ред. код]

Метод Куайна має один істотний недолік, який пов'язаний з необхідністю повного попарного порівняння членів ДДНФ (ДКНФ). При цьому з ростом числа членів зростає і кількість порівнянь у факторіальній залежності. В 1956 Мак-Класкі модернізував метод Куайна, це дозволило зменшити кількість порівнянь.

Див. також[ред.ред. код]

Література[ред.ред. код]

  • «Прикладна теорія цифрових автоматів», Київ «Вища Школа» 1987, К. Г. Самофалов, А. М. Романкевич, В. Н. Валуйский, Ю. С. Каневский, М. М. Пиневич.

Посилання[ред.ред. код]

  • Мінімізація ДНФ, Інтернет-ресурс для мінімізації ДНФ методом Куайна - Мак-Класкі.