Одним из способов графического представления булевых функций от небольшого числа переменных являются карты Карно, которые строят как развертки кубов на плоскости. При этом вершины куба представляются клетками карты, координаты которых совпадают с координатами соответствующих вершин куба. Карта заполняется так же, как таблица истинности: значение 1 указывается в клетке, соответствующей набору, на котором функция имеет единичное значение. Значения 0 на карте обычно не отмечаются. Пример использования карт Карно для представления функций:
которым соответствуют комплексы:
приведен на рис.1. Клетки отмеченные на картах значениями 1, соответствуют 0-кубам (конституентам единицы) булевых функций.
x1x2
х2х3
х1
а) f1б) f2
x3x4
x1x2
в) f3
Рис.1. Карты Карно функций двух (а), трех (б) и четырех (в) переменных.
Карты Карно являются удобным средством для выполнения действий с булевыми функциями и, в частности, используются для минимизации булевых функций от небольшого числа переменных.
С использованием карт Карно легко выделяется минимальное покрытие функции, по которому строится ее минимальная ДНФ или КНФ. Две соседние клетки образуют 1-куб. При этом имеется в виду, что клетки, лежащие на границах карты, также являются соседними по отношению друг к другу. Примеры образования 1-кубов приведены на рис. 2 а,б.
а)
б)
Рис. 2. Образование 1- кубов.
Карты позволяют для функций f1 и f2 заданных комплексами
000 0000
001 0010
K0(f1) = 011 ; K0(f2) = 1101
100 1111
110 1110
с ценами Sа (f1) = 15 и Sa (f2) = 24, определить покрытия
X00 X000
С(f1) = 0X1 ; C (f2) = 00X0
1X0 11X1
111X
с ценами Sa(f1) = 6, Sa(f2) = 12, которым соответствуют аналитические выражения, являющиеся минимальными ДНФ функций:
Четыре вершины могут объединяться, образуя 2-куб, содержащий две независимые координаты. Примеры образования 2-кубов приведены на рис. 3.
а)
б)
в)
Рис. 3. Образование 2-кубов.
Карты построены для функций f1, f2 и f3, заданных комплексами K0(f1), K0(f2), K0(f3) с ценами Sa(f1) = 40, Sa(f2) = 24, Sa(f3) = 32.
На картах определены покрытия состоящие из 2-кубов и имеющие цены
Sa (f1) = 6, Sa (f2) = 4, Sa (f3) = 4.
Объединение восьми вершин приводит к образованию 3-куба. Примеры минимизации функций f1, f2, f3, заданных комплексами
0000 0001 0000
0001 0011 0001
0011 0101 0011
0010 0111 0010
0100 1101 1000
K0(f1) = 0101 ; K0(f2) = 1111 ; K0(f3) = 1001 ,
0111 1001 1011
0110 1011 1010
1100 0100 0111
1101 1100 0110
1111 0110 1111
1110 1110 1110
цена каждого из которых равна Sa = 48, приведены соответственно на картах рис. 4, а, б, в. Функциям f1, f2, f3 соответствуют минимальные покрытия с ценой Sа= 2
а)
б)
в)
Рис. 4. Образование 3-кубов.
С точки зрения аналитических представлений образование (r+1)-кубов из r - кубов происходит в соответствии с правилом поглощения .
Итак, для получения минимальной ДНФ функции с использованием карты Карно определяется покрытие функции, имеющее минимальную цену. Минимальное покрытие выбирается интуитивным путем на основе анализа различных вариантов покрытий минимизируемой функции. Покрытие с минимальной ценой формируется, если каждая существенная вершина будет покрыта кубом с наибольшим числом независимых компонент и для покрытия всех существенных вершин будет использовано наименьшее число кубов.
Примеры минимизации функций приведены на рис.5. На рис. 5, а определяется минимальная форма для функции от трех переменных: