- •3. Алгебра логики
- •3.1. Понятие о простом и сложном высказывании
- •Упражнения
- •3.2. Логические операции над высказываниями
- •& 0 0 0 0 1 0 1 0 0 1 1 1Таблица истинности для конъюнкции
- •Упражнения
- •Упражнения
- •3.4. Аксиомы и законы алгебры логики
- •3.4.2. Правила поглощения для элементарных конъюнкций и
- •3.4.3. Правило развёртывания
- •3.4.1. Правила склеивания для элементарных конъюнкций и
- •Все ке для двух высказываний
- •Развёртывание элементарной дизъюнкции
- •Упражнения
- •3.5. Функции алгебры логики. Нормальные формы логических функций
- •Общая запись любой логической функции в сндф имеет вид
- •Пример. По заданной таблице истинности составить сндф функций
- •Снкф для выше приведенной таблицы истинности будут иметь вид
- •Упражнения
- •3.6. Минимизация логических функций
- •3.6.1. Расчетный метод минимизации
- •3.6.2. Табличный метод минимизации
- •3.6.3. Расчетно-табличный метод минимизации (метод Квайна)
- •Упражнения
- •3.7. Некоторые применения алгебры логики
- •Упражнения
- •Контрольные вопросы
3.6.2. Табличный метод минимизации
В этом методе два первых шага как бы объединены и выполняются с помощью специальной таблицы, называемой картой Карно (КК) или картой Карно-Вейча (еще иногда называемой диаграммой). Третий шаг выполняется так же, как и в расчетном методе. В принципе карта Карно является разновидностью табличной записи логической функции, заданной в СНДФ или в СНКФ, т.е. представляет разновидность таблицы истинности.
Д
ля
двух переменных КК представляет собой
квадрат, разделенный на 4 клетки – по
одной клетке на каждый набор переменных.
Строки этой карты связываются с переменной
,
а столбцы – с переменной
.
Каждая клетка соответствует определенной
конституенте, и ей присваивается свой
порядковый номер, который представляет
собой двоичное число, в разрядах которого
записываются цифры (набор), находящиеся
слева от клетки и сверху над ней.
Фигурные скобки указывают, каким перемен
а б с
Рис.3.1. Варианты заполнения КК для случая двух переменных
менным соответствуют строки и столбцы карты (рис. 3.1, а).
Если при данном наборе, соответствующем номеру клетки, логическая функция равна 1, то единица записывается в эту клетку. Если логическая функция при данном наборе равна 0, то в клетку записывается 0 (или ничего не записывается).
На рис. 3.1, б
приведена КК с одной заполненной клеткой,
и соответствующая этой карте логическая
функция будет
.
На рис.3.1, с
приведена карта с тремя заполненными
клетками, и ей будет соответствовать
функция
,
т.е. конституенты, соответствующие
заполненным клеткам в функции, соединяются
дизъюнкцией.
В случае трех переменных КК содержит 8 клеток, и нумеруются они так, как показано на рис. 3.2. Номер каждой клетки получается объединением всех цифр, находящихся слева от клетки и сверху от нее.

Рис. 3.2. Карта Карно для случая трех переменных
С
ледует
отметить особенность нумерации клеток.
Их нужно нумеровать так, чтобы две
рядом расположенные клетки отличались
значением всего лишь одного разряда
(переменной). Для этих целей используется
не обычный двоичный код (тогда 3-й и
4-й столбцы на рис.4 были бы соответственно
пронумерованы как 10 и 11), а двоичный
отраженный код. Первая половина этого
кода получается обычным образом, а
вторая половина – зеркальным отражением
первой, но не всех ее разрядов, а только
младших (правых), а в старшем разряде
ставится единица. То есть процесс
получения отраженных кодов, мы можем
представить так:
Для 3-разрядных
двоичных чисел двоичный отраженный код
формируется с
ледующим
образом:
Для четырех переменных КК содержит 16 клеток (рис. 3.3).

Рис. 3.3. Карта Карно для четырех переменных
Д
ля
пяти переменных необходимо иметь КК с
32 клетками. Эти 32
клетки можно представить как 2 карты по 16 клеток или одну карту на 32 клетки. Одна карта на 32 клетки будет иметь такую нумерацию строк и столбцов с учетом использования отраженных кодов, которая показана на рис. 3.4.
Рис. 3.4. Карта Карно для пяти переменных
В карте Карно,
изображенной на рис. 3.4, нумерация клеток
дается в десятичной системе счисления.
Это позволяет производить очень
компактную запись логической функции.
Действительно, при записи логической
функции, можно указать большой знак
дизъюнкции
(применяемый аналогично знаку
или
в обычной алгебре), в скобках после него
перечислить те номера клеток, в которые
должна быть помещена 1. Такую запись
логической функции называют числовой.
Причем число клеток
в КК зависит от числа переменныхm
и будет
определяться по максимальному номеру
клетки как
,
где
− ближайшая наибольшая целая часть
,
т.е.
,
а
−
максимальный номер клетки в такой
записи.
Например, если
логическая функция записана в виде
то это значит, что число клеток будет
,
т.е. число переменных будет 4, число
клеток будет
а единицы надо поместить в клетки с
номерами 0,1,3,4,6,9,11. В двоичной системе
счисления эти номера будут иметь вид:
0000,0001,0011,0100,0110,1001,1011. Тогда КК с отображенной
на нее приведенной функцией будет иметь
вид, представленный на рис.3.5.

Рис. 3.5. Отображение заданной функции у на карту Карно
Теперь приведем правила минимизации с помощью КК.
1.
соседних клеток, содержащих 1, и
расположенных по вертикали либо по
горизонтали в виде прямоугольника либо
квадрата (такую совокупность клеток
называют покрытием), соответствуют
одной импликанте, ранг которой
где
− число переменных, меньше ранга
покрываемых конституент на
единиц. Чем больше клеток в покрытии,
тем проще выражаемый этим покрытием
член логической функции − импликанта.
2. Импликанта, соответствующая некоторому покрытию заполненных единицами клеток, содержит символы тех переменных, значения которых совпадают у всех клеток, образующих покрытие. Причем символ берется с отрицанием, если для всех клеток покрытия он принимает значение 0, и без отрицания – в противном случае.
П
ример.
Минимизировать логическую функцию
с
помощью КК. Минимизируемая функция
будет состоять из трех переменных,
соответствующая ей КК будет состоять
из 8 клеток. Поэтому КК, с отображенной
на нее заданной функцией в виде помеченных
единицами клеток и выделенных пунктирными
линиями покрытий, приведена на рис.3. 6.

Рис. 3.6. Карта с выделенными покрытиями
Следует отметить некоторые особенности работы с покрытиями. Каждое покрытие нужно использовать только один раз. Если КК свернуть в цилиндр вдоль горизонтальной или вертикальной оси, то будет видно, что крайние клетки тоже оказываются соседними и они могут образовывать покрытие. Такой характерный случай покрытий для КК на четыре переменные приведен на рис. 3.7.

Рис. 3.7. Пример образования покрытий
Приведем еще один
пример КК с отображенной на нее логической
функцией, когда единицы находятся в
крайних клетках. Эта функция имеет вид
у =![]()
.
Соответствующая ей КК приведена на
рис.3.8.




![]()
Рис. 3.8. Карта Карно
и результат минимизации для функции
у=![]()
.
Недостатком
рассмотренного метода считается то,
что при числе переменных
КК становятся громоздкими и неудобными
для практического применения. Однако
справедливости ради, нужно отметить,
что сейчас уже имеются разработанные
компьютерные программы, минимизирующие
методом карт Карно логические функции
со значительно большим числом переменных.
![]()
