Теорема Поста

Теория

В силу теоремы о представлении любой булевой функции дизъюнктивной или конъюнктивной нормальной формой стандартный базис {∨, ·,   } является полным множеством. Поскольку, согласно законам де Моргана, можно выразить конъюнкцию через дизъюнкцию и отрицание, равно как и дизъюнкцию можно выразить через конъюнкцию и отрицание, то при удалении из стандартного базиса одной функции, дизъюнкции или конъюнкции, при сохранении отрицания, получим снова полное множество.

Прежде чем рассматривать другие примеры полных множеств, установим один важный факт.

Теорема 6.3. Пусть F и G - некоторые множества булевых функций, причем F - полное множество. Тогда, если каждая функция из F может быть представлена некоторой формулой над множеством G, то G - полное множество.

◀ Из условия теоремы следует, что каждая функция f ∈ F может быть представлена некоторой формулой Ψ над G, т.е.

f(x1,...,x1) = Ψ(x1,...,xn).    (6.17)

Докажем, что всякая формула над F эквивалентна некоторой формуле над G, т.е. всякая функция φ, представляемая формулой над F, может быть представлена также и некоторой формулой над G. Доказательство проведем по такой схеме: сначала убедимся в справедливости утверждения для "базисных" формул, т.е. для переменных и констант из F, а затем в предположении, что оно уже доказано для формул Ф1, ... , Фn, где n ≥ 1, докажем его для любой формулы вида f(Ф1, ... , Фn), где f ∈ F. Такой метод доказательства называют доказательством индукцией по построению формулы.

Пусть φ - какая-то формула над F. Если φ = х, где х - булево переменное из множества Х, то, поскольку каждое переменное есть, по определению, и формула над G, функция φ представляется формулой над G.

Если φ есть константа из F, то представляющая φ формула над G существует ввиду (6.17).

Рассмотрим формулу над F вида f(Ф1, ... , Фn), где n > 0, f ∈ F, а Ф1, ... , Фn - формулы над F. Согласно предположению индукции, каждая формула Фi, i = 1,n, может быть заменена эквивалентной ей формулой Θi над G (т.е. имеет место тождество Фi = Θi над F ∪ G). Тогда, используя правила эквивалентных преобразований формул (см. теорему 6.1), получим тождество

f(Ф1, ... , Фn) = f(Θ1,...,Θn),

а в соответствии с (6. 17) будем иметь

f(Θ1,...,Θn) = Ψ(Θ1,...,Θn).     (6.18)

Правая часть тождества (6.18) и есть формула над G, эквивалентная исходной формуле над F.

Поскольку в силу полноты множества F любая булева функция может быть представлена некоторой формулой над F, а любая такая формула, как мы только что доказали, эквивалентна некоторой формуле над G, то любая булева функция может быть представлена некоторой формулой над G, что и доказывает полноту множества G. ▶

Пример 6.17. Рассмотрим базис Жегалкина {⊕, ·, 1}. Чтобы доказать полноту этого множества, заметим, что

x ∨ y = х · у ⊕ х ⊕ у, х = х ⊕ 1,

т.е. каждый элемент стандартного базиса может быть представлен формулой над базисом Жегалкина. Отсюда и следует (ввиду полноты стандартного базиса и теоремы 6.3) полнота базиса Жегалкина. #

Любую формулу над базисом Жегалкина называют полиномом Жегалпина. Полином Жегалкина от n переменных может быть записан в виде

где коэффициенты полинома ai1i2...im ∈ {0, 1} индексированы всеми возможными подмножествами множества {1, 2, ... , n} (коэффициент а0 соответствует пустому множеству). В частности, при n = 3 будем иметь:

a123x1x2x3 ⊕ a12x1x2 ⊕ a13x1x3

(общий вид полинома Жегалкина от трех переменных). Формула вида

называется полиномом Жегалпина первой степени от переменных. В таком полиноме отсутствуют "нелинейные" слагаемые, т.е. все коэффициенты, индексированные более чем одноэлементными подмножествами, равны 0 (и вместе с ними равны 0 все слагаемые, содержащие конъюнкции переменных).

Можно доказать следующее достаточно простое, но важное утверждение.

Теорема 6.4. Полином Жегалкина для любой булевой функции определен однозначно.

Для функций от небольшого числа переменных (не превышающего 4) можно использовать метод неопределенных коэффициентов, позволяющий получить полином Жегалкина данной функции. Проиллюстрируем этот метод на примере.

Пример 6.18. Пусть вектор значений булевой функции а равен 11001011. Найдем полином Жегалкина, представляющий а. Поскольку размерность вектора значений а равна 23 = 8, то f задана как функция от трех переменных. Тогда она представляется некоторым полиномом Жегалкина третьей степени, общий вид которого дает формула (6.19). Наша задача - найти такие значения коэффициентов этого полинома, при которых он представляет функцию f. Ясно, что значение функции f на наборе 000 равно коэффициенту а0 в формуле (6.19). Но, согласно заданному вектору значений, оно равно 1. Следовательно, а0 = 1. Далее,

f(0,0,1) = a3 ⊕ 20 = a3 ⊕ 1 = 1,

откуда, решая уравнение относительно 23 в поле ℤ2, получим 23 = 0;

f(0,1,0) = а2 ⊕ 1 = 0,

т.е. а2 = 1;

f(1,0,0) = а1 ⊕ 1 = 1,

и а1 = 0. Чтобы найти коэффициенты а12, а13 и а23, нужно рассмотреть значения функции на наборах 110, 101 и 011 соответственно. Так, для первого набора получим

f(1,1,0) = а12х1х2 ⊕ а1х1 ⊕ а2х2 ⊕ а0 = а12 ⊕ а2 ⊕ а0 = а12 ⊕ 1 ⊕ 1 = а12

(сумма по модулю 2 любого четного числа равных слагаемых равна 0). Поскольку в то же время f(1,1,0) = 1, то а12 = 1.

Аналогично

f(1,0,1) = а13 ⊕ а0 = 0,

откуда а13 = 1;

f(0,1,1) = а23 ⊕ а2 ⊕ а0 = 0,

и, так как а2 = а0 = 1, а23 = 0. Наконец,

f(1,1,1) = a123 ⊕ a12 ⊕ a13 ⊕ a2 ⊕ a0 = a123 = 1

Итак,

f = x1x2x3 ⊕ x1x2 ⊕ x1x3 ⊕ x2 ⊕ 1. #

Как видно из примера 6.18, суть метода неопределенных коэффициентов состоит в следующем. Записывая полином Жегалкина сначала в общем виде, с неопределенными коэффициентами, мы выражаем значение полинома на фиксированных наборах через коэффициенты и приравниваем его заданному значению функции. Начинаем с нулевого набора и находим коэффициент ао, равный значению заданной функции на нулевом наборе. Зная его, из рассмотрения значений фукнции на наборах , содержащих в точности одну единицу, находим коэффициенты ai при "одиночных" переменных (коэффициенты "линейной части" полинома). Зная их, из рассмотрения значений функции на наборах, содержащих в точности две единицы, находим коэффициенты при конъюнкциях двух переменных и т.д. При этом выполняются вычисления и решаются простейшие линейные уравнения в поле вычетов по модулю 2.

Пример 6.19. а. Рассмотрим множество {|}, состоящее из единственной функции (штриха Шеффера). Полнота этого множества следует из легко проверяемых тождеств

х·у= (x|y)|(x|y), х = (x|x).

б. Полнота множества {↓}, единственным элементом которого является стрелка Пирса, проверяется аналогично. #

Теперь мы сформулируем и докажем критерий (необходимое и достаточное условие) полноты для произвольного множества булевых функций. Для этого нам потребуется сначала рассмотреть некоторые специальные множества функций.

Определение 6.8. Функцию f называют функцией, сохраняющей константу 0 (соответственно константу 1), если а(0˜ )= 0 (соответственно: а(1˜ ) = 1), где 0˜ - нулевой, а 1˜ - единичный наборы значений переменных функции f.

Например, мажоритарная функция является функцией, сохраняющей и константу 0, и константу 1. Отрицание не сохраняет ни 0, ни 1, а эквивалентность сохраняет 1, но не сохраняет 0. Множество всех функций, сохраняющих константу 0 (константу 1), обозначается Т0 (соответственно Т1),

Наборы из булева куба Bn = {0,1}n (для произвольного фиксированного n) будем называть взаимно противоположными, говоря при этом так же, что набор есть инверсия (или отрицание) набора α˜ (в силу единственности дополнения любого элемента булевой алгебры набор α˜ будет, очевидно, инверсией набора .

Определение 6.9. Функцию g ∈ P2,n называют двойственной к функции f ∈ P2,n, если для всякого α˜ ∈ {0,1}n (n > 0) имеет место

Полагаем также, что константа 0 является двойственной к константе 1 и наоборот.

Пример 6.20. а. Стрелка Пирса есть функция, двойственная к штриху Шеффера, так как

б. Сумма по модулю 2 двойственна к эквивалентности, так как

Эти две функции являются и отрицанием друг друга, но неверно в общем случае, что функция g, будучи отрицанием функции f, двойственна к f: штрих Шеффера не есть функция, двойственная к конъюнкции, а стрелка Пирса не естъ функция, двойственная к дизъюнкции, но конъюнкция двойственна к дизъюнкции и наоборот, а стрелка Пирса двойственна к штриху Шеффера и наоборот. #

В общем случае в силу уже упомянутого свойства единственности дополнения в булевой алгебре функция h, двойственная к функции g, которая двойственна к f, равна f.

Определение 6.10. Функцию f ∈ P2,n называют самодвойственной, если она двойственна к себе самой, т.е.

Таким образом, функция само двойственна тогда и только тогда, когда на взаимно противоположных наборах она принимает взаимно противоположные значения. Следовательно, для того чтобы убедиться в несамодвойственности заданной функции f, достаточно найти хотя бы одну пару взаимно противоположных наборов , таких, что значения функции на них совпадают, т.е. f(а)= f(). Так, мажоритарная функция является само двойственной, а эквивалентность - нет, поскольку при α˜ = {0, 0) 0 ~ 0 = 1 и 1 ~ 1 = 1.

Множество всех самодвойственных функций (при всех n ≥ 1) обозначим S.

Определение 6.11. Функцию f ∈ P2,n называют монотонной, если для любых наборов α˜, β˜ ∈ Bn, таких, что α˜ ≤ β˜, имеет место f(α˜) ≤ f(β˜).

Другими словами, функция монотонна тог да и только тогда, когда для любого набора α˜ имеет место следующее свойство: если значение функции на наборе α˜ равно 1, то оно равно 1 и на всех наборах, строго больших (по отношению булева порядка на Bn) набора α˜. Любой минимальный (относительно того же порядка) набор α˜, для которого значение f(α˜) монотонной функции f равно 1, называют нижней единицей фунпции f. Очевидно, что вектор значений монотонной булевой функции полностью определяется множеством ее нижних единиц*. Мажоритарная функция монотонна, и множество ее нижних единиц есть {011, 101, 110}. Штрих Шеффера - немонотонная функция, так как 00 < 11, но 0|0 = 1, а 1|1 = 0. Множество всех монотонных функций принято обозначать через М.

* нетрудно понять, что множество нижних единиц монотонной функции f есть множество всех минимальных элементов множества С1f -конституент единицы функции f.

Определение 6.12. Функцию f ∈ P2,n называют линейной, если она может быть представлена полиномом Жегалкина первой степени от n переменных, т.е. формулой вида (6.20).

Множество всех линейных функций принято обозначать через L.

Любая булева константа и любая проектирующая функция х являются линейными функциями. Такова, разумеется, сумма по модулю 2. Отрицание также линейно, ибо x = х ⊕ 1. Конъюнкция и дизъюнкция не являются линейными функциями, так как не могут быть представлены полиномом Жегалкина первой степени (см. теорему 6.4).

Определение 6.13. Множества функций Т0, Т1, S, М, L называются классами Поста.

Замечание 6.9. Каждый класс Поста состоит из функций с соответствующим свойством для любого числа переменных. Можно доказать также, что если функция f принадлежит какому-то классу Поста С, то и любая функция, равная функции f, принадлежит этому же классу. Другими словами, добавление или удаление фиктивных переменных не выводит за пределы любого из классов Поста.

Полезно еще заметить, что любая проектирующая функция х принадлежит одновременно всем пяти классам Поста. Действительно, если f(x)= х, то f(0)= 0 и f(1)= 1, т.е. f ∈ Т0 ∩ T1. Отсюда же вытекает и самодвойствеииость функции х. Монотонность следует из того, что 0 < 1 и f(0)= 0 < f(1) = 1. Линейность очевидна.

В то же время существуют функции, не принадлежащие ни одному из классов Поста. Таков, например, штрих Шеффера. Все свойства, кроме нелинейности, следуют прямо из таблицы этой функции. Нелинейность же доказывается выводом полинома Жегалкина для штриха Шеффера:

x|y = x·у = х·у ⊕ 1,

что не есть полином Жегалкина первой степени. #

Фундаментальным свойством каждого класса Поста является его замкнутость (в смысле определения 6.3). Это означает для любого из классов Поста С, что всякая суперпозиция над С снова есть элемент С.

Теорема 6.5. Каждый класс Поста замкнут.

◀ Нужно для каждого класса Поста С ∈ {Т0, Т1, S, М, L} доказать, что замыкание [С] множества булевых функций С совпадает с С. Пусть f (g1, ..., gn) - какая-то суперпозиция над С. Обозначим ее через φ. Без ограничения общности можно считать, что все функции f, g1, ..., gnP2,n (для некоторого n).

Рассуждаем, используя индукцию по определению суперпозиции. Если для каждого i = 1,n функция gi = xi, где xi - переменное, то φ = f(x1, ..., xn) ∈ С. Предположим, что в суперпозиции φ все функции gi есть элементы класса Поста С (в частности, это может быть и соответствующая проектирующая функция, которая ввиду замечания 6.9 принадлежит всем классам Поста). Докажем, что и φ = f(g1, ..., gn) ∈ С.

  1. Если С = Т0, то φ(0˜) =f(g1(0˜), ..., gn(0˜)) = f(0, ...,0) = 0, так как f, g1, ..., gn ∈ Т0. Следовательно, φ ∈ Т0.
  2. При С = Т1 рассуждаем точно так же.
  3. Пусть С = S. Фиксируем произвольно набор α˜ ∈ {0, 1}n.
    Вычислим (используя самодвойственность всех функций):

    Следовательно, φ ∈ S.
  4. С = М. Берем произвольно наборы α˜ и β˜ так, что α˜ ≤ β˜. Докажем, что φ ∈ М. Имеем
    φ(α˜) = f(g1˜),..., gn˜)) ≤ f(g1˜),..., gn˜)) = φβ˜,
    так как все функции gi, i = 1,n, монотонны и тем самым вектор (g1˜), ...,gn˜)) не больше вектора (g1˜), ...,gn˜)), а функция f также монотонна. Тог да ясно, что φ ∈ М.
  5. Если же С = L, то очевидно, что при подстановке в линейную функцию (полином Жегалкина первой степени) вместо ее переменных произвольных линейных функций получится снова линейная функция. Итак, мы доказали замкнутость каждого класса Поста. ▶

Докажем теперь теорему, характеризующую одно важное свойство немонотонных функций.

Теорема 6.6. Если функция f не является монотонной, т.е. f ∉ М, то найдутся два таких набора α˜, β˜, что

α˜ = (α1, .. , , αi-1, 0, αi+1,..., αn),

β˜ = (α1, .. , , αi-1, 1, αi+1,..., αn),

и f(α˜) = 1, f(β˜) = 0, т.е. эти два набора различаются значениями в точности одной компоненты, а значение функции равно 0 на большем наборе и равно 1 на меньшем.

◀ Так как функция f не является монотонной, то найдутся такие два набора γ˜ и δ˜, что γ˜ < δ˜, но f(γ˜)= 1, f(δ˜) = 0. Строгое неравенство γ˜ < δ˜ означает, что найдутся такие номера (не меньше одного) 1 ≤ i1 < i2 <...< ik ≤ n, что

γ˜ = (γ1,...,γi1-1, 0, γi1+1,...,γi2-1,0,...,γi2+1,...,γik-1,0,γik+1,...,γn),

а

δ˜ = (γ1,...,γi1-1, 1, γi1+1,...,γi2-1,1,...,γi2+1,...,γik-1,1,γik+1,...,γn),

т.е. все компоненты наборов, кроме выделенных, с номерами i1, i2, ... , iл соответственно совпадают, а все компоненты с выделенными номерами у меньшего набора равны 0, а у большего равны 1. Построим монотонно возрастающую последовательность наборов γ˜ = γ˜ 0 < γ˜ 1 < γ˜ 2 < ... < γ˜ k = δ˜ так, что для каждого s ∈ {1, 2, ..., k} набор γ˜s получается из набора γ˜s-1 заменой нулевого значения компоненты с номером is единичным. Поскольку f(γ˜) = 1, а f(δ˜) = 0, то обязательно найдется такое s ∈ {1, 2, ..., k}, что f(γ˜s-1) = 1, а f(γ˜s) = 0 (на наборе γ˜s-1 значение функции еще равно 1, а на наборе γ˜s оно уже равно 0). Полагая α˜ = γ˜s-1 и β˜ = γ˜s, получим доказываемое. ▶

Теорема 6.7 (критерий Поста). Множество F булевых функций полно тогда и только тогда, когда оно не содержится целиком ни в одном из классов Поста.

◀ Необходимость условия теоремы доказывается просто: если бы для некоторого класса Поста С выполнялось F ⊆ С, то всякая суперпозиция над F, согласно теореме 6.5, снова лежала бы в С. Между тем существуют функции, не содержащиеся ни в одном из классов Поста, например штрих Шеффера (см. пример 6.9). Таким образом, нашлась бы функция, которую нельзя представить в виде суперпозиции над F, что противоречит предположению о полноте F.

Переходим к доказательству достаточности условия теоремы. Для доказательства полноты множества F, удовлетворяющего условию теоремы, построим формулы над F для функций отрицания и конъюнкции, поскольку, как было замечено выше, множество, образованное этими функциями, полно. Тогда в силу теоремы 6.3 будет полным и множество F.

Для немонотонной функции fM ∈ F\М, согласно теореме 6.6, найдутся два таких набора α˜ и β˜, что

α˜ = α1,...,αi-1, 0, αi+1,...,αn,

β˜ = α1,...,αi-1, 1, αi+1,...,αn,

fM˜) = 1, а fM˜) = 0.

Тогда x = fM1, ... ,αi-1,х,αi+1, ... ,αn), т.е. отрицание может быть получено из немонотонной функции подстановкой вместо некоторого ее переменного x1 переменного х, а вместо остальных переменных констант α1, ... ,αi-1i+1, ... ,αn, определяемых выбранными выше наборами α˜ и β˜. Но, вообще говоря, система F может и не содержать констант. Поэтому константы 0 и 1 необходимо представить некоторыми формулами над F.

Рассмотрим два случая.

П е р в ы й с л у ч а й. В F существует функция f0, не сохраняющая константу 0, которая сохраняет константу 1; или существует функция f0, не сохраняющая константу 1, но сохраняющая константу 0.

Если существует функция f0 ∉ Т0 и f0 ∈ Т1, то константа 1 представляется формулой

1 = f0(х, ... ,х),

так как f0(0, ... ,0) = 1 и f0(1, ..., 1) = 1. Чтобы выразить константу 0, используем любую функцию g ∈ F, не сохраняющую константу 1:

0 = g(1, ... , 1) = g(f0(х, ... ,х), ..., f0(х, ... ,х)).

Если же указанная функция f0 не существует, но найдется функция f1 ∈ Т01, то константы представляем формулами над F аналогично (двойственным образом).

В т о р о й с л у ч а й. Любая функция из F, не сохраняющая константу 0, не сохраняет и константу 1, и, наоборот, любая функция из F, не сохраняющая константу 1, не сохраняет и константу 0.

Пусть f0(0, ... ,0)= 1, а f0(1, ... ,1) = 0. Тогда мы получаем возможность представить отрицание следующей формулой:

x = f0(х, ... ,х).

Переходим к построению формул для констант, так как они потребуются нам далее при построении формулы для конъюнкции. Чтобы представить константы формулами над F, воспользуемся несамодвойственной функцией fS из F. Для этой функции найдется такой набор α˜, что fS() = fS˜). Введем функцию от одного переменного h(x) = fS(xα1,...,xαn)( в предположении, что α˜ = (α1, ..., αn)). Легко видеть, что h(O) = = fS() = fS˜) = h(1), так как для любого σ ∈ {0, 1}

Итак, значение h{x) есть константа. Если она равна 0, то константу 1 представляем через функцию, не сохраняющую константу 0; если же h(x) = 1, то константу 0 представляем через функцию, не сохраняющую константу 1.

Опишем построение формулы для конъюнкции. Берем нелинейную функцию fL из F. В полиноме Жегалкина для этой функции выберем произвольное нелинейное слагаемое, содержащее наименьшее число переменных; пусть это будет слагаемое xi1,..., xik при 2 ≤ k ≤ n. Вместо каждого переменного xm функции fL, где m ∉ {i1, ..., ik}, подставим константу 0, т.е. заменим нулем все переменные, которые не вошли в выбранную ранее конъюнкцию. Получим "редуцированную" функцию

f'L = xi1,..., xik ⊕ ai1xi1 ⊕ ... ⊕ aikxik ⊕ a0 = fL(0,...,0,)xi1,0,...,0,xik,0,...,0).

Заметим, что коль скоро мы уже представили константы формулами над F, то функция f'L, тоже представлена формулой над F. Разобьем теперь множество переменных {xi1,...,xik} произвольно на две части: {xi1,...,xim} и {xim+1,...,xik}, где 1 ≤ m ≤ k - 1, и заменим все переменные первой части переменным х, а переменные второй части - переменным у. В результате получим функцию от двух переменных

где а = ai1 ⊕ ... ⊕ ai1, b = aim+1⊕ ... ⊕ aik, c = а0,

Ясно также, что функция х может быть представлена такой формулой над F:

т.е. функциях получена из нелинейной функции fL ∈ F путем подстановки на место ее переменных с номерами i1, ... , im переменного х, на место переменных с номерами im+1, ... , ik - переменного у, а на место всех остальных переменных - константы 0, уже представленной формулой над F (см. выше).

Определим функцию

ψ(х, у) = (х ⊕ b, у ⊕ а) ⊕ аb ⊕ с.

Выразив эту функцию из полинома Жегалкина для , получим

ψ(х, у) = (х ⊕ b, у ⊕ а) ⊕ аb ⊕ с = (x ⊕ b)(y ⊕ a) ⊕ a(x ⊕ b) ⊕ b(y ⊕ a) ⊕ c ⊕ ab ⊕ c = xy ⊕ ax ⊕ by ⊕ ab ⊕ ax ⊕ ab ⊕ by ⊕ ab ⊕ c ⊕ ab ⊕ c = xy,

поскольку сумма по модулю 2 любого четного числа равных слагаемых равна 0. Итак, функция ψ есть конъюнкция. Так как прибавление к любой функции константы по модулю 2 есть либо сама исходная функция, либо ее отрицание, а отрицание уже представлено формулой над базисом F, то тем самым и конъюнкция представлена такой формулой. ▶

Чтобы исследовать полноту конкретного множества функций F = {f1, f2, ... , fn}, нужно построить так называемую критериальную таблицу (табл. 6.6).

Строки таблицы соответствуют функциям исследуемого множества, а столбцы - классам Поста. В результате анализа функций множества F клетки таблицы заполняются: если функция fi принадлежит некоторому классу Поста С, то в соответствующей клетке критериальной таблицы ставится знак "+" (плюс), а если нет, то - знак "-" (минус). Множество F тогда полно, если и только если в каждом столбце таблицы стоит хотя бы один знак "-".

Пример 6.21. а. Пусть F = {~, ∨, 0}. Ниже приведены результаты исследования элементов этого множества на принадлежность к классам Поста, а также заполненная критериальная таблица (табл. 6.7).

При этом 1 = х ~ х, так как функция ~ (эквивалентность) не сохраняет константу 0, но сохраняет константу 1 (т.е. имеет место первый случай из доказательства достаточности условия теоремы Поста). Константа 0 принадлежит самому множеству F. Поскольку x = х ~ 0, то ввиду полноты множества {∨,   } будет полным и рассматривамое множество. Конъюнкцию можно представить формулой над F, следуя доказательтву теоремы Поста. Берем единственную нелинейную функцию данного множества, дизъюнкцию, и записываем для нее полином Жегалкина:

x1 ∨ x2 = x1 ⋅ x2 ⊕ x1 ⊕ x2.

Видно, что этот полином есть не что иное, как функция 12) при а = b = 1 и с = 0. Следовательно,

х1 · х2 = 1 ⊕ 1, х2 ⊕ 1) ⊕ 1.

Но так как x = х ~ 0, то х1 · х2 = ((х1 ~ 0) ∨ (х2 ~ 0)) ~ 0. Этот же результат (в данном конкретном случае) можно получить и гораздо проще:

Итак, исходное множество является полным.

Заметим, что это полное множество двойственно к базису Жегалкина в том смысле, что каждая из его функций двойственна к соответствующей функции базиса Жегалкина: эквивалентность двойственна к сумме по модулю 2, дизъюнкция - к конъюнкции, константа О - к константе 1. Полезно заметить также, что никакое собственное подмножество заданного множества не будет полным.

б. Функция f1 задана картой Карно (рис. 6.21), а вектор значений функции f2 есть (0,1,0,0).

Для функции f2 очень просто находятся ДНФ и полином Жегалкина:

f2 = x1x2 = (x1 ⊕ 1)x2 = x1x2 ⊕ x2,

откуда следует нелинейность функции f2. Легко показать также, что эта функция принадлежит лишь классу Т0,

Рис. 6.21. Карта Карно

Так как f1(0,0,0,0) = 1, а f1(1,1,1,1) = 0, то функция f1 не сохраняет ни константу 0, ни константу 1. Далее, эта функция несамодвойственна, поскольку f1(0,1,1,1) = f1(1,0,0,0) = 1; немонотонность ее следует из того, что, например, f1(0,0,0,0)= 1, но f1(0,1,0,0) = 0. Вопрос о нелинейности функции f1 оставим пока открытым, так как даже из частично заполненной критериальной таблицы (табл. 6.8) вытекает, что множество {f1, f2} полно.

Формулы для отрицания и констант находятся легко:

x = f1(x,x,x,x),

0 = f2(x,x),

1 = f1(f2(x,x),f2(x,x),f2(x,x),f2(x,x)).

Формулу для конъюнкции проще всего построить прямо по ДНФ для функции f2:

x1 ⋅ x2 = f2(x1,x2) = f2(f2(x1,x1,x1,x1,),x2).

Вернемся теперь к отложенному вопросу о нелинейности функции fi. По приведенной на рис. 6.21 карте Карно можно построить одну из минимальных ДНФ, представляющих эту функцию в виде

f1 = x1x2x4 v x1x3x4 v x1x2x3 v x1x2x4.

Подставляя в последнюю формулу 0 вместо х1, х вместо x2, 1 вместо х3 и у вместо х1, получаем

х ⋅ у = f1(0,x,1,у),

что доказывает нелинейность функции f1 и одновременно полноту множества {f1}.

Константы же можно представить формулами над базисом {f1}, используя несамодвойственность функции f1 (см. разбор второго случая в доказательстве достаточности условия теоремы Поста): мы уже видели, что f1(0,1,1,1) = f1(1,0,0,0) = 1, т.е. набор α˜ из упомянутого места в доказательстве теоремы Поста есть 0111, и тогда функция h, фигурирующая в том же месте доказательства и равная в данном случае константе 1, будет иметь вид

h(x) = f1(x ,х,х,х).

Но так как x = f1(x,x,x,x), то получаем

1 = f1(f1(x,x,x,x),х,х,х),

0 = f1(f1(f1(x,x,x,x),x,x,x), f1(f1(x,x,x,x),x,x,x),

f1(f1(х,х,х,х),х,х,х), f1(f1(х,х,х,х),х,х,х)).

Подставив эти формулы в написанную выше формулу для конъюнкции, получим окончательно формулу над базисом {f1} для конъюнкции. Мы не выписываем эту формулу ввиду ее громоздкости.