Функциональная полнота.
Определение. Класс функций K называется предполным в С, если в С не существует класса К’, чтобы имело место К ÌК’ÌC, т.е. не найдётся класса, который бы включал в себя полностью данный класс и был меньше, чем С.
Мы выделили 5 классов функций алгебры логики. Различных классов функций гораздо больше; так, a-функции образуют свой класс, пересечение классов снова будет классом.
Пост установил, что классы М, D, L, CC1 и CC0 являются предполными и других предполных классов в С нет.
Результаты работ Поста позволили ответить на важный вопрос: какими свойствами должны обладать функции множества F, чтобы это множество порождало класс С. Такие множества называют функционально полными, поставленный вопрос известен как вопрос об условиях функциональной полноты.
Инженерная трактовка этого вопроса: какими свойствами должны обладать функции элементов, чтобы схемой из этих элементов можно было реализовать любые функции.
Решение задачи формулируется как теорема Поста.
Теорема. Для того, чтобы множество функций порождало класс всех функций С, необходимо и достаточно, чтобы это множество содержало, по крайней мере, одну немонотонную, одну несамодвойственную, одну нелинейную, одну не сохраняющую константу ноль и одну не сохраняющую константу единица функцию.
Необходимые условия формулируются из результатов Поста о предполных классах. Необходимо, чтобы по отношению любого из этих классов в F была функция, не принадлежащая классу. Действительно, если в рассматриваемом множестве нет, например, несамодвойственной функции, то в результате суперпозиции будут реализовываться только самодвойственные функции, то естьт.е. нельзя получить, например, конъюнкцию, которая не является самодвойственной.
Достаточность доказывается конструктивно. Покажем, как из функций, удовлетворяющих условиям теоремы Поста, получить функции инверсию и конъюнкцию или дизъюнкцию, составляющих функционально полный базис.
Пусть множество содержит функцию ff0, не сохраняющую константу ноль, ff1, не сохраняющую константу единица, ff2 –немонотонную, ff3 – несамодвойственную и ff4 – нелинейную функцию (функции не обязательно различны).
По определению ff0 (0,0,…,0) =1. Для этой функции возможны два варианта значений ff0 (1, 1,…,1).
· Если ff0 (1, 1,…,1)=1, то функция является b-функцией, и при подстановке вместо всех аргументов одного произвольного аргумента она превращается в константу 1. Имея константу 1, из функции ff1 получаем константу 0, так как ff1(1, 1,…,1)=0.
· Если ff0 (1, 1,…,1)=0, то функция является d-функцией, и при подстановке вместо всех аргументов одного произвольного аргумента она превращается в инверсию. В этом случае рассмотрим функцию ff3. Для неё найдется набор значений аргументов <aa1, aa2,…, aan>, такой, что
ff(aa1, aa2,…, aan)= ff(`aa1, `aa2,…, `aan).
В функцию ff3 поставим произвольную переменную в прямой форме, если компонента набора aai равна 1, и в инверсной форме, если компонента набора равна 0, Получим константу, равную ff(aa1, aa2,…, aan). Из неё с помощью инверсии получается вторая константа.
С помощью констант из функции ff2 можно получить инверсию.
Для неё найдется два соседних набора, таких, что на меньшем наборе функция равна единице, а на большем – нулю. Если подставим в ff2 константы этого набора, где они совпадают, и произвольную переменную, где наборы отличаются, получим инверсию этой переменной.
Константы и инверсия позволяет получить конъюнкцию переменных из функции ff4. Запишем эту функцию в виде полинома Жегалкина, выделим в нём первое вхождение переменных в конъюнкцию, и все переменные, кроме переменных конъюнкции, заменим на константу 0, а переменные конъюнкции заменим произвольно на два различных аргумента, например на xx и yy. В результате возможны (с точностью до инверсии константы С0 в полиноме) следующие варианты:
1. xxyy,
2. xxyyÅxx,
3. xxyyÅyy,
4. xxyyÅxxÅyy.
В первом случае получаем конъюнкцию, что и необходимо получить, во втором варианте полученная функция равна функции `xxyy, из которой с помощью инверсии получим конъюнкцию. То же самое можно сказать и о третьем варианте, где функция равна `yyxx. Для последнего варианта функция равна дизъюнкции.
Теорема доказана.
В табл. 5.13 показана принадлежность простейших функций к предполным классам. Здесь + означает, что функция принадлежит, х –что функция не принадлежит к классу. Здесь символом ‘ обозначена инверсия.
Из таблицы легко видеть, что функциональной полнотой обладают множества {`xx, xxÚyy}, {`xx, xx×yy}, {xx×yy, xxÅyy, 1}. {xx®yy, 1}. Особый интерес представляют две последние функции, составляющие монофункциональный базис. Такие функции, отвечающие всем условиям теоремы Поста, получили название функций шефферовского типа.
Таблица. 5.13 | ||||||
F | M | D | L | C1 | C0 | |
+ | х | + | х | + | ||
+ | х | + | + | х | ||
‘x | х | + | + | х | х | |
xÚy | + | х | х | + | + | |
x×y | + | х | х | + | + | |
x®y | х | х | х | + | х | |
xÅy | х | х | + | х | + | |
x»y | х | х | + | + | х | |
‘(x×y) | х | х | х | х | х | |
`(xÚy) | х | х | х | х | х | |
Теорема позволяет определить, является ли заданное множество функционально полным, если нет, то какой функции в нём не хватает. Можно решать задачу построения функции шефферовского типа от более чем двух переменных. Это должна быть d-функция, так как она не сохраняет константы. Как d-функция она немонотонна, и дальше нужно распределить единицы и нули в таблице так, чтобы функция была нелинейной и несамодвойственной.
Задачи Контрольные вопросы и задания
5.8.1. Представление функций
Задача 1. Постройте таблицу значений для функций, представленных в виде следующих формул.
Вариант 1. ((а->bb) Å (bb~cc))->dd
Вариант 2. (aa Å bb)->(bb->cc) &(dd Ú bbccaa);
Вариант 3. ((aa->bb)->cc) Ú`aaddcc) Å (aa Å bb);
Вариант 4. (aa->bb) Å (bb->aacc) Ú (aa->cc)
Вариант 5. ((aa->`bb)->cc) Úaa`ddcc) Å( `aa Åbb);
Вариант 6. ((dd->bb)->cc) Ú`aaddcc) Å (`aa Åbb);
Вариант 7. ((dd->bb) Å(`bb~cc)) Å dd
Вариант 8. ((а Å bb) Å (bbÚdd))->bbdd
Дата добавления: 2015-08-21; просмотров: 952;