русс | укр

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

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

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

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


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

Совершенные нормальные формы


Дата добавления: 2015-07-23; просмотров: 911; Нарушение авторских прав


Введем обозначение: xs=x&s Ú & , где s - параметр, равный либо 0, либо 1. Составив таблицу значений для xs, убеждаемся, что

а) xs равно при s = 0 и x при s =1; б) xs=1 Û, когда x =s.

Теорема 1.1 (о разложении функции по m переменным). Каждую функцию f(x1,...,xn) алгебры логики при любом m (1 £ m £ n), можно представить в следующей форме:

f(x1,...,xm,xm+1,...,xn)= f(s1,...,sm,xm+1,...,xn), (1.1)

где дизъюнкция берется по всевозможным наборам значений переменных x1,...,xm. Это представление называется разложением функции по m переменным x1,...,xm.

 f(s1,...,sm,xm+1,...,xn) =

( принимает 2 значения: 0, и тогда вся конъюнкция обращается в 0, или 1 при xi=si ; поэтому среди 2m конъюнкций имеется только одна, не равная нулю, при x1=s 1, x2=s 2, ..., xm=s m)

f(x1,...,xm,xm+1,...,xn)= f(x1,...,xm,xm+1,...,xn). 

Пример. При n=3, m=2:

f(x1, x2, x3) = x10 x20 f(0,0,x3) Ú x10 x21 f(0,1,x3) Ú x11 x20 f(1,0,x3) Ú x11 x21 f(1,1,x3).

Пусть f(x1,...,xn)¹0. Разложим эту функцию по всем n переменным:

f(x1,...,xn) = f(s1,...,sn).

Если значение f(s1,..., sn) равно нулю, то и вся конъюнкция равна 0. Составим дизъюнкцию только по тем наборам переменных, на которых f(s1,..., sn)=1:

f(x1,...,xn) . (1.2)

Такое разложение носит название совершенной дизъюнктивной нормальной формы (СДНФ).

Теорема 1.2.Каждая функция алгебры логики может быть выражена в виде формулы через отрицание, конъюнкцию и дизъюнкцию.

 При f(x1,...,xn)º0 f(x1,...,xn)= . Иначе представим f в виде СДНФ (ф-ла 1.2). 

Данная теорема позволяет для каждой функции построить формулу, реализующую ее в виде СДНФ: в таблице значений функции f(x1,...,xn) отмечают все строки (s1,...,sn), в которых f(s1,...,sn)=1, затем для каждой такой строки образуют логическое произведение: , после чего все полученные конъюнкции соединяют знаком дизъюнкции.



Примеры. 1) Записать СДНФ для функции xÅy. Решение. Мы имеем два набора (0, 1), (1, 0), на которых эта функция равна 1; поэтому xÅy= x0&y1 Ú x1&y0= y Ú x .

2) СДНФ для функции x­y =

3) Путем ~-х преобразований привести к СДНФ выражение yÚ z.

Решение. ДНФ yÚ z не является совершенной, т.к. входящие в нее конъюнкции содержат не все три переменные, от которых зависит функция. Всякую ДНФ можно привести к СДНФ расщеплением конъюнкций с помощью логической единицы.

yÚ z = 1 y 1 Ú 1 z = (xÚ ) y ( z Ú ) Ú ( yÚ ) z =

= xyz Ú Ú xy Ú y Ú Ú z = xyz Ú yz Ú xy Ú y Ú z.

СДНФ -это логическая сумма логических произведений. Возникает вопрос: нельзя ли для булевых функций получить разложение в виде логического произведения логических сумм? Покажем, что при f(x1,...,xn)¹1 это возможно, для чего разложим двойственную к f функцию f* ( очевидно, если f ¹0, то f *¹1) в СДНФ:

f*(x1,...,xn) .

Поменяв знаки & и Ú, составим тождество для двойственных формул:

f(x1,...,xn) .

С учетом определения двойственной функции преобразуем правую часть последнего равенства: f(x1,...,xn) .

Обозначив через для 1 £ i £ n, окончательно получим

f(x1,...,xn) . (1.3)

Это выражение носит название совершенной конъюнктивной нормальной формы (СКНФ).

Примеры. 1) Запишем СКНФ для функции xÅy. Эта функция равна 0 на наборах (0,0) и (1,1); поэтому xÅy = =(х Ú y) ( Ú ).

2) СКНФ для функции x | y = Ú

3) Путем эквивалентных преобразований привести к СКНФ выражение yÚ z = (yÚ )&(yÚz). КНФ (yÚ ) & (yÚz) не является совершенной, т.к. входящие в нее дизъюнкции содержат не все три переменные, от которых зависит функция. Всякую КНФ можно привести к СКНФ расщеплением дизъюнкций с помощью логического нуля.

(yÚ ) & (yÚz) = ( Ú yÚ0) & (0ÚyÚz)= ( Ú yÚ z ) & (x ÚyÚz)=(xÚyÚz) & ( ÚyÚz) & ( ÚyÚ ).

Итак, в качестве средства для задания булевых функций наряду с таблицами можно использовать язык формул над множеством функций, состоящих из отрицания, конъюнкции и дизъюнкции. На первый взгляд кажется, что по громоздкости язык СНФ примерно эквивалентен табличному языку. На самом деле он существенно лучше табличного языка.

Рассмотрим функцию f(x1,...,x20)=x1Úx2Ú...Úx20. Формула в правой части насчитывает 39 символов (20 символов переменных и 19 символов дизъюнкции), тогда как таблица для функции f(x1,...,x20) содержит 220 (более миллиона) строк.

Полнота. Примеры полных систем

Выше было показано, что всякая функция алгебры логики может быть выражена в виде формулы через элементарные функции , x1&x2, x1Úx2. Оказывается, что таким свойством обладают и некоторые другие системы элементарных функций.

Система функций {f1, f2,..., fk} называется функционально полной, если любая булева функция может быть записана в виде формулы через функции этой системы.

Примеры. Системы P2 - множество всех булевых функций и S2={ , x1&x2, x1Úx2}.

Теорема 1.3. Пусть даны две системы функций из P2: F={f1, f2,...} и G={g1,g2,...}, относительно которых известно, что система F полна и каждая ее функция выражается в виде формулы через функции системы G. Тогда система G также является полной.

 Пусть h - произвольная функция из P2. Т.к. система F - полная, можно выразить h формулой над F, то есть h=c(f1, f2,...). По условию f1=c1(g1,g2,...), f2=c2(g1,g2,...), ... Поэтому в формуле c(f1, f2,...) можно исключить вхождения функций f1, f2,..., заменив их функциями из G:

h=c(f1, f2,...)=c(c1(g1,g2,...), c2(g1,g2,...), ...)= c’(g1,g2,...).

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

Опираясь на теорему 1.3, можно установить полноту еще ряда систем.

3. Система S3={ ,x1&x2} является полной. В качестве полной системы выберем S2={ ,x1&x2,x1Úx2} (см. п. 2). В соответствии с законом де Моргана, x1Úx2= .

4. Система S4={ ,x1Úx2} является полной. Аналогично п. 3 с помощью закона де Моргана выражаем конъюнкцию через дизъюнкцию и отрицание: x1&x2= .

5. Система S5={x1­x2}, состоящая из одной функции - стрелки Пирса, является полной. В качестве полной выберем систему S3={ ,x1&x2}. Затем, =x­x и x1&x2=(x1­x1)­(x2­x2).

6. Система S6={x1|x2}, состоящая только из одной функции - штриха Шеффера, является полной. За полную возьмем систему S4={ ,x1Úx2}. Затем, =x|x и x1Úx2=(x1|x1)|(x2|x2).

7. Система S7={1,x1&x2,x1Åx2} является полной. За полную возьмем систему S3={ ,x1&x2}. Отрицание выразим через константу 1 и сложение по модулю 2: =xÅ1.

Формула, построенная из констант 0 и 1 и функций x1&x2 и x1Åx2 после раскрытия скобок и несложных алгебраических преобразований переходит в полином по модулю 2, который называют полиномом И.И.Жегалкина.

Пример. Общий вид полинома Жегалкина для функции трех переменных следующий:

f(x1,x2, x3)=a123x1x2x3 Å a12x1x2 Å a13x1x3 Å a23x2x3 Å a1x1 Å a2x2 Å a3x3 Å a0 ,

где a123, a12, ..., a0 - коэффициенты полинома, каждый из которых может принимать одно из двух значений - 0 или 1.

Теорема 1.4 (Жегалкина). Каждая функция из P2 может быть выражена при помощи полинома по модулю 2.

 Подсчитаем общее число различных полиномов Жегалкина от n переменных. Число m различных конъюнкций равно количеству подмножеств (i1,i2,...,ik) множества {1,2...,n}, то есть m=2n (Æ соответствует a0). Каждая конъюнкция имеет коэффициент a..., который можно выбрать двумя способами (0 либо 1). В соответствии с правилом произведения число различных полиномов от n переменных, которые можно образовать из этих конъюнкций, равно 2m= (пустому подмножеству конъюнкций соответствует полином 0).

Таким образом, число всех полиномов Жегалкина от n переменных равно числу всех булевых функций от тех же переменных. Отсюда, как следствие, получаем единственность представления функций посредством полиномов Жегалкина. 

Пример. Выразить x1|x2 в виде полинома Жегалкина. Ответ. x1|x2 = x1x2Å1.



<== предыдущая лекция | следующая лекция ==>
Переключательные функции | Замыкание и его свойства


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


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

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

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


 


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

 
 

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

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