Система булевых функций
называется полной, если любую булеву функцию можно представить в виде суперпозиции функций из Д.
Приведем пример полных систем.
Пример 1 Как отмечено выше, система
является
полной.
Пример 2 Множество всех булевых функций P2 является полной системой.
В вопросе о полноте важную роль играет следующая теорема.
Пусть
и
системы булевых функций. Если Д1 – полная система и каждая ее функция выражается в виде суперпозиции функций из Д2, то система Д2 также является полной.
Действительно, так как Д1 – полная система, то любая булева функция представима в виде суперпозиции функций из Д1. А так как любая функция из Д1 представима в виде суперпозиций функций из Д2, то Д2 – полная система.
Пример 3 Система
– полная.
Это следует из предыдущей теоремы и из примера 1, ибо
. Аналогичным образом получаем полноту системы
. Приведенные примеры говорят о том, что существуют различные полные системы булевых функций. Каждая из таких систем может быть принята в качестве набора «элементарных» функций, и любая булева функция может быть выражена в виде суперпозиции через «элементарные» функции принятого набора.
С понятием полноты тесно связано понятие замкнутого класса и замыкания.
Множество Т булевых функций называется замкнутым классом, если любая суперпозиция функций из Т снова принадлежит Т.
Всякая система М булевых функций порождает некоторый замкнутый класс. Этот класс состоит из всех булевых функций, которые можно получить суперпозициями из М. Такой класс называется замыканием М и обозначается [М]. Для замкнутого класса М следует, что [М] = М. Очевидно, что если М – полная система, что [М] = Р2.
При установлении необходимого и достаточного условия полноты важную роль играют пять замечательных классов булевых функций, которые будут рассмотрены ниже.
Первый замечательный класс – класс булевых функций, сохраняющих константу С, т.е. функций
, для которых
.
Подсчитаем число таких булевых функций от n переменных. Поскольку на нулевом наборе значение функций из Т0 фиксировано, то в Т0 содержится ровно
булевых функций от n переменных.
Ясно, что функции
принадлежат классу Т0, а
не принадлежит Т0. Следовательно,
.
Второй замечательный класс – класс булевых функций, сохраняющих константу 1, т.е. функций
, для которых
.
Как и выше, легко подсчитать число таких функций от переменных. Их
ровно
.
Ясно, что функции
принадлежат классу Т1, а функция
– нет. Следовательно,
.
Третий замечательных класс – класс всех самодвойственных функций S.
Булева функция
называется самодвойственной, если она совпадает со своей двойственной, т.е.
.
Пример 4 Доказать, что функция
является самодвойственной.
Двойственная для данной функции есть функция
. Теперь, применяя закон де Моргана, получаем:

Используя законы дистрибутивности и идемпотентности, имеем:

Следовательно, искомая функция самодвойственна.
Очевидно, что
и
принадлежат классу S, а
,
не принадлежат классу S. Следовательно,
.
Подсчитаем число всех самодвойственных функций от n переменных.
Так как самодвойственная функция
на наборах
и
принимает противоположные значения, то она полностью определяется своими значениями, принимаемыми ею на половине всех наборов переменных. Следовательно, число самодвойственных функций от переменных равно
.
Четвертый замечательный класс – класс всех линейных булевых функций.
Булевы функции вида
, где
и
равны нулю или единице, называют линейными.
Нетрудно подсчитать число всех линейных булевых функций от переменных. Их число равно
.
Очевидно, что функции
принадлежат L, а функция xy не принадлежит L. Следовательно
.
Для того, чтобы определить, является данная булева функция линейной или нет, ее надо представить в виде полинома Жегалкина.
Пример 5 Выяснить, является ли функция
линейной. Запишем данную функцию в виде полинома Жегалкина:
.
Следовательно, функция
не является линейной.
Пятый замечательный класс – класс М всех монотонных булевых функций.
Два набора
и
называются сравнимыми, если
.
Запись
означает, что набор
предшествует набору
. Например,
, а наборы
и
несравнимы.
Булева функция
называется монотонной, если для любых наборов
и
таких, что
, имеет место неравенство
.
Очевидно, что константы 0,1 и функция х – монотонные функции.
Функции
– монотонные функции (доказательство осуществляяется проверкой).
Функции
не являются монотонными, так как
, а
.
Следовательно,
.
Для распознавания монотонности функции полезной является следующая теорема.
Теорема 1 Булева функция, имеющая дизъюнктивную нормальную форму, не содержащую отрицаний, является монотонной функцией, отличной от 0 и 1.
Докажем данную теорему. Пусть булева функция
имеет дизъюнктивную нормальную форму Д, не содержащую отрицаний, и пусть на наборе
,
. Тогда Д содержит конъюнкцию
равную единице на наборе
. Следовательно,
. Возьмем любой набор
такой, что
. В нем обязательно
. Поэтому конъюнкция
при этом наборе равна 1, а значит
. Итак, условие монотонности для ДНФ Д выполнено. А это значит, что функция
монотонна.
Используя данную теорему, сразу получаем, что функции
являются монотонными.
Классы булевых функций
являются замкнутыми классами.
Докажем, что
– замкнутый класс. Для этого надо показать, что функция
принадлежит
, если функция f,
принадлежит
. Это следует из следующей цепочки неравенств:
.
Аналогичным образом доказывается замкнутость класса
.
Если
самодвойственные функции, то
. Итак, S – замкнутый класс.
Пусть
, где
– монотонные функции, и
пусть
их наборы переменных. Здесь переменные функции Ф состоят из функций
. Пусть
и
два таких набора, что
. Каждый из наборов
и
однозначно определяет следующие наборы
значений переменных
. Причем
. Так как
– монотонные функции, то
. Следовательно,
. Из монотонности функции f получаем, что
.
Итак, М – замкнутый класс.
Замкнутость класса L следует непосредственно из определения линейных функций.
Как показано выше, функция
не принадлежит классу М. Следующая теорема показывает, что всякая немонотонная функция содержит, в некотором смысле, в своем составе функцию отрицания.
Теорема 2 Если
– немонотонная функция, то в результате ее суперпозиции с константами 0 и 1 может быть получена функция отрицания
одного из аргументов функции
.
Докажем данную теорему. Так как функция
немонотонная, то найдутся два набора
и
значений переменных таких, что
, и
. Причем, в качестве этих наборов
и
можно выбрать соседние наборы, т.е. наборы, отличающиеся значениями только по одной из координат. Действительно, если
и
не являются соседними наборами, то набор
отличается от набора
в t координатах, где t > 1. Причем, эти координаты в наборе
равны 0, а в наборе
равны 1. Из этого следует, что между наборами
и
можно вставить t – 1 наборов
, таких, что
. (4.1)
Так как
, то обязательно найдется такая пара соседних наборов из цепочки (4.1)
и
, что
. Не ограничивая общности, мы можем считать, что
;
.
Подставим в функцию
вместо переменной
константу
, где
. В результате мы получим функцию от одной переменной: 
А это значит, что
. Следовательно,
.