Математическая логика и теория алгоритмов. Учебное пособие-1
.pdf
Алгебра высказываний
(P → Q) ˅ (Q → P);
( P → (Q ˄Q )) → P.
12. Докажите:
Если |= F ˄ G, |= F ↔ G, то |= G ↔ F.
Если |= F → G, |= G ˅H , то |= H → F.
|= F ↔ G тогда и только тогда, когда |= (F → G) ˄ (G → F).
13. Докажите, что справедливы следующие логические следования, согласно определению этого понятия:
(P →R ) → Q => (P → Q) ˄ R.
(P ↔ Q) ˅ R => ( P →Q ) ˅ R.
14. Использовав определение этого понятия, выясните, справедливы ли логические следования:
P → Q, P →Q => P ;
(P → Q) → Q, P , Q => P;
P → Q, R → S, P ˄ R => Q ˄ S;
P → Q, R → S, P ˅ R => Q ˅ R;
15. Методом от противного выясните, верны ли следующие логические следования:
F → G, G → H, H => F .
G → F, K → L, G ˅ K => F ˅ L.
16.Андрей или очень переутомился (А), или болен (В). Если он переутомился, то он раздражается (С). Он не раздражается. Следует ли отсюда, что он не болен?
17.Или Анна и Антон одного возраста (А), или Анна старше Антона (В). Если Анна и Антон одного возраста, то Наташа и Антон не одного возраста (С). Если Анна старше Антона, то Антон старше Николая (D). Следует ли отсюда, что либо Наташа и Антон не одного возраста, либо Антон старше Николая?
18.Если я поеду автобусом (А) и автобус опоздает (В), то пропущу назначенное свидание (С). Если я пропущу назначенное свидание и начну огорчаться (D), то мне не следует ехать домой (Е). Если я не получу работу (Р), то начну огорчаться и мне следует ехать домой. Следует ли отсюда, что если я поеду автобусом и автобус опоздает, то я получу работу?
19.Приведите равносильными преобразованиями каждую из следующих формул к дизъюнктивной и конъюнктивной нормальным формам:
(X ↔ Y) → (X ˄ Z).
(X Z ) ˄ (X → Y). ( X ˄Y ) ˅ (X ↔ Z).
21
Глава 1
20.Использовав СДН-форму, найдите формулу, принимающую значение 1 на следующих наборах значений переменных и только на них:
F(0, 0) = F(1, 1) = 1;
F(1, 0, 0) = F(0, 1, 0) = F(0, 0, 1) = 1.
21.Использовав СКН-форму, найдите формулу, принимающую значение 0 на следующих наборах значений переменных и только на них:
F(1, 0, 0) = F(1, 0, 1) = 0; F(1, 0, 0, 0) = F(0, 1, 1, 1) = 0;
22.Для каждой из следующих формул алгебры высказываний с помощью ее таблицы истинности найдите СДНФ и СКНФ:
(X ↔ Z) →(X ˄Y );
((X ˅ Y) → Z) ↔X .
23. Сколько существует неравносильных между собой формул G(P, Q, R) оттрехпеременных, являющихсялогическимиследствиямиформулы:
(P ↔ Q) ˄R ;
(P ˅ R) → (P ˄ Q).
24*. Пусть A и B – формулы с тесными отрицаниями и A*, B* – формулы, двойственные к A и B соответственно (A* получается из A заменой ˄ на˅, ˅на ˄). Доказать, что из A = B следует A* = B* (закон двойственности).
25*. Постройте формулу от трех переменных, которая принимает такое же значение, как и большинство (меньшинство) переменных.
26*. По СКНФ формулы A построить:
СДНФ A*, где A* – двойственная к A (см. задачу 24); СКНФ формулы A;
СДНФ формулы A.
27*. Пусть формула A не содержит других связок, кроме ↔. Доказать, что A является тождественно истинной тогда и только тогда, когда каждая переменная входит в A четное число раз.
22
Булевы функции
ГЛАВА 2. БУЛЕВЫ ФУНКЦИИ
2.1. Определение и свойства булевых функций
Определение. Булевой функцией от n переменных x1, x2, …, xn называется отображение f множества {0, 1}n в множество {0, 1}:
f: {0, 1}n → {0, 1}.
Замечание. Множество {0, 1} в этом определении можно заменить любым другим двухэлементным множеством {a, b}.
Будем обозначать через P2 (n) множество всех булевых функций n переменных. Из комбинаторного правила произведения следует теорема.
Теорема. Мощность множества P2 (n) равна 22n.
Рассмотрим подробнее булевы функции одной и двух переменных. 1. Функцийоднойпеременной4 (221), иихудобнопривестивтаблице:
x |
f1 |
f2 |
f3 |
f4 |
||
0 |
0 |
0 |
1 |
1 |
||
1 |
0 |
1 |
0 |
1 |
||
Обозначение |
0 |
x |
|
|
|
1 |
|
x |
|||||
В последней строке таблицы x читается как «отрицание x».
2. Функций двух переменных 16 (222), и их тоже приведем в таблице:
x |
y |
g1 |
g2 |
|
g3 |
g4 |
|
g5 |
g6 |
g7 |
g8 |
||||||
0 |
0 |
0 |
0 |
0 |
|
0 |
|
0 |
|
0 |
0 |
0 |
|||||
0 |
1 |
0 |
0 |
0 |
|
0 |
|
1 |
|
1 |
1 |
1 |
|||||
1 |
0 |
0 |
0 |
1 |
|
1 |
|
0 |
|
0 |
1 |
1 |
|||||
1 |
1 |
0 |
1 |
0 |
|
1 |
|
0 |
|
1 |
0 |
1 |
|||||
|
|
0 |
x y |
|
|
|
|
|
x |
|
|
|
|
|
y |
x y |
x ˅ y |
|
|
|
x y |
y x |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
x |
y |
g9 |
g10 |
|
g11 |
g12 |
|
g13 |
g14 |
g15 |
g16 |
||||||
0 |
0 |
1 |
1 |
1 |
|
1 |
|
1 |
|
1 |
1 |
1 |
|||||
0 |
1 |
0 |
0 |
0 |
|
0 |
|
1 |
|
1 |
1 |
1 |
|||||
1 |
0 |
0 |
0 |
1 |
|
1 |
|
0 |
|
0 |
1 |
1 |
|||||
1 |
1 |
0 |
1 |
0 |
|
1 |
|
0 |
|
1 |
0 |
1 |
|||||
|
|
x ↓ y |
x ↔ y |
|
|
|
|
y → x |
|
|
|
|
|
x → y |
x | y |
1 |
|
|
|
|
|
y |
|
|
|
x |
|
||||||||
23
Глава 2
В последней строке таблицы, так же как и для функций одной переменной, приведены обозначения функций g1 (x, y)–g16 (x, y). Некоторые из них носят специальные названия:
g7 (x, y) = x y – сумма по модулю 2 или сумма Жегалкина; g9 (x, y) = x ↓ y = x y – стрелка Пирса;
g15 (x, y) = x | y = xy – штрих Шеффера.
Равенство булевых функций здесь и далее понимается как обычно: (f = g) ↔ ( (a, b)) {0, 1} (f (a, b) = g (a, b))).
Замечание. Иногда булевыми функциями называют только «основные» функции – дизъюнкцию, конъюнкцию и отрицание (x ˅ y, x ˄ y, x ). В этом случае остальные функции получают суперпозицией «основных», например:
x → y = x ˅ y, x y = x y (x y)( y x)
Свойства булевых функций отражают соответствующие свойства операций алгебры высказываний. Отметим наиболее важные из них.
1. Свойства дизъюнкции:
x ˅ y = y ˅ x – коммутативность;
(x ˅ y) ˅ z = x ˅ (y ˅ z) – ассоциативность;
x ˅(y z) = (x ˅y) (x ˅z) – дистрибутивностьотносительноконъюнкции; x ˅ 1 = 1, x ˅ 0 = x, x ˅ x = 1.
2. Свойства конъюнкции:
x ˄ y = x ˄ y – коммутативность;
(x ˄ y) ˄ z = x ˄ (y ˄ z) – ассоциативность;
x ˄ (y ˅ z) = (x ˄ y) ˅ (x ˄ z) – дистрибутивность относительно дизъюнкции;
x ˄ 1 = x, x ˄ 0 = 0, x ˄ x = 0. 3. Свойства импликации:
x → y = y → x, x → x = 1,
x →x = x , x → x = x, 1 → x = x, x → 1 = 1, x → 0 = x , 0 → x = 1,
4. Свойства эквиваленции:
x ↔ y = y ↔ x – коммутативность;
(x ↔ y) ↔ z = x ↔ (y ↔ z) – ассоциативность; x ↔ x = 1, x ↔x = 0.
1 ↔ x = x, 0 ↔ x = x .
24
Булевы функции
5. Свойства отрицания: x y x y , x y x y ;
x = x, 1 = 0, 0 = 1.
2.2. Нормальные формы булевых функций
Для булевых функций, аналогично тому как это определялось для формул алгебры высказываний, определяются дизъюнктивные и конъюнктивные нормальные формы – ДНФ, СДНФ, КНФ, СКНФ. Алгоритмы построения этих форм повторяют аналогичные алгоритмы для формул алгебры высказываний и приводить их здесь не будем.
Теорема (о СДНФ). Любая булева функция, не равная нулю, представляется в виде
f (x1, x2 , , xn ) |
|
(x1 1 x2 2 xn n ). |
||||||
|
f ( 1, 2 , , n ) 1 |
|||||||
Теорема (о СКНФ). Любая булева функция, не равная единице, |
||||||||
представляется в виде |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f (x1, x2 , , xn ) |
(x1 1 |
x2 2 xn n ). |
||||||
|
f ( 1, 2 , , n ) 0 |
|||||||
Пример. Найти СДНФ и СКНФ функции, заданной таблицей.
x |
y |
z |
f (x, y, z) |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
Решение.
f(x, y, z) x yz xyz x yz x yz
(x y z)(x y z)(x y z)(x y z).
25
Глава 2
Упражнения.
1.Построить СДНФи СКНФданной функции: f (x, y, z) = 1 только для аргументов (1,1,0), (1,1,1), (0,1,1), (1,0,1).
2.Показать, что f (x, y, z) = x y ˅ x z ˅ y z.
2.3. Классы функций, сохраняющих постоянные (P0, P1)
Далее рассмотрим пять классов булевых функций, имеющих особую роль в теории. Общим свойством этих классов является свойство их замкнутости.
Определение. Замыканием множества функций Σ называется множество [Σ] всех функций, полученных суперпозициями функций системы Σ.
Определение. МножествофункцийΣназываетсязамкнутым, еслиего замыкание совпадает с самим множеством: [Σ] = Σ.
Определение. Говорят, что функция f (x1, x2, …, xn) сохраняет 0, если
f (0, 0, …, 0) = 0 (f P0).
Определение. Говорят, что функция f (x1, x2, …, xn) сохраняет 1, если
f (1, 1, …, 1) = 1 (f P1).
Примеры.
1.Дизъюнкция сохраняет 0 и сохраняет 1, так как 0 ˅ 0 = 0 и 1 ˅ 1 = 1.
2.Импликация не сохраняет 0 и сохраняет 1, так как 0 → 0 = 1 и 1 → 1 = 1.
Теорема. Классы функций P0 и P1 замкнуты.
Доказательство: Пусть
g (x1, x2, …, xn), f1 (x1, x2, …, xm), …, fn (x1, x2, …, xm) P0.
Построим суперпозицию этих функций:
F (x1, x2, …, xm) = g (f1 (x1, x2, …, xm), …, fn (x1, x2, …, xm)),
и вычислим, например, ее значение на нулевом наборе:
F (0, 0, …, 0) = g (f1 (0, 0, …, 0), …, fn (0, 0, …, 0)) = g (0, 0, …, 0) = 0.
Это означает, что [P0] P0. Обратное вложение P0 [P0] очевидно. Аналогично доказывается замкнутость класса P1 функций, сохра-
няющих единицу.
2.4. Класс самодвойственных функций (S)
Определение. Функция f* (x1, x2, …, xn) = f (x1, x2 , , xn ) называется двойственной к функции f (x1, x2, …, xn).
26
Булевы функции
Определение. Функция f (x1, x2, …, xn) называется самодвойственной, если она равна двойственной ей функции
f* (x1, x2, …, xn) = f (x1, x2, …, xn).
Обозначим S – класс самодвойственных функций.
Теорема. Класс самодвойственных функций является замкнутым. Доказательство: Докажем вложение [S] S.
Пусть
g (x1, x2, …, xn), f1 (x1, x2, …, xm), …, fn (x1, x2, …, xm) S.
Построим суперпозицию этих функций
F (x1, x2, …, xm) = g (f1 (x1, x2, …, xm), …, fn (x1, x2, …, xm))
и рассмотрим двойственную к ней функцию:
F*(x1, x2 , , xm ) g( f1(x1, x2 , , xm ), , fn (x1, x2 , , xm ))
g( f1(x1, x2 , , xm ), , fn (x1, x2 , , xm )
=g (f1 (x1, x2, …, xm), …, fn (x1, x2, …, xm)) = F (x1, x2, …, xm).
Это означает, что [S] S. Обратное вложение также очевидно, и теорема доказана.
Для решения вопроса о принадлежности функции классу S можно идти двумя путями:
1. По определению, то есть проверить равенство f* (x1, x2, …, xn) = f (x1, x2, …, xn).
2. Использовать утверждение, приведенное ниже.
Утверждение. Если таблица значений функции антисимметрична относительно линии центрального разреза, то данная функция самодвойственна.
Поясним сказанное на примерах.
Является ли функция f (x, y, z) = x y → z самодвойственной?
Решение.
1. f *(x, y, z) x y z x y z (x y) z x yz .
Полученное выражение представляет собой СДНФ. Сравним полученное выражение с функцией f (x, y, z):
f (x, y, z) = x y → z = xy ˅ z = x ˅ y ˅ z
27
Глава 2
Полученное выражение представляет собой СКНФ, в которой один дизъюнкт, следовательно, в СДНФ данной функции семь компонент. В то же время в СДНФ двойственной функции одна компонента. Это означает,
что
f* (x, y, z) ≠ f (x, y, z)
иисследуемая функция не является самодвойственной.
2.Построим таблицу значений данной функции:
x |
y |
z |
x y |
x y → z |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
Она не является антисимметричной, значит, функция не является самодвойственной (f* (x, y, z) ≠ f (x, y, z)). Действительно, например:
f (0,1,1) = 1, f* (0,1,1) = f (0,1,1) f (1,0,0) 1 0.
Из утверждения, приведенного выше, следует, что самодвойственная функция однозначно определяется половиной своих наборов в таблице значений (верхней или нижней). Отсюда становится очевидной следующая теорема.
Теорема. Мощность множества S самодвойственных функций от n
переменных равна 22n–1.
Прежде чем перейти к следующему классу функций, рассмотрим еще некоторые понятия.
2.5. Алгебра и полином Жегалкина
Алгебра {0,1}, ˄, , 0,1 называется алгеброй Жегалкина. Из определения функций x y, x ˅ y, x ˄ y, x следуют свойства алгебры Жегалкина:
1)x y = y x – коммутативность суммы Жегалкина;
2)(x y) z = x (y z) – ассоциативность суммы Жегалкина;
28
Булевы функции
3)x (y z) = xy xz – дистрибутивность конъюнкции относительно суммы Жегалкина;
4)x x = 0;
5)x = x 1;
6)x 0 = x;
7)x ˅ y = xy x y;
8)x y = x y ˅x y – СДНФ суммы Жегалкина.
Важную роль в алгебре Жегалкина и вопросах полноты систем булевых функций играет так называемый полином Жегалкина.
Определение. Полиномом Жегалкина называется полином, в котором умножение заменено конъюнкцией, сложение – суммой Жегалкина, а коэффициенты – это элементы множества {0,1}.
Пример. P (x, y) = xy yz z 1 – полиномЖегалкинаотпеременных
x, y, z.
Теорема. Для любой булевой функции существует единственный равный ей полином Жегалкина.
Алгоритм построения полинома Жегалкина:
1.Построить ДНФ данной функции.
2.Выразить дизъюнкции через сумму Жегалкина по формуле
x˅ y = xy x y.
3.Выразить отрицание через сумму Жегалкина по формуле
x= x 1.
4.Раскрыть скобки, использовав дистрибутивность конъюнкции относительно суммы Жегалкина:
x(y z) = xy xz.
5.Привести подобные: x x = 0.
Пример. Построить полином Жегалкина функции f (x, y) = x → y.
Решение.
x → y = x ˅ y = x y x y =
= (x 1) y (x 1) y = xy y x y 1 = xy x 1.
Пример. Построить полином Жегалкина функции f (x, y, z) = x ˅ y ˅ z.
Решение.
f (x, y, z) = x ˅ y ˅ z = (x ˅ y) ˅ z = (xy x y) ˅ z =
= (xy x y) z (xy x y) z = xyz xz yz xy x y z.
29
Глава 2
2.6. Класс линейных функций (L)
Определение. Функция f (x1, x2, …, xn) называется линейной, если её полином Жегалкина имеет вид
Pf (x1, x2, …, xn) = a1 x1 a2 x2 … an xn an+1,
где ai {0, 1} для i = 1, 2, …, n + 1.
Теорема. Класс линейных функций является замкнутым.
Доказательство: Пусть
g (x1, x2, …, xn), f1 (x1, x2, …, xm), …, fn (x1, x2, …, xm) L. g (x1, x2, …, xn) = a1 x1 a2 x2 … an xn an+1,
f1 (x1, x2, …, xm) = b1 x1 b2 x2 … bm xm bm+1,
…
fn (x1, x2, …, xm) = c1 x1 c2 x2 … cm xm cm+1.
Построим суперпозицию этих функций:
F (x1, x2, …, xm) = g (f1 (x1, x2, …, xm), …, fn (x1, x2, …, xm)) = = a1 (b1 x1 b2 x2 … bm xm bm+1) …
an (c1 x1 c2 x2 … cm xm cm+1) an+1 =
= (a1b1 … an c1) x1 … (a1bm … an cm) xm
(a1 bm+1 … an cm+1 an+1).
Очевидно, что данная функция линейна и теорема доказана. Следующая теорема вытекает из определения линейных функций
и известного комбинаторного правила произведения.
Теорема. Мощность множества L(n) линейных функций от n переменных равна 2n+1.
Лемма (о нелинейных функциях). Из всякой нелинейной функции с помощью подстановок функций 0 и 1 вместо некоторых переменных и отрицания можно получить дизъюнкцию и конъюнкцию.
Доказательство: Пусть f (x1, x2, …, xn) L, тогда ее полином Же-
галкина Pf (x1, x2, …, xn) содержит конъюнкции вида xi |
xi |
xi , где k ≥ 2. |
1 |
2 |
k |
Выбираем в полиноме слагаемое, содержащее наименьшее количество (две или более) переменных в конъюнкции. Пусть для определенности это и будет xi1 xi2 xik . Далее поступаем так:
30
