
- •Введение
- •1. Основные сведения из формальной логики
- •1.1. Введение в формальную логику
- •1.2. Формы познания человеком окружающего мира
- •1.3. Формы абстрактного мышления
- •«Все s есть p»,
- •«Если s есть p, то s есть p1».
- •1.4. Содержательное описание основных законов классической формальной логики и границы их применимости
- •1.5. Способы правильных умозаключений, обусловленных основными законами формальной логики.
- •1.6. Правильные способы рассуждений, основанные на теории силлогизмов
- •Вопросы для самоконтроля
- •2. Элементы теории множеств
- •2.1. Понятие множества. Способы задания множеств
- •Упражнения
- •2.2. Части множеств
- •2.2.1. Понятие подмножества
- •2.2.2. Множество-степень
- •2.2.3. Понятие о верхней и нижней гранях множеств
- •2.3. Операции над множествами.
- •2.4. Основные свойства операций над множествами
- •2.5. Отношения на множествах
- •2.5.1. Операции над отношениями
- •2.5.2. Основные свойства отношений
- •2.6. Функции как отношения на множествах
- •2.7. Отношения эквивалентности
- •2.8. Отношения порядка
- •Упражнения
- •Парадоксы теории множеств
- •Вопросы для самоконтроля
- •1. Алгебра логики
- •Понятие о простом и сложном высказывании
- •Упражнения
- •Логические операции над высказываниями
- •Упражнения
- •Упражнения
- •1.4. Аксиомы и законы алгебры логики
- •1.4.1. Правила склеивания для элементарных конъюнкций и дизъюнкций
- •Дизъюнкций
- •1.4.3. Правило развёртывания
- •Все ке для двух высказываний
- •Развёртывание элементарной дизъюнкции
- •Упражнения
- •1.5. Функции алгебры логики. Нормальные формы логических функций
- •Общая запись любой логической функции в сндф имеет вид
- •Пример. По заданной таблице истинности составить сндф функций
- •Снкф для выше приведенной таблицы истинности будут иметь вид
- •Упражнения
- •1.6.Минимизация логических функций
- •1.6.1. Расчетный метод минимизации
- •1.6.2. Табличный метод минимизации
- •1.6.3. Расчетно-табличный метод минимизации (метод Квайна)
- •Упражнения
- •1.7. Некоторые применения алгебры логики
- •Упражнения
- •Вопросы для самоконтроля
- •2. Исчисление высказываний
- •2.1. Понятие формулы исчисления высказываний
- •Упражнения
- •2.2. Аксиомы и простейшие правила вывода
- •Система аксиом исчисления высказываний
- •Тогда правило подстановка схематически запишется так
- •2.3. Определение доказуемой формулы
- •Рассмотрим примеры получения доказуемых формул.
- •2.4. Производные правила вывода
- •Упражнения
- •2.5. Определение формулы, выводимой из совокупности формул н
- •2.6. Понятие вывода
- •2.7. Основные правила выводимости
- •2.8. Доказательство некоторых законов логики
- •2.9. Проблемы аксиоматического исчисления высказываний
- •Вопросы для самоконтроля
- •3. Логика предикатов
- •3.1. Понятие предиката
- •3.2. Логические операции над предикатами
- •Упражнения
- •Кванторные операции
- •Упражнения
- •Определение формулы логики предикатов
- •3.5. Равносильные формулы логики предикатов
- •Упражнения
- •3.6. Предварённая нормальная форма
- •Выполнимость и общезначимость формул
- •Упражнения
- •Применение языка логики предикатов в математике и технике
- •Вопросы для самоконтроля
- •4. Основные положения теории алгоритмов
- •4.1. Интуитивное понятие алгоритма
- •4.2. Уточнение понятия алгоритма
- •4.3. Частично-рекурсивные и общерекурсивные функции
- •Упражнения
- •4.4. Машины Тьюринга
- •Упражнения
- •4.5. Понятие о нормальных алгоритмах Маркова
- •4.6. Алгоритмически неразрешимые проблемы
- •4.7. Сложность алгоритмов
- •Вопросы для самоконтроля
- •Ответы и решения
- •Раздел 1
- •Подраздел 1.3
- •Раздел 2
- •Раздел 3.
- •Раздел 4
- •Библиографический список
- •Список сокращений
- •Содержание
1.6.2. Табличный метод минимизации
В этом методе два первых шага как бы объединены и выполняются с помощью специальной таблицы, называемой картой Карно (КК) или картой Карно-Вейча (еще иногда называемой диаграммой). Третий шаг выполняется так же, как и в расчетном методе. В принципе карта Карно является разновидностью табличной записи логической функции, заданной в СНДФ или в СНКФ, т.е. представляет разновидность таблицы истинности.
Для двух переменных КК представляет собой квадрат, разделенный на 4 клетки – по одной клетке на каждый набор переменных. Строки этой карты связываются с переменной , а столбцы – с переменной . Каждая клетка соответствует определенной конституенте, и ей присваивается свой порядковый номер, который представляет собой двоичное число, в разрядах которого записываются цифры (набор), находящиеся слева от клетки и сверху над ней. Фигурные
Рис.1
Рис. 2 Рис. 3
скобки указывают, каким переменным соответствуют строки и столбцы карты (рис.1).
Если при данном наборе, соответствующем номеру клетки, логическая функция равна 1, то единица записывается в эту клетку. Если логическая функция при данном наборе равна 0, то в клетку записывается 0 (или ничего не записывается).
На рис.2 приведена
КК с одной заполненной клеткой, и
соответствующая этой карте логическая
функция будет
.
На рис.3 приведена карта с тремя
заполненными клетками, и ей будет
соответствовать функция
т.е. конституенты, соответствующие
заполненным клеткам в функции, соединяются
дизъюнкцией.
В
случае трех переменных КК содержит 8
клеток, и нумеруются они так, как показано
на рис.4. Номер каждой клетки получается
объединением всех цифр, находящихся
слева от клетки и сверху от нее.
С
Рис. 4
значением всего лишь одного разряда (переменной). Для этих целей используется не обычный двоичный код (тогда 3-й и 4-й столбцы на рис.4 были бы соответственно пронумерованы как 10 и 11), а двоичный отраженный код, первая половина которого получается обычным образом, а вторая половина – зеркальным отражением первой, но не всех ее разрядов, а только младших (правых), а в старшем разряде ставится единица. То есть процесс получения отраженных кодов мы можем представить так:
Для 3-разрядных двоичных чисел двоичный отраженный код формируется следующим образом:
Для четырех переменных КК содержит 16 клеток (рис.5).
Рис. 5
Д
ля
пяти переменных необходимо иметь КК с
32 клетками. Эти 32 клетки можно представить
как 2 карты по 16 клеток или одну карту
на 32 клетки. Одна карта на 32 клетки будет
иметь такую нумерацию строк и столбцов
с учетом использования отраженных
кодов, которая показана на рис.6.
Рис. 6
В карте Карно,
изображенной на рис.6, нумерация клеток
дается в десятичной системе счисления.
Это позволяет производить очень
компактную запись логической функции.
Действительно, при записи логической
функции, можно указать большой знак
дизъюнкции
(применяемый аналогично знаку
или
в обычной алгебре), в скобках после него
перечислить те номера клеток, в которые
должна быть помещена 1. Такую запись
логической функции называют числовой.
Причем число клеток
в КК зависит от числа переменных m
и будет
определяться по максимальному номеру
клетки как
,
где
− ближайшая наибольшая целая часть
,
т.е.
,
а
−
максимальный номер клетки в такой
записи.
Например, если
логическая функция записана в виде
то это значит, что число клеток будет
,
т.е. число переменных будет 4, число
клеток будет
а единицы надо поместить в клетки с
номерами 0,1,3,4,6,9,11. В двоичной системе
счисления эти номера будут иметь вид:
0000,0001,0011,0100,0110,1001,1011. Тогда КК с отображенной
на нее приведенной функцией будет иметь
вид, представленный на рис.7.
Рис. 7
Теперь приведем правила минимизации с помощью КК.
1.
соседних клеток, содержащих 1, и
расположенных по вертикали либо по
горизонтали в виде прямоугольника либо
квадрата (такую совокупность клеток
называют покрытием), соответствуют
одной импликанте, ранг которой
где
− число переменных, меньше ранга
покрываемых конституент на
единиц. Чем больше клеток в покрытии,
тем проще выражаемый этим покрытием
член логической функции − импликанта.
2. Импликанта, соответствующая некоторому покрытию заполненных единицами клеток, содержит символы тех переменных, значения которых совпадают у всех клеток, образующих покрытие. Причем символ берется с отрицанием, если для всех клеток покрытия он принимает значение 0, и без отрицания – в противном случае.
Пример.
Минимизировать логическую функцию
с помощью
КК. Минимизируемая функция будет состоять
из трех переменных, соответствующая ей
КК будет состоять из 8 клеток. Поэтому
КК, с отображенной на нее заданной
функцией в виде помеченных единицами
клеток и выделенных пунктирными линиями
покрытий, приведена на рис.8.
Покрытие 1
Покрытие 2
Рис.8
Следует отметить некоторые особенности работы с покрытиями. Каждое покрытие нужно использовать только один раз. Если КК свернуть в цилиндр вдоль горизонтальной или вертикальной оси, то будет видно, что крайние клетки тоже оказываются соседними и они могут образовывать покрытие. Такой характерный случай покрытий для КК на четыре переменные приведен на рис.9.
Рис. 9
Приведем еще один
пример КК с отображенной на нее логической
функцией, когда единицы находятся в
крайних клетках. Эта функция имеет вид
.
Соответствующая ей КК приведена на
рис.10.
Рис. 10
Недостатком
рассмотренного метода считается то,
что при числе переменных
КК становятся громоздкими и неудобными
для практического применения. Однако,
справедливости ради, нужно отметить,
что сейчас уже имеются разработанные
компьютерные программы, минимизирующие
логические функции с 9 переменными.