Е.В.Просолупов 42. Булева алгебра. Функции алгебры логики 1 Булевы функции Будем рассматривать булевы функции — функции, аргументы и значения которых принимают значения истина и ложь. Истину и ложь будем обозначать соответственно 1 и 0. Таким образом функция n аргументов f есть f : {0, 1} × {0, 1} × ... × {0, 1} → {0, 1}. | {z } n Аргументы этих функций будем называть логическими переменными и обозначать буквами x, y и z, возможно с индексами. Множество всех булевых функций (функций алгебры логики) будем обозначать P2 . Пример 1.1 . Табличное задание функции f : 23 x 0 0 0 0 1 1 1 1 y 0 0 1 1 0 0 1 1 z 0 1 0 1 0 1 0 1 f (x, y, z) 1 0 1 0 0 1 0 1 Всего существует 23 различных наборов значений трех переменных. Если их нумеровать от 0 до 23 − 1, то набор с номером i оказывается представлением числа i в двоичной системе счисления. Всего различных 3 функций от 3-х аргументов — 22 1 В общем случае число строк в таблице для функции от n аргументов n равно 2n . Число различных булевых функций от n аргуменов — 22 . Определение 1.1 . Будем говорить, что функция f (x1 , x2 , ..., xn ) не зависит существенно от xn (xn — несущественная переменная функции f (x1 , x2 , ..., xn )), если на любых значений α1 , α2 , ..., αn−1 ∈ {0, 1} выполняется равенство f (α1 , α2 , ..., αn−1 , 0) = f (α1 , α2 , ..., αn−1 , 1). Переменные функции f , которые не являются несущественными, называют существенными переменными и говорят, что функция f существенно от них зависит. Пример 1.2 . Функция f из примера 1.1 не зависит существенно от переменной y. Определение 1.2 . Будем говорить, что две функции f (x1 , x2 , ..., xk ) и g(x1 , x2 , ..., xl ) равны, если после удаления всех несущественных переменных получаются функции с одинаковыми таблицами. В таком случае будем писать f = g. 2 Формулы Выберем некоторую сисстему функций из P2 : P = {f1 , f2 , ..., fk } ⊆ P2 , k ≥ 1. Назавем функции из системы P элементарными функциями. Тогда формула над {f1 , f2 , ..., fk } определяется рекурсивно: Определение 2.1 . 1. Если f (x1 , ..., xn ) ∈ P, то f (x1 , ..., xn ) — формула. 2. Если f (x1 , ..., xn ) ∈ P и U1 , U2 , ..., Un — формулы или логические пременные, то f (U1 , ..., Un ) — формула. Замечание 2.1 . Мы определили формулу над P. Формула всегда мыслится в связи с каким-то указанным множеством элементарных функций. Каждой функции можно однозначно сопоставить функцию: 1. Если U = f (x1 , ..., xn ) ∈ P, то формуле U сопоставляется функция fU = f (x1 , ..., xn ). 2 2. Пусть U = f (U1 , ..., Un ), где f (x1 , ..., xn ) ∈ P и U1 , U2 , ..., Un — формулы или логические пременные. Тогда fU = f (fU1 , ..., fUn ), где fUi — функция, сопоставленная формуле Ui , если Ui — формула, и fUi = xi , если Ui = xi — логическая переменная. Определение 2.2 . Будем говорить, что формулы U и B эквивалентны и писать U = B, если fU = fB с точностью до несущественных переменных. Рассмотрим основные функции, используемые в качестве элементарных функций в алгебре логики. Всего существует четыре различные функции от одной переменной: тождественный ноль — f (x) = 0; тождественная единица — f (x) = 1; тождественная функция или тождественный x — f (x) = x; отрицание x или "не x" — f (x) = ¬x, так же обозначается x. x 0 1 x ¬x 0 0 1 0 1 1 0 1 1 0 Из них тождественный ноль и тождественная единица не зависят существенно от x. То есть фактически это две функции без аргументов — константы: f = 0 и f = 1. Рассмотрим основные булевы функции от двух переменных. x y x ∨ y x ∧ y x ⊕ y x ⊃ y x ≡ y x|y x ↓ y 0 0 0 0 0 1 1 1 1 1 0 1 1 0 1 0 0 1 1 0 1 0 1 0 0 1 0 1 1 1 1 0 1 1 0 0 f (x, y) = x ∨ y — дизъюнкция, логическое "или". f (x, y) = x ∧ y — конъюнкция, логическое "и", логическое умножение. Также можно использовать обозначения x&y или xy. f (x, y) = x ⊕ y — сложение по модулю два, логическое исключающее "или". Также можно использовать обозначение x + y. f (x, y) = x ⊃ y — импликация, "если, то". Также можно использовать обозначение x → y. 3 f (x, y) = x ≡ y — эквивалентность. Также можно использовать обозначение x ∼ y. f (x, y) = x | y — штрих Шеффера. f (x, y) = x ↓ y — стрелка Пирса. Всего, как мы помним, существует 16 различных функций от двух переменных. Мы выбрали 7, существенно зависящих от обоих переменных и имеющих наибольшее значение. Добавив к ним функции от одной переменной и константы (функции от 0 переменных) получим систему элементарных функций P = {0, 1, x, x, x ∨ y, xy, x ⊕ y, x ⊃ y, x ≡ y, x|y, x ↓ y}. Указанные функции будем теперь также называть операциями. Пример 2.1 . Рассмотрим пример формулы над P : U = (((xy) ∨ (xz)) ∨ (xz)). В этой записи слишком много скобок. Чтобы облегчить чтение и запись формул можно установить приоритеты выполнения операций. Будем считать, что наивысший приоритет имеют функции от одной переменной. Из функций от двух переменных наивысший приоритет будет иметь коньюнкция — ∧. Все остальные операции имеют одинаковый приоритет. Кроме того можно убедиться, что операции ∧, ∨, ⊕, ≡ являются ассоциативными. Таким образом, вместо x ◦ (y ◦ z) или (x ◦ y) ◦ z можно писать x ◦ y ◦ z, если ◦ ∈ {∧, ∨, ⊕, ≡}. Операции ⊃, |, ↓ не являются ассоциативными. Пример 2.2 . С учетом указанных договоренностей, формула из примера 2.1 примет вид: U = xy ∨ xz ∨ xz. 3 Основные тождества 1. Коммутативность: x ◦ y = y ◦ x, если ◦ ∈ {∧, ∨, ⊕, ≡, |, ↓}. 4 2. Ассоциативность: x ◦ (y ◦ z) = (x ◦ y) ◦ z, если ◦ ∈ {∧, ∨, ⊕, ≡}. Мы уже указывали на это свойство раньше. 3. Правила де Моргана: x ∨ y = x ∨ y, x ∨ y = x ∧ y. 4. Правила поглощения: x ∨ xy = x, x(x ∨ y) = x. 5. Дистрибутивность: x(y ∨ z) = xy ∨ xz — дистрибутивность ∧ относительно ∨, x ∨ yz = (x ∨ y)(x ∨ z) — дистрибутивность ∨ относительно ∧, x(y ⊕ z) = xy ⊕ xz — дистрибутивность ∧ относительно ⊕. 6. Формулы расщепления: x = xy ∧ xy, x = (x ∧ y)(x ∧ y). 7. 0 = xx = x ∧ 0 = x ⊕ x, 1 = x ∨ x = x ∨ 1 = x ≡ x, x = ¬¬x = x ∨ x = xx = x ∧ 1 = x ∨ 0. 8. x = x ⊕ 1, x ≡ y = (x ⊕ y) ⊕ 1, x ⊃ y = x ∨ y = xy ⊕ x ⊕ 1, x ↓ y = x ∧ y. Используя эти тождества можно выполнять преобразования формул, получая им эквивалентные. Пример 3.1 . Рассмотрим формулу U = (y ⊃ x)∨(x⊕1)∨y. Проведем преобразования, используя известные тождества. (y ⊃ x) ∨ (x ⊕ 1) ∨ y = (y ∨ x) ∨ (x) ∨ y = y ∨ x ∨ x ∨ y = 1 ∨ 1 = 1. Таким образом, формула U задает тождественно истинную функцию. Очевидно, что формула B = U = (y ⊃ x) ∨ (x ⊕ 1) ∨ y = 1 = 0, то есть B задает тождественно ложную функцию. Определение 3.1 . Формула, задающая тождественно истинную функцию, называется тавталогией. Определение 3.2 . Формула, задающая тождественно ложную функцию, называется противоречием. 5 Определение 3.3 . Формула называется выполнимой, если для нее существует набор аргументов, на котором она принимает значение 1. 4 Дизъюнктивная нормальная форма Определение 4.1 . Введем следующее обозначение: x, σ = 1, xσ = x, σ = 0. Также будем говорить x в степени σ, имея в виду запись xσ определенную выше. Утверждение 4.1 . Пусть f (x1 , ..., xn ) ∈ P2 и f 6= 0. Тогда _ f (x1 , ..., xn ) = xσ1 1 · · · xσnn . (1) (σ1 ,...,σn ) f (σ1 ,...,σn )=1 Замечание 4.1 . Здесь и далее запись "f 6= 0" понимается в смысле эквивалентности формул. То есть запись "f 6= 0" читается "f не является тождественно ложной функцией", а запись "f 6= 1" — "f не является тождественно истинной функцией". σ σ σi Определение 4.2 . Формула вида xi1i1 xi2i2 · · · xik k , где xij — логическая переменная, σij — логическая константа, i1 < i2 < ... < ik , называется конъюнктом. Определение 4.3 . Если f (x1 , ..., xn ) представлена в виде f (x1 , ..., xn ) = K1 ∨ K2 ∨ ... ∨ Ks где K1 , K2 ,..., Ks — различные конъюнкты, то говорят, что f представлена в дизъюнктивной нормальной форме (ДНФ). Если в каждый Ki входят все переменные x1 , ..., xn , то говорят, что f представлена в совершенной дизъюнктивной нормальной форме (СДНФ). 6 Утверждение 4.2 . Пусть f (x1 , ..., xn ) ∈ P2 . Если f 6= 0, то она представима в виде СДНФ, причем единственным образом (с точностью до перестановки конъюнктов). Замечание 4.2 . Из утверждения 4.1 мы получили формулу (1), которую удобно использовать для построения СДНФ для функции f 6= 0. Теперь для построения СДНФ согласно формуле (1) необходимо выбрать каждый набор (σ1 , ..., σn ), для которого f (σ1 , ..., σn ) = 1, и сопоставить ему коньюнкт xσ1 1 · · · xσnn совершенной дизъюнктивной нормальной формы. Пример 4.1 . Рассмотрим функцию f (x, y, z), заданную таблицей: x 0 0 0 0 1 1 1 1 y 0 0 1 1 0 0 1 1 z 0 1 0 1 0 1 0 1 f 1 1 0 0 0 1 1 0 Тогда, согласно формуле (1) СДНФ будет выглядеть следующим образом: f (x, y, z) = x0 y 0 z 0 ∨ x0 y 0 z 1 ∨ x1 y 0 z 1 ∨ x1 y 1 z 0 = = x y z ∨ x y z ∨ x y z ∨ x y z. 5 Полином Жегалкина Рассмотрим еще одно представление функции в виде формулы заданного вида. 7 Определение 5.1 . Формула вида α0 ⊕ α1 x1 ⊕ α2 x2 ⊕ ... ⊕ αn xn ⊕ α12 x1 x2 ⊕ ... ⊕ α12...n x1 x2 ...xn , (2) где x1 , ..., xn — логические переменные, а α1 , ..., αn — логические константы, называется полиномом Жегалкина. Пример 5.1 . 1 ⊕ x1 ⊕ x2 x3 — полином Жегалкина. Здесь n = 3, α0 = α1 = α23 = 1, а α2 = α3 = α12 = α13 = α123 = 0. Утверждение 5.1 . Пусть f (x1 , ..., xn ) ∈ P2 . Тогда фукнция f может быть представлена полиномом Жегалкина, причем единственным образом. Замечание 5.1 . Для построения полинома Жегалкина удобно использовать метод неопределенных коэффициентов. Предположим, что функция f (x1 , ..., xn ) задана таблицей значений для всех наборов аргументов. Нам известен общий вид полинома Жегалкина для f M ^ α(I) xi i∈I I⊆{1,...,n} и требуется только вычислить коэффициенты α(I). Проходя по всей таблице значений для f будем приравнивать общий вид полинома и известное значение функции на данном наборе, тем самым последовательно вычисляя L V коэффициенты α. f (0, ..., 0) = I⊆{1,...,n} α(I) i∈I 0 = α(∅). Отсюда имеем первый коэффициент: α(∅) = f (0, ..., 0). f (0, .., 0, 1) = α(∅) ⊕ α({n}) ∧ 1. Таким образом, α({n}) = f (0, ..., 0, 1) ⊕ α(∅) = = f (0, ..., 0, 1) ⊕ f (0, ..., 0, 0). Продолжая этот процесс мы сможем вычислить все коэффициенты и тем самым получим полином Жегалкина для функции f . 8 Пример 5.2 . Пусть f (x, y, z) = (x ⊕ y) ⊃ z. Пусть f (x, y, z) = xy ∨ xz ∨ yz. f (0, 0, 0) = 0 = α0 f (0, 0, 1) = 0 = α0 ⊕ α3 f (0, 1, 0) = 0 = α0 ⊕ α2 f (0, 1, 1) = 1 = α0 ⊕ α2 ⊕ α3 ⊕ α2,3 f (1, 0, 0) = 0 = α0 ⊕ α1 f (1, 0, 1) = 1 = α0 ⊕ α1 ⊕ α3 ⊕ α1,3 f (1, 1, 0) = 1 = α0 ⊕ α1 ⊕ α2 ⊕ α1,2 f (1, 1, 1) = 1 = α0 ⊕ α1 ⊕ α2 ⊕ α3 ⊕ α1,2 ⊕ ⊕α1,3 ⊕ α2,3 ⊕ α1,2,3 ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ α0 = 0, α3 = 0, α2 = 0, α2,3 = 1, α1 = 0, α1,3 = 1, α1,2 = 1, ⇒ α1,2,3 = 0. Следовательно, полином Жегалкина для функции f будет иметь вид f (x, y, z) = xy ⊕ xz ⊕ yz. 6 Полнота системы функций Определение 6.1 . Система функций P ⊆ P2 называется полной, если любую функцию из P2 можно представить в виде формулы над P. Приведем несколько примеров полных систем функций. Утверждение 6.1 . {¬, ∨, ∧} — полная система функций. Следствие 6.2 . {¬, ∧} и {¬, ∨} — полные системы функций. Утверждение 6.3 . 1) Системы функций {|} и {↓} — полные системы функций. 2) Других полных систем, состоящих из одной функции от двух переменных нет. Утверждение 6.4 . {1, ⊕, ∧} — полная система функций. Определение 6.2 . Пусть K0 = {f1 (x1 , ..., xk1 ), f2 (x1 , ..., xk2 ), ..., fm (x1 , ..., xkm )}. 9 f — суперпозиция ранга 1 (элементарная суперпозиция) функций f1 , ..., fm , если f получена одним из способов: a) переименованием некоторой переменной xj функции fi , i = 1, m, j = 1, ki : fi (x1 , ..., xj−1 , y, xj+1 , ..., xki ), где y может совпасть с любой переменной; b) подстановкой некоторой функции fl вместо переменной xj функции fi , l = 1, m, i = 1, m, j = 1, ki : fi (x1 , ..., xj−1 , fl (x1 , ..., xkl ), xj+1 , ..., xki ). Множество суперпозиций ранга 1 функций из K0 обозначим K1 . Также, множество суперпозиций ранга 1 функций из Ki−1 обозначим Ki , i = 1, ∞. Функции из множества Ki будем называть суперпозициями ранга i функций из K0 . Определение 6.3 . Суперпозицией функций из K0 будем называть суперпозицию любого ранга. Определение 6.4 . множество Пусть M ⊆ P2 . Замыканием M называется [M] = {f | f — суперпозиция функций из M}. Определение 6.5 . Пусть M ⊆ P2 . M — замкнутое множество функций, если M = [M]. Пример 6.1 . 1) M = {x, x}. Тогда [M ] = {x, x} = M и M — замкнуто. 2) M = {x}. Тогда [M ] = {x, x} 6= M . Множество M — не замкнуто. Несложно проверить нижеследующие свойства операции замыкания. Замечание 6.1 . Заметим,что для доказательства замкнутости некоторого класса функций M достаточно показать, что любая суперпозиция ранга 1 функций из M лежит в M. Следствие 6.5 . Система функций P ⊆ P2 — полная, если [P] = P2 . 10 7 Классы, сохраняющие константы Определение 7.1 . Пусть f (x1 , ..., xn ) ∈ P2 . f называют функцией, сохраняющей ноль, если f (0, ..., 0) = 0. Множество всех функций сохраняющих 0 назовем T0 : T0 = {f (x1 , ..., xn ) | f ∈ P2 , f (0, ..., 0) = 0}. Утверждение 7.1 . Класс функций T0 замкнут. Определение 7.2 . Пусть f (x1 , ..., xn ) ∈ P2 . f называют функцией, сохраняющей единицу, если f (1, ..., 1) = 1. Множество всех функций сохраняющих 1 назовем T1 : T1 = {f (x1 , ..., xn ) | f ∈ P2 , f (1, ..., 1) = 1}. Утверждение 7.2 . Класс функций T1 замкнут. 8 Двойственность Определение 8.1 . Пусть f (x1 , ..., xn ) ∈ P2 . Двойственной функцией к функции f называется f ∗ (x1 , ..., xn ) = f (x1 , ..., xn ). Пример 8.1 . Пусть f (x, y, z) = xy ∨ z. Тогда f ∗ (x, y, z) = x · y ∨ z = x · y ∨ z. Определение 8.2 . Функция f (x1 , ..., xn ) ∈ P2 — самодвойственная, если f ∗ (x1 , ..., xn ) = f (x1 , ..., xn ). Обозначим за S множество всех самодвойственных функций: S = {f | f (x1 , ..., xn ) ∈ P2 , f ∗ (x1 , ..., xn ) = f (x1 , ..., xn )}. Пример 8.2 . Пусть f = x ∨ y, f ∗ = x ∨ y = xy. следовательно, f ∗ не является самодвойственной. Пример 8.3 . Пусть f — функция голосования: f (x, y, z) = xy ∨ xz ∨ yz. 11 f 6= f ∗ и, f ∗ (x, y, z) = x · y ∨ x · z ∨ y · z = x · y · x · z · y · z = = (x ∨ y)(x ∨ z)(y ∨ z) = (x ∨ xz ∨ xy ∨ yz)(y ∨ z) = xy ∨ xz ∨ xyz ∨ xz ∨ xy ∨ xyz ∨ yz ∨ yz = xy ∨ xz ∨ yz ∨ xyz = = xy ∨ xz ∨ yz = f (x, y, z). Функция голосования — самодвойственная. Утверждение 8.1 (Принцип двойственности). Пусть U = f (U1 , ..., Un ) — формула задающая фукнцию F (x1 , ..., xn ), где Ui — формулы, задающие fi (xj1 , ..., xjki ), i = 1, n. Тогда, если Ui∗ — формулы, задающие fi∗ , i = 1, n, то формула задающая F ∗ — U ∗ может иметь вид U ∗ = f ∗ (U1∗ , ..., Un∗ ). Следствие 8.2 . Пусть f (x1 , ..., xn ) задана формулой U над множеством фукнций {0, 1, ¬, ∨, ∧}. Тогда f ∗ (x1 , ..., xn ) задается формулой, полученной из U заменой: нулей на единицы, единиц на нули, конъюнкций на дизъюнкции, дизъюнкций на конъюнкции. Пример 8.4 . Пусть f (x, y, z) = (0 ∨ x)(y ∨ xz). Тогда f ∗ (x, y, z) = 1 · x ∨ y(x ∨ z). Утверждение 8.3 . Класс функций S замкнут. Лемма 8.4 (О несамодвойственной функции). Пусть f (x1 , ..., xn ) ∈ / S. Тогда, подставляя в f вместо аргументов x или x можно получить константу. Доказательство. Пусть (α1 , ..., αn ), αi ∈ {0, 1}, такой набор, что f (α1 , ..., αn ) = f (α1 , ..., αn ). Такой набор обязан существовать в силу несамодвойственности функции f . Рассмотрим функцию ϕ(x) = f (xα1 , ..., xαn ). Тогда ϕ(0) = f (0α1 , ..., 0αn ) = f (α1 0 , ..., αn 0 ) = f (α1 , ..., αn ) = = f (α1 , ..., αn ) = f (1α1 , ..., 1αn ) = ϕ(1). Следовательно ϕ(x) — константа. 12 9 Монотонность Определение 9.1 . Пусть α en = (α1 , ..., αn ), βen = (β1 , ..., βn ), αi , βi ∈ {0, 1}. Говорят, что набор α en предшествует набору βen (набор βen следует после набора α en ) и пишут α en βen , если α1 ≤ β1 , α2 ≤ β2 , ..., αn ≤ βn . Будем говорить, что α en строго предшествует βen и обозначать α en ≺ βen , если α en βen и α en 6= βen . Будем говорить, что α en непосредственно предшествует βen и en ≺ βen и не существует набора γ en обозначать α en ≺0 βen , если если α такого, что α en ≺ γ en ≺ βen . Замечание 9.1 . , ≺ — отношения частичного порядка. Определение 9.2 . Пусть f (x1 , ..., xn ) ∈ P2 . Функция f называется монотонной, если α en βen f (e αn ) ≤ f (βen ). =⇒ Класс всех монотонных функций будем обозначать M . Пример 9.1 . монотонна. Функция x является монотонной. Функция x — не Утверждение 9.1 . Класс функций M замкнут. Лемма 9.2 (О немонотонной функции). Пусть f (x1 , ..., xn ) ∈ / M. Тогда, подставляя в f вместо аргументов 0, 1, x можно получить x. Доказательство. Так как f ∈ / M , существуют два набора α en и βen , такие что α en βen и f (e αn ) > f (βen ). Очевидно, что f (e αn ) = 1 и f (βen ) = 0. Пусть α en отличен от βen в t позициях. a) Пусть t = 1. Тогда для некоторого i верно, что α en = (α1 , ..., αi−1 , 0, αi+1 , ..., αn ) 13 и βen = (α1 , ..., αi−1 , 1, αi+1 , ..., αn ). Определим функцию ϕ(x) следующим образом: ϕ(x) = f (α1 , ..., αi−1 , x, αi+1 , ..., αn ). Тогда, ϕ(0) = f (α1 , ..., αi−1 , 0, αi+1 , ..., αn ) = 1 ϕ(1) = f (α1 , ..., αi−1 , 1, αi+1 , ..., αn ) = 0. То есть ϕ(x) = x, что и требовалось доказать. b) Пусть теперь t > 1. В этом случае построим последовательность наборов α en = γ en (0) ≺ γ en (1) ≺ ... ≺ γ en (t − 1) ≺ γ en (t) = βen , где каждая пара наборов γ en (i − 1) и γ en (i) отличаются только в одной позиции, i = 1, t. Это не трудно сделать, последовательно заменяя каждую позицию, в которой наборы α en и βen разтличаются с нуля на единицу. Поскольку f (e αn ) = 1 и f (βen ) = 0, найдется такое k, что γ en (k − 1) = 1 и γ en (i) = 0. Такая ситуация возвращает нас к пункту a) доказательства. 10 Линейность Определение 10.1 . Пусть f (x1 , ..., xn ) ∈ P2 . Функция f — линейная, если ее полином Жегалкина имеет вид f (x1 , ..., xn ) = α0 ⊕ α1 x1 ⊕ α2 x2 ⊕ ... ⊕ αn xn . Обозначим L — класс всех линейных функций. Пример 10.1 . x — линейная функция. Функция x ∨ y не является линейной. Утверждение 10.1 . Класс функций L замкнут. 14 Лемма 10.2 (О нелинейной функции). Пусть f (x1 , ..., xn ) ∈ / L. Тогда, подставляя в f вместо аргументов x, y, x, y и, возможно, навешивая отрицание над f можно получить x ∧ y. L V Доказательство. Пусть f (x1 , ..., xn ) = I⊆{1,...,n} α(I) i∈I xi и f ∈ / L. ∗ ∗ ∗ Тогда существует I ⊆ {1, ..., n}: |I | ≥ 2, α(I ) 6= 0. Не умаляя общности, положим {1, 2} ⊆ I ∗ . f (x1 , ..., xn ) = = x1 x2 f1,2 (x3 , ..., xn ) ⊕ x1 f1 (x3 , ..., xn ) ⊕ x2 f2 (x3 , ..., xn ) ⊕ f0 (x3 , ..., xn ), причем ∃α3 , ..., αn : f1,2 (α3 , ..., αn ) = 1. Действительно, такие α3 , ..., αn существуют, поскольку, если бы f1,2 (σ3 , ..., σn ) = 0, ∀σ3 , ..., σn ∈ {0, 1}, то функция f приняла бы вид f (x1 , ..., xn ) = x1 f1 (x3 , ..., xn ) ⊕ x2 f2 (x3 , ..., xn ) ⊕ f0 (x3 , ..., xn ), что противоречит нашему предположению, что {1, 2} ⊆ I ∗ и α(I ∗ ) = 1. Рассмотрим ψ(x, y) = f (x, y, α3 , ..., αn ) = xy ⊕ xf1 (α3 , ..., αn )⊕ ⊕ yf2 (α3 , ..., αn ) ⊕ f0 (α3 , ..., αn ) = xy ⊕ xβ ⊕ yγ ⊕ δ. Теперь определим ϕ(x, y), как ϕ(x, y) = ψ(x ⊕ γ, y ⊕ β) ⊕ γβ ⊕ δ. Тогда ϕ(x, y) = ((x ⊕ γ)(y ⊕ β) ⊕ (x ⊕ γ)β ⊕ (y ⊕ β)γ ⊕ δ) ⊕ γβ ⊕ δ = = xy ⊕ xβ ⊕ yγ ⊕ γβ ⊕ xβ ⊕ γβ ⊕ yγ ⊕ γβ ⊕ δ ⊕ γβ ⊕ δ = xy. Таким образом, мы получили фукнцию ϕ(x, y) = x ∧ y, причем ϕ(x, y) = f (x ⊕ f2 (α3 , ..., αn ), y ⊕ f1 (α3 , ..., αn ), α3 , ..., αn )⊕ ⊕ f1 (α3 , ..., αn )f2 (α3 , ..., αn ) ⊕ f0 (α3 , ..., αn ), где добавление к x и y констант f2 (α3 , ..., αn ) и f1 (α3 , ..., αn ) равносильно навешиванию отрицания над переменной, если соответствующая константа равна 1, а добавление константы f1 (α3 , ..., αn )f2 (α3 , ..., αn ) ⊕ f0 (α3 , ..., αn ) к f означает возможное навешивание отрицания над этой функцией. 15 11 Критерий полноты системы функций Итак, мы рассмотрели пять классов функций T0 , T1 , S, M , L. T0 ¬x − 0 + 1 − xy + T1 − − + + S + − − − M − + + + L + + + − Каждый из этих классов функций замкнут и, как можно видеть из таблицы, ни один не совпадает с P2 . Теорема 11.1 . Для полноты системы функций P ⊆ P2 необходимо и достаточно, чтобы P не лежал полностью ни в одном из классов T0 , T1 , S, M , L: P 6⊆ T0 , P 6⊆ T1 , P 6⊆ S, P 6⊆ M, P 6⊆ L. Доказательство. Пусть f0 , f1 , fS , fM , fL ∈ P такие функции, что f0 ∈ / T0 , f1 ∈ / T1 , fS ∈ / S, fM ∈ / M, fL ∈ / L (некоторые из функций могут совпадать). Проведем доказательство в несколько этапов, последовательно доказав, что с помощью суперпозиций функций из P можно выразить систему {¬, ∧}, чем и докажем полноту P. 1) Покажем, что с помощью f0 , f1 , fS можно получить 0 и 1. a) Пусть f0 (1, ..., 1) = 1. Пусть ϕ(x) = f0 (x, ..., x). Тогда ϕ(0) = ϕ(1) = 1. Значит ϕ(x) = 1 и, имея единицу, можно получить вторую константу 0 = f1 (1, ..., 1). b) Пусть теперь f0 (1, ..., 1) = 0. Тогда ϕ(x) = f0 (x, ..., x) = x. Подставляя в fS x и x по лемме о несамодвойственной функции получаем константу 0 или 1 и с помощью x получаем вторую константу. 2) По лемме о немонотонной функции, подставляя константы в fM можно получить ¬x. 3) Используя fL , константы и ¬x, по лемме о нелинейной функции можно получить x ∧ y. Так как {¬, ∧} — полная системя функций, то и система P — полная. 16 Пример 11.1 . Требуется проверить на полноту систему функций P = {0, 1, xy, x ⊕ y ⊕ z}. Рассмотрим принадлежность функций P классам T0 , T1 , S, M , L и заполним таблицу. T0 0 + 1 − xy + x⊕y⊕z + T1 − + + + S − − − + M + + + − L + + − + Рассмотрим, например, проверку функции x ⊕ y ⊕ z: a) 0 ⊕ 0 ⊕ 0 = 0 ⇒ x ⊕ y ⊕ z ∈ T0 ; b) 1 ⊕ 1 ⊕ 1 = 1 ⇒ x ⊕ y ⊕ z ∈ T1 ; c) x ⊕ y ⊕ z = 1⊕(1⊕x)⊕(1⊕y)⊕(1⊕z) = x⊕y⊕z ⇒ x⊕y⊕z ∈ S; d) (1, 0, 0) ≺ (1, 1, 0), но 1 = 1⊕0⊕0 > 1⊕1⊕0 = 0 ⇒ x⊕y⊕z ∈ / M; e) Очевидно, функция является линейной: x ⊕ y ⊕ z ∈ L. Теперь, заполнив и проанализировав таблицу, можно убедиться, что система функций P является полной, так как в каждом столбце, соответствующем одному из классов присутствует хотябы один минус. В то же время ни одно подмножество P полной системой не является, поскольку, если вычеркнуть в таблице хотябы одну строку, появится столбец не имеющий минуса. 17