- •Оглавление
- •Предисловие
- •1. Теоретико‑множественные основания дисциплины
- •1.1. Понятия и аксиомы теории множеств
- •1.2. Декартовы произведения, отношения и отношение эквивалентности
- •1.3. Понятия образа, прообраза, функции и отображения на конечном множестве. Аксиома выделения.
- •1.4. Аксиомы степени и бесконечности. Мощности и кардинальные числа множеств
- •1.5. Счетные и континуальные множества
- •1.6. Ординалы и трансфиниты. Аксиома выбора и континуум‑гипотеза
- •2. Основы математической логики
- •2.1. Высказывания и функции на высказываниях
- •2.2. Операции математической логики
- •2.3. Понятие формулы и свойства операций
- •2.4. Разложения булевых функций. Принцип двойственности. Совершенные нормальные формы.
- •2.5. Понятие полноты системы булевых функций
- •2.5. Исчисление предикатов
- •2.6. Введение в методы теории доказательств
- •1 Если X a,
- •0 Если X a.
- •1 Если X a,
- •0 Если X a.
- •3. Комбинаторика
- •3.1. Размещения
- •3.2. Размещения без повторений
- •3.3. Перестановки, подстановки и их свойства
- •3.4. Сочетания, структура соединений
- •3.5. Свойства биномиальных коэффициентов
- •Структура соединений
- •3.6. Понятие производящей функции
- •3.7. Соединения с повторениями
- •3.8. Разбиения множеств
- •3.9. Разбиения чисел
- •3.10. Композиции чисел
- •4. Основы теории графов
- •4.1. Основные понятия и определения
- •4.2. Графы и бинарные отношения
- •4.3. Понятие изоморфизма и изоморфизм плоских графов
- •4.4. Степени вершин графа
- •4.5. Представление графов матрицами
- •4.6. Представление графов списками инцидентности. Оценка пространственной сложности алгоритмов.
- •4.7. Маршруты, цепи, циклы и связность
- •4.7. Эйлеровы циклы и цепи
- •4.9. Гамильтоновы циклы. Оценка временной сложности алгоритмов
- •4.10. Деревья
- •4.11. Раскраска вершин и теорема Шеннона об информационной емкости графа
- •4.12. Раскраска ребер графа и теоремы о хроматическом классе
- •Ответы и решения
- •Список литературы
2.3. Понятие формулы и свойства операций
Как и в элементарной алгебре, в математической логике из элементарных операций можно строить формулы.
Например, x1 x2 x1 x2 — формула.
Ясно, что какой бы ни была сложной формула, содержащая n переменных, для нее всегда найдется единственная соответствующая ей функция. Это связано с тем, что математическая логика располагает всеми функциями из конечного множества попарно различных функций. Ниже будет показано, что одной и той же функции можно поставить в соответствие несколько различных формул.
Две различные формулы называются эквивалентными, если соответствующие им функции равны.
Из единственности построения функций следует, что формулы эквивалентны, если их таблицы истинности совпадают.
Представляет интерес исследование вопроса о тождественных преобразованиях формул. Для того чтобы выполнять такие преобразования необходимо предварительно рассмотреть свойства операций математической логики.
Обозначим x1 x2 любую из операций , или . Существенно только, чтобы символ «» имел в тождестве везде один и тот же смысл. В этом случае непосредственно проверяется, что имеют место свойства 1) и 2):
1) ассоциативность
((x1 x2) x3) = (x1 ( x2 x3));
2) коммутативность
(x1 x2) = (x2 x1);
Для дизъюнкции и конъюнкции также выполняются дистрибутивные законы:
((x1 x2) x3) = (x1 x3) ( x2 x3));
((x1 x2) x3) = (x1 x3) ( x2 x3));
Имеет место закон двойного отрицания
x = x.
Кроме того, выполняются следующие свойства операций математической логики.
Законы де Моргана:
(x1 x2 ) = ( x1 x2) ;
(x1 x2 ) = ( x1 x2).
Законы идемпотентности:
x x = x ; x x = x.
Законы поглощения
x 0 = x ; x 1 = 1;
x 0 = 0; x 1 = x.
Закон исключенного третьего
x x = 1.
Закон противоречия
x x = 0.
Закон силлогизма
( ( x у) (у z)) (x z).
При тождественных преобразованиях формул используются приоритеты операций. Считается, что операция сильнее, чем . Поэтому, если нет скобок, то вначале выполняется , а затем . Остальные бинарные операции имеют тот же приоритет, что и .
2.4. Разложения булевых функций. Принцип двойственности. Совершенные нормальные формы.
Рассмотрим разложения булевых функций по дизъюнктивным и конъюнктивным наборам переменных.
Введем обозначения
xσ = x ∙ x ∙,
где — параметр, равный либо 0, либо 1 и используется обычное умножение. Очевидно, что
x при = 0,
x =
x при = 1.
Такое представление выражает следующий факт: x = 1 тогда и только тогда, когда x = .
Введем также следующие обозначения:
(i1.i2….in) xi = x1 x2 … xn;
&(i1,i2,…in) xi = x1 & x2 &… &xn.
Теорема 2.1 Каждую функцию математической логики можно представить в виде
F(x1, x2, …,xn) = (1, 2,…,n) x11 & x22 &… & xnn &
& F(1, 2, …, n), (2.1)
где дизъюнкция берется по всевозможным наборам значений переменных x1, x2, …, xn.
Доказательство. Рассмотрим произвольный набор значений 1, 2, …, n и покажем, что левые и правые части (2.1) принимают на нем и только на нем одно и тоже значение. Левая часть (2.1) дает F(1, 2, …, n). Соответственно правая :
(1,2,…,n) 11 & 22 &… & nn & F(1, 2,…, n).
Конъюнкция 11 & 22 &… & nn = 1 тогда и только тогда, когда 1 = 1, 2 = 2, …,n = n. Следовательно, на этом и только на этом наборе 1, 2,…, n имеет место тождество
11& 22 &…& 2n & F(1, 2, …, n) = F(1, 2, …, n).
При этом остальные дизъюнктивные члены в (2.1) обращаются в нуль.
Разложение (2.1) называется совершенной дизъюнктивной нормальной формой (С.Д.Н.Ф.), если оно берется по всем наборам 1, 2, …,n , для которых выполнено
F(1, 2, …,n) = 1.
В силу этого определения С.Д.Н.Ф. записывается в виде
F(x1, x2, …, xn) = (1, 2,…, n) x11 &x2 2 & … & xnn.
Функция [F(x1, x2, …, xn)]*, равная F(x1, x2, …, xn) называется двойственнной функцией по отношению к функции F(x1, x2, …, xn).
Для получения двойственной функции достаточно инвертировать в ее таблице значения переменных и значение самой функции. При этом таблица значений функции «перевернется» по отношению к исходной так, как показано на примере в таблице 2.3.
Таблица 2.3 — Пример двойственной функции
x1 |
x2 |
F(x1,x2) |
x1 |
x2 |
[F(x1,x2)]* |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
Очевидно, если вернуться к старому набору переменных, то получим
[F(x1, x2, …, xn)]* = F* (x1, x2, …, xn).
Из определения двойственности следует, что
F** = (F*)* = F.
Обозначим через x1, x2, …, xn все различные символы переменных, встречающиеся в множествах
(x11, x21, …, xn1), (x12, x22, …, xn2), …, (x1m, x2m, …, xnm).
Следующая теорема определяет принцип двойственности для булевых функций.
Теорема 2.2 Если
Φ(x1, x2, …, xn) = F(F1(x11, x21, …, xn1), F2(x12, x22, …, xn2), …, Fm(x1m, x2m, …, xnm)),
то Φ*(x1, x2, …, xn) =F*( F*1(x1, x2, …, xn), F*2(x12, x22, …, xn2), …, F*m(x1m, x2m, …, xnm)).
Доказательство.
Φ*(x1, x2, …, xn) = Φ(x1, x2, …, xn) =
= F(f1(x11, x21, …, xn1),F2(x12, x22, …, xn2), …,Fm(x1m, x2m, …, xnm)) =
= F(F1*(x11, x21, …, xn1), F2*(x12, x22, …, xn2), …, Fm* (x1m, x2m, …, xnm)) =
= F*(F*1(x1, x2, …, xn), F*2(x12, x22, …, xn2), …, F*m(x1m, x2m, …, xnm)),
что и требовалось.
Принцип двойственности позволяет упростить тождественные преобразования логических формул.
Непосредственно проверяется, что:
Функция x двойственна x;
Функция x двойственна x.;
Функция 0 двойственна1;
Функция 1 двойственна 0;
Функция x1 x2 двойственна x1 & x2;
Функция x1 & x2 двойственна x1 x2 ;
Рассмотрим примеры.
F(x1, x2) = x1 & x2 x1 & x2 ; F*(x1, x2) = x1 x2 & x1 x2 ;
F(x1, x2) = (x1 & x2) ; F*(x1, x2) = x1 x2;
F(x1, x2) = (x1 x2) ; F*(x1, x2) = x1 & x2;
Используя принцип двойственности, можно записать выражение, двойственное С.Д.Н.Ф., в свою очередь, полученной к двойственной функции F* (x1, x2, …, xn). Такое выражение получило название С.К.Н.Ф. — совершенной конъюнктивной нормальной формы. Рассмотрим его подробнее.
По определению С.Д.Н.Ф. имеем
F* (x1, x2, …, xn) = (1, 2,…, n) x11 & x2 2 & … & xnn.
Применим к этой функции принцип двойственности:
F**(x1, x2, …, xn) = &(1, 2,…, n) x11 x2 2 … xnn.
Левая часть есть F(x1, x2, …, xn), а правую можно преобразовать, учитывая, что конъюнкции берутся по всем наборам значений переменных, для которых F*(1, 2, …, n) = 1. Легко заметить, что значения F(x1, x2, …, xn) не изменятся, если взять соответствующие конъюнкции по таким наборам значений переменных, для которых, в силу принципа двойственности, F(1, 2, …, n) = 0. Заменяя в этом выражении 1 на 1 и выполнив обратную замену во всех дизъюнкциях, окончательно получим
F(x1, x2, …, xn) = &(1, 2,…, n) x11 x2 2 … xnn,
где дизъюнкции берутся по всем тем наборам значений переменных, для которых F(1, 2, …, n) = 0.
Пример. Построить С.К.Н.Ф. для функции x1 → x2.
Имеем x1 → x2 = x11 x20 = x1 x2.