русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Функциональная полнота.


Дата добавления: 2013-12-24; просмотров: 920; Нарушение авторских прав


Функции, сохраняющие константу

Если в функции f(xx1,xx2,…,xxn) вместо всех переменных поставить одну переменную х, то возможно 4 различных варианта: f(xx, xx, …, xx)Î{xx, 0, 1,`xx}.
В зависимости от варианта функцию называют

· a-функция, если f=xx;

· b-функция, если f=1;

· c-функция, если f=0;

· d-функция, если f=`xx,

Рассмотрим множество a- и b-функций. Для них имеет место ff(1,1,…,1)=1, поэтому эти функции называют функциями, сохраняющими 1. Можно показать, что суперпозиция этих функций будет снова сохранять константу 1. Значит, множество этих функций замкнуто и образует класс функций, сохраняющих единицу. Этот класс обозначают как С1.

Аналогично можно показать, что множество a- и c-функций образуют класс функций, сохраняющих константу 0, так как для них ff(0,0,…,0)=0.Этот класс принято обозначать как С0.

Определение. Класс функций 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-функция она немонотонна, и дальше нужно распределить единицы и нули в таблице так, чтобы функция была нелинейной и несамодвойственной.

 


 



<== предыдущая лекция | следующая лекция ==>
Линейные функции. | Функциональная полнота


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.