а) Константы 0,1 и функция
монотонны. Отрицание
немонотонно.
б) Дизъюнкция и конъюнкция любого числа переменных являются монотонными функциями.
в) Функция
(табл.4.11) немонотонна, так как (001)<(101), а
(001)>
(101). Функция
(табл.4.11) монотонна.
Таблица 4.11
| |
| 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 | 0 0 1 0 0 1 1 1 1 0 0 1 0 1 1 1 |
Проверка монотонности функции непосредственно по определению требует анализа таблицы функции и может оказаться довольно громоздким делом. Поэтому, для опознавания монотонности полезна следующая теорема, которая здесь приводится без доказательства.
Теорема. Всякая булева формула, не содержащая отрицаний, представляет монотонную функцию, отличную от 0 и 1. И наоборот: для любой монотонной функции, отличной от 0 и 1, найдется представляющая ее булева формула без отрицаний.
Следствие. Сокращенная ДНФ монотонной функции - единственная тупиковая, а значит, и минимальная ДНФ.
Теорема. Множество всех монотонных функций является замкнутым классом.
Доказательство. Эта теорема непосредственно следует из предыдущей теоремы и того очевидного обстоятельства, что подстановка формул без отрицаний в формулу без отрицаний снова дает формулу без отрицаний. Теорема доказана.
Следствие. Класс монотонных функций является замыканием системы функций
.
Это утверждение вытекает из того, что всякая булева формула без отрицаний является суперпозицией дизъюнкций и конъюнкций.
Теперь перейдем к основной проблеме этой главы: каковы необходимые и достаточные условия функциональной полноты для произвольной системы функций
? Как уже было показано выше, система
полна, если дизъюнкция, конъюнкция и отрицание являются суперпозициями функций из
. Поэтому, будем искать свойства функций, позволяющие выразить через них булевы операции.
Лемма 1 (о немонотонных функциях). Если функция
немонотонна, то подстановкой констант из нее можно получить отрицание.
Доказательство: Пусть
немонотонна. Тогда существуют наборы
и
, такие, что,
,
,
. Если
и
отличаются k компонентами, то в этих компонентах в
стоят нули, а в
единицы. Берем набор и, заменяя эти компоненты по одному единицами, получаем цепочку
, в которой любые два набора, стоящие рядом, отличаются только в одной компоненте (такие наборы называются соседними). Ясно, что в такой цепочке найдутся два соседних набора
,
, таких, что
,
. Пусть они отличаются в i -й компоненте, тогда
,
, остальные их компоненты одинаковы. Подставим эти значения остальных компонент в
. Получим функцию
от
, обозначим ее
. Но
;
. Следовательно,
. Лемма доказана.
Пример. Функция
, представленная в табл.4.11 немонотонна. Минимизировав данную функцию, получим:
.
Подставив
,
, получим отрицание:
.
Лемма 2 (о нелинейных функциях). Если функция
нелинейна, то с помощью подстановки констант и использования отрицаний из нее можно получить дизъюнкцию и конъюнкцию.
Доказательство: Пусть
нелинейна. Тогда ее полином Жегалкина содержит конъюнкции переменных. Выберем самую короткую из них:
. Положим
, а для всех
, не входящих в
,
. Подстановка этих констант в полином обратит
в
, а остальные конъюнкции в 0, и полином функции
примет вид
, где
- коэффициенты, равные 0 и 1 и зависящие от конкретной функции
. Функции, получающиеся при всех восьми возможных комбинациях значений
, приведены в табл. 4.12, в которой, для наглядности, обозначено
, а отрицание в последнем столбце обозначено через
. Поскольку каждая из функций
,
- результат подстановки констант в
, то последний столбец табл.4.12 содержит искомое представление дизъюнкции или конъюнкции в виде суперпозиции отрицаний, констант и исходной функции
. Для перехода от полученного представления к представлению двойственной функции (от конъюнкции к дизъюнкции и наоборот) дополнительно требуется отрицание (по закону де Моргана). Лемма доказана.
Таблица 4.12
| | Вид полинома | Эквивалентная булева функция | Искомая суперпозиция |
| 0 0 0 | | | |
| 0 0 1 | | | |
| 0 1 0 | | | |
| 0 1 1 | | | |
| 1 0 0 | | | |
| 1 0 1 | | | |
| 1 1 0 | | | |
| 1 1 1 | | | |
Пример.
. Самая короткая конъюнкция
. Полагаем
. Тогда
, что соответствует
в табл.4.12. Отсюда получаем:
; 
Две доказанные леммы позволяют получить все булевы операции с помощью немонотонных функций, нелинейных функций и констант. Это еще не функциональная полнота в обычном смысле, так как константы с самого начала предполагались данными. Однако, такое предположение оправдано при синтезе логических схем, где системе логических функций соответствует набор типовых логических элементов, а полнота системы означает возможность реализовать с помощью этих элементов любые логические функции. При схемной реализации константы 0 и 1 специальных элементов не требуют. Поэтому, имеет смысл ввести ослабленное понятие функциональной полноты: система функций
называется функционально полной в слабом смысле, если любая логическая функция может быть представлена формулой над системой
, то есть является суперпозицией констант и функций из
.
Сформулируем первую теорему о функциональной полноте.
Теорема. Для того, чтобы система функций
была функционально полной в слабом смысле, необходимо и достаточно, чтобы она содержала хотя бы одну немонотонную и хотя бы одну нелинейную функцию.
Необходимость. Классы монотонных и линейных функций замкнуты и содержат 0 и 1. Поэтому, если
не содержит немонотонных или нелинейных функций, то их нельзя получить с помощью суперпозиций функций из
и констант.
Достаточность. Пусть
содержит немонотонную и нелинейную функцию. Тогда, по лемме 1, подстановкой констант из монотонной функции получаем отрицание, а затем, по лемме 2, из нелинейной функции с помощью отрицаний и констант получаем дизъюнкцию и конъюнкцию. Теорема доказана.
Для формулировки необходимых и достаточных условий сильной полноты рассмотрим еще три замкнутых класса.
Функция
называется сохраняющей 0, если
. Функция называется сохраняющей 1, если
. Оба класса функций, сохраняющих 0 и сохраняющих 1, являются замкнутыми, что проверяется подстановкой констант в суперпозицию.
Напомним, что функция называется самодвойственной, если
. Класс самодвойственных функций замкнут.
Его замкнутость доказывается прямой выкладкой. (Чтобы избежать громоздких обозначений, далее она проводится не в самом общем виде, обобщение очевидно.)
Пусть
,
- самодвойственные функции. Подставим
в
вместо
. Получим:
.
Тогда в силу самодвойственности
и
:



то есть,
является самодвойственной.
Теперь сформулируем вторую - основную теорему о функциональной полноте.
Теорема. Для того, чтобы система функций
была функционально полной (в сильном смысле), необходимо и достаточно, чтобы она содержала: 1) нелинейную функцию, 2) немонотонную функцию, 3) несамодвойственную функцию, 4) функцию, не сохраняющую 0, 5) функцию, не сохраняющую 1.
Необходимость. Необходимость следует из замкнутости пяти классов, упомянутых в условии теоремы.
Достаточность. При доказательстве достаточности отметим следующее. Леммы 1 и 2 используют константы. Поэтому, сначала нужно получить константы (из условий 3-5 теоремы) и только потом можно воспользоваться теоремой о функциональной полноте в слабом смысле (предыдущей теоремой).
Прежде всего отметим, что если
несамодвойственна, то подстановкой в нее
и
можно получить константу. Действительно, ввиду несамодвойственности
найдется набор
, такой, что
. Но тогда функция
является константой, т.к.


Пусть теперь
не сохраняет 0,
не сохраняет 1,
несамодвойственна (
,
,
не обязательно должны быть различными). Рассмотрим два случая:
1. Если
, то функция
есть константа 1, так как
по определению
и
, а функция
, то есть
есть константа 0.
2. Если же
, то
, так как по определению
и
. Но тогда, из
подстановкой
и
получим функцию
, являющуюся константой, а используя еще раз
, получим вторую константу. Итак, в любом случае выполнение условий 3-5 теоремы достаточно для получения констант 0, 1.
Используя этот факт и теорему о функциональной полноте в слабом смысле, получаем доказательство данной теоремы. Теорема доказана.






