Пример

а) Константы 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.

Используя этот факт и теорему о функциональной полноте в слабом смысле, получаем доказательство данной теоремы. Теорема доказана.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: