Карта Карно (K-карта скорочено) - метод спрощення виразів булевої алгебри, зроблене Морісом Карно в 1953 поліпшення Діаграм Вейча, винайдених Едвардом Вейчем в 1952. Карта Карно зменшує потребу в обширних обчисленнях, використовуючи перевагу людської можливості розпізнання шаблонів, дозволяє швидке розпізнавання і виключення потенційних станів гонитви.
В карті Карно булеві змінні переносяться (зазвичай з таблиці істинності) і впорядковуються згідно з принципами кода Грея, в якому тільки одна змінна змінюється при переході між сусідніми квадратами. Коли таблиця згенерована, і у відповідні комірки записані вихідні значення, дані організовуються в найбільші можливі групи, що містять 2n комірок (n=0,1,2,3...)[1]. Далі, працюючи з цими групами, отримують мінімізовану ДНФ.
Зазвичай, значні обчислення потрібні для отримання мінімального виду булевої функції, однак карта Карно зменшує потребу таких обчислень завдяки:
Використанню можливості людського розуму по розпізнаванню шаблонів для визначення які терми мають бути поєднані для отримання найпростішого виразу.
Дозволяє швидко визначити та видалити потенційні стани гонитв, які неминучі в булевих рівняннях.
Забезпечує найкращу допомогу в спрощенні до шістьох змінних, однак з більшою кількістю змінних стає складно розрізнити оптимальні шаблони.
Допомагає в навчанні про булеві функції та їх мінімізацію.
Проблеми
Карта Карно зазвичай стає важкою для розпізнання при збільшені кількості змінних. Загальне правило таке: карта Карно добре працює до чотирьох-п'яти змінних, і не має використовуватись з більше ніж шістьома змінними. Для виразів з більшою кількістю змінних може бути використаний Метод Куайна — Мак-Класкі. Сьогодні здебільшого для процесу мінімізації використовуються комп'ютери, для яких евристичний алгоритмеспресо став стандартною програмою мінімізації.
Спосіб дії
Кожна змінна має два значення: початкове та обернене. Змінні впорядковуються згідно з кодом Грея, тобто тільки одна змінна змінюється між двома суміжними комірками. У відповідні комірки записуємо вихідні значення функції.
Коли карта Карно заповнена, для отримання мінімізованої функції "1"-ці або "0"-лі групуються в найбільші можливі прямокутні групи, в яких кількість комірок в групі має дорівнювати степеню 2.[1] Наприклад, група може складатися з 4 комірок в лінію, 2 в висоту і 4 в ширину, 2 на 2 і так далі. Байдужий стан (зазвичай позначений Х) групується тільки тоді, коли група отримана з його використанням більша ніж без нього. Комірки можуть бути використані більше ніж один раз тільки якщо завдяки цьому утворюється менша кількість груп. Кожна "1" або "0" має бути задіяна як мінімум в одній групі.
У випадку використання карти Карно для частково заданих функцій в комірках, що відповідають невикористаним вхідним наборам проставляємо "Х" (зірочки, тильди тощо). Ці комірки при необхідності включаються в контури разом з "1" (при отримані формули на базі ДНФ), або "0" (при отримані формули на базі КНФ). При цьому функція після мінімізації виявляється простішою.
Розглянемо карту Карно представлену на малюнку праворуч. Якщо при побудові функції не враховувати байдужі стани, то отримаємо функцію утворену трьома контурами на наступному кроці отримаємо .
Ця функція значно спроститься якщо використовувати байдужі стани при виділенні контурів. При цьому утворюється лише один контур (на малюнку вказаний пунктиром). В результаті отримаємо .
Кожна отримана в карті Карно група продукує кон'юнкцію змінних, що не міняють своє значення в межах окресленої області, якщо змінна нульова, тоді в кон'юнкції ставимо заперечення. Аналогічні дії виконуємо для всіх груп (контурів). Кон'юнкції об'єднуємо диз'юнкцією.
Для побудови інверсної функції групуємо "0" замість "1".
Взаємозв'язки
Кожна комірка карти Карно відповідає мінтерму. Малюнок праворуч показує розташування кожного мінтерма на карті. Діаграма Венна для чотирьох множин названих A, B, C, D посилається на карту Карно представлену на попередньому малюнку:
Змінна А карти Карно відповідає множині А діаграми Вена; і так далі.
Мінтерм m0 карти Карно відповідає ділянці 0 в діаграмі Вена; і так далі.
Мінтерм m9 це ABCD (1001) в карті Карно відповідає перетину ділянок А і D.
Таким чином, кожен мінтерм визначає унікальний перетин всіх чотирьох множин. Діаграма Вена може містити безкінечну кількість множин і все ще відповідати відповідній карті Карно. Із збільшенням множин і змінних, і діаграма Вена, і карта Карно стають складнішими для малювання і управління.
Тороїдально зв'язні
Решітка є тороїдально зв'язна, таким чином прямокутні групи можуть утворюватися через краї. Наприклад, m9 може бути згрупована з m1; так само як m0, m8, m2, та m10 можуть утворити групу 4*4.
Розмір карти
Розмір карти Карно для n булевих змінних становить 2n.
k-карта для 2-х змінних
k-карта для 3-х змінних
k-карта для 4-х змінних
Приклад
Карта Карно використовується для полегшення процесу спрощення функцій булевої алгебри. Далі показана неспрощена функція від чотирьох булевих змінних , , , та їх інверсій. Вона може бути представлена двома різними функціями:
Примітка: Значення в є мінтермами для рядків, коли функція дає "1" на виході.
Таблиця істинності
Використавши визначені мінтерми, наступна таблиця істинності може бути створена.
#
0
0
0
0
0
0
1
0
0
0
1
0
2
0
0
1
0
0
3
0
0
1
1
0
4
0
1
0
0
0
5
0
1
0
1
0
6
0
1
1
0
1
7
0
1
1
1
0
8
1
0
0
0
1
9
1
0
0
1
1
10
1
0
1
0
1
11
1
0
1
1
1
12
1
1
0
0
1
13
1
1
0
1
1
14
1
1
1
0
1
15
1
1
1
1
0
Карта Карно
Існує 16 варіантів комбінації вхідних змінних, таким чином карта Карно має 16 позицій, і організована у вигляді решітки 4*4.
Двійкові цифри в карті показують вихід функції для будь-якої комбінації на вході. Таким чином 0 вписаний в верхню ліву комірку решітки через те, що ƒ = 0 коли A = 0, B = 0, C = 0, D = 0. Зауважте, що значення впорядковані згідно з кодом Грея, значить рівно одна змінна змінюється між двома суміжними комірками.
Після конструювання карти Карно наше завдання знайти мінімальні терми для використання в кінцевому виразі. Ці терми знаходяться шляхом окреслення груп 1-ць в карті. Група має бути прямокутною і мати площу, що дорівнює ступеню двійки (тобто 1, 2, 4, 8…). Прямокутник має бути максимально великим і без 0-в. Оптимальне групування в матриці позначене зеленим, червоним і синім. Зауважте, що групи можуть перетинатися. Зона перетинання червоної і зеленої групи позначена коричневим.
Решітка тороїдально зв'язна, що означає, що прямокутні групи можуть обгортатися навколо країв, таким чином правильний терм, хоч і не частина мінімального набору, він покриває мінтерми 8, 10, 12 і 14.
Можливо важче уявити такий терм , який обгортається навколо всіх чотирьох вершин, він покриває такі терми 0, 2, 8, 10.
Розв'язання
Коли карта Карно побудована і отримані групи, розв'язок може бути отриманий шляхом виключення надлишкових змінних використавши аксіоми булевої алгебри.
Для червоної групи:
Змінна має одне й те саме значення (1) в кожній комірці групи, значить вона має бути включена в терм червоної групи.
Змінна змінює своє значення, отже має бути виключена.
завжди 0. Через те, що 0, вона має бути обернена (записана із символом інверсії, ) перед включенням.
змінюється.
Таким чином перший терм виглядає
Для зеленої групи ми бачимо, що та зберігають одне значення, а змінюється. - 0 і має бути обернене перед включенням. Отже другий терм
Аналогічно, синя група дає
Розв'язки усіх груп об'єднуються в:
Інверсія
Інверсія функції знаходиться таким самим шляхом, тільки групуються 0.
Три терма, що покривають інверсну функцію показані сірими прямокутниками з границями різного кольору.
Карта Карно корисна для виявлення та виключення станів гонитви. Їх дуже легко визначити використовуючи карту Карно через те, що умови гонитви існують, коли рухаєшся між будь-якою парою суміжних але роз'єднаних, груп окреслених на карті.
В попередньому прикладі, потенційно умови гонитви існують, коли C 1 і D 0, A 1, і B змінюється з 1 на 0 (пересуваємось із синьої зони в зелену). В цьому випадку, вихід має залишатися рівним 1, але через те, що цей перехід не покритий специфічним термом в рівнянні, існує потенційна небезпека глюка (коротокочасного переходу в виходу в стан 0).
Другий глюк може важче помітити: коли D 0 і A та B обидва 1, зі зміною C з 1 в 0 (при переході з блакитного стану в червоний).
Який з цих глюків може статися залежить від фізичної реалізації, і чи потрібно нам хвилюватися залежить від програми.
В цьому випадку, додатковий терм виключить можливість станів гонитв, ставши мостом між зеленим і синім вихідними станами, а також між синім і червоним вихідними станами: це показано як жовтий регіон.
Цей терм зайвий в системах статичної логіки, але така надлишковість часто потрібна в реальних динамічних системах.
Аналогічно, додатковий терм має бути доданим в інверсну функцію для уникнення потенційних станів гонитви. Застосувавши закони де Моргана створюємо інший добуток сум для F, з новим чинником .
Приклади карт від двох змінних
Далі наведені усі можливі к-карти від двох змінних 2 × 2. Для кожного варіанта прописана мінімальні пряма і інверсна функції, стійкі до стану гонитви.
(0); K = 0
(1); K = A′B′
(2); K = AB′
(3); K = A′B
(4); K = AB
(1,2); K = B′
(1,3); K = A′
(1,4); K = A′B′ + AB
(2,3); K = AB′ + A′B
(2,4); K = A
(3,4); K = B
(1,2,3); K = A′ + B′
(1,2,4); K = A + B′
(1,3,4); K = A′ + B
(2,3,4); K = A + B
(1,2,3,4); K = 1
Приклад К-карти для функції 5-х змінних
Для таблиць 5 і більше змінних треба враховувати, що квадрати 4х4 віртуально розташовані один над одним в третьому вимірі, через це відповідні комірки двох сусідніх квадратів 4х4 є поєднаними, і відповідні терми можна склеювати.
Karma 3 [Архівовано 9 січня 2021 у Wayback Machine.], A set of logic synthesis tools including Karnaugh maps, Quine-McCluskey minimization, BDDs, probabilities, teaching module and more. Logic Circuits Synthesis Labs (LogiCS) - UFRGS, Brazil.