Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник по дискретной математике.doc
Скачиваний:
295
Добавлен:
02.05.2014
Размер:
3.74 Mб
Скачать

Пример 3. Покажем, что функция х1х2 двойственна к x1&x2, функция х1х2 двойственна к функции x1|x2.

x1x2

f=х1х2

f*

g=x1|x2

g*=x1x2

0 0

0 1

1 0

1 1

0

1

1

1

0

0

0

1

1

1

1

0

1

0

0

0

Теорема о двойственных функциях

Если f* двойственна кf, тоfдвойственна кf*.

Доказательство.f*(x1, ...,xn) = (1, ..., n). Найдем двойственную функцию кf*, т.е. (f*(x1, ...,xn))* = ((1, ..., n))* = (1, ..., n) =f(x1, ..,xn).

Предположим, что функция задана формулой. Можно ли найти по этой формуле двойственную функцию? Ответ на этот вопрос дает следующая теорема.

Принцип двойственности

Теорема: Пусть функцияh(x1, ...,xn) реализована формулойh(x1, ...,xn) = =g(G1, ...,Gm) =g(f1(x1, ...,xn), ...,fm(x1, ...,xn)), где какие-то переменные могут быть фиктивными. Тогдаh*( x1, ...,xn) =g*(f1*(x1, ...,xn), ...,fm*(x1, …,xn)), это означает, что если функция задана некоторой формулой, то чтобы получить двойственную функцию, надо в этой формуле все знаки функций заменить на двойственные, 0 на 1, 1 на 0.

Доказательство.h*(x1, ...,xn) = (1, ..., n) = (f1(1, ..., n), ...,fm(1, ..., n)) = .. n. . ng..g*(f1*(x1, ...,xn), ...,fm*(x1, ...,xn)), что и требовалось доказать.

Если функция h(x1, ...,xn) реализуется формулойN[f1, ...,fn], то формулу, полученную изNзаменойfi, входящих в нее, наfi* и реализующую функциюh*(x1, ...,xn), будем называть двойственной и обозначатьN*(x1, ...,xn).

Пример 4.Построить формулу, реализующуюf*, еслиf= ((xy)z) (y(xyz)). Покажем, что она эквивалентна формулеN=z(xy).

Найдем (xy)* и (xy)*.

x y

xy

(xy)*

x y

(xy)*

0 0

0 1

1 0

1 1

0

1

1

0

1

0

0

1

1

1

0

1

0

1

0

0

Из таблиц видно, что

(xy)* = x ~ y = = xy1, xy =yx,

(xy)* =y xy =y.

По принципу двойственности:

f* = yz((x(yz)1)) = yzz(x(yz)1) =z(y(xz)) =z(y(xz1)) =z(y(x)) =zy(zxz) =z(yx) =z(xy).

Тогда f= (f*)* = [z(xy)]* =z(x~y).

Пример 5.Найти формулу для f* и показать, что она эквивалентна формулеN= (x(zt)), еслиf= (xyz~(tx))t.

f* = ((xyz)t(y))(t) = (t(y)(xyz))(t) =

= (t(xyz)(x))(t) = t(xyz)(xtx) =

= t(xyz)(x) = (xtzxxz) =(txzxz)

= (x(zt)).

Лемма о несамодвойственной функции

Подстановкой функций ив несамодвойственную функцию можно получить одну из констант.

Доказательство. Пусть– несамодвойственная функция. Тогда существует набор, для которого. Построим функцию, заменив единицы вна, а нули – на. Так как, то. Заметим, что.

Тогда , т.е.. Следовательно, функцияесть одна из констант.

2.4 Разложение булевой функции по переменным

Обозначим x=

Посмотрим, чему равно xпри разных значенияхxи.

x\

0

1

0

1

0

1

0

1

Из таблицы следует: x=1 тогда и только тогда, когда x=.

Теорема о разложении функции по переменным

Пустьf(x1, ..., xn) P2. Тогда для любого m: 1 ≤ m ≤ n допустимо представление:

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

где дизъюнкция берется по всем наборам из 0 и 1, которое называется разложением функции f по переменным x1, ...,xn.

Прежде чем доказать утверждение, рассмотрим примеры.

Пример 1.m= 1, запишем разложение по переменнымх:

f(x1, ...,xn) = = f(0,x2 , …,xn)x1f(1,x2, ...,xn). (1)

Пример 2. m=2, запишем разложение по переменнымхи:

f(x1,x2,…xn) = =

.

Если f(x,x) =xx, то последняя формула даетxx= xx.

Доказательство.Для доказательства возьмем произвольный набор,,n) и покажем, что левая и правая части формулы (1) принимают на этом наборе одинаковые значения. Слева имеемf.n. Cправа :.

Дизъюнкция берется по всевозможным наборам (, ...,m). Если в этих наборах хотя бы одноii (1≤im), то= 0 и , следовательно, ненулевой член будет только на наборе (, ...,m) = (, ...,m), тогда f.n.

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

Доказательство. Существование СДНФ для функции не равной тождественно нулю вытекает из предыдущей теоремы. Покажем, что эта СДНФ единственная. В самом деле, имеетсяn-местных функций, не равных нулю тождественно. Подсчитаем число различных СДНФ отnпеременных. Путьозначает число сочетаний изnэлементов поk. Тогда число одночленных СДНФравно. Числоk-членных СДНФ равно. Числоn-членных СДНФ равно. Число всех различных СДНФ

Итак, функций реализуются посредствомСДНФ, т.е. каждой функции соответствует единственная СДНФ.

Замечание. – элементарная конъюнкция ранга n по числу входящих переменных, предполагается, что приij,хi хj. СДНФ дляf(x1, ..., xn)дизъюнкция элементарных конъюнкций рангаn. Если функция представлена в виде дизъюнкций элементарных конъюнкций, где ранг хотя бы одной элементарной конъюнкции меньшеn, то такая форма называетсядизъюнктивной нормальной формой(ДНФ).

Cледствие 2.Любая функция алгебры логики может быть представлена в виде формулы через отрицание, & и.

а) Если f≡ 0, тоf(x1, ...,xn) =&.

б) Если f(x1, ...,xn)0 тождественно, тогда ее можно представить в виде СДНФ, где используются только связки , &,. СДНФ дает алгоритм представления функции в виде формулы через &,, .

Пример 3.Пусть функцияf(x1,x2,x3) задана таблицей истинности. Запишем ее в виде СДНФ. Наборов, на которых функция равна 1, три: (0, 1, 0), (1, 0, 0) и

(1, 1, 1), поэтому f(x1,x2,x3) =x10 &x21 &x30 x11 &x20 &x30 x11&x21 &x31=

=&x2&x1&&x1&x2&x3.

x1

x2

x3

f

0

0

0

0

1

1

1

1

0

1

1

1

0

0

1

1

0

1

0

1

0

1

0

1

0

0

1

0

1

0

0

1

Следствие 3. Мы умеем представлять функцию в виде . Нельзя ли представить ее в виде . Пусть функция f(x1, ..., xn) 1 тождественно. Тогда функция f* 0 тождественно, и ее можно представить в виде СДНФ:

.

По принципу двойственности заменим & на и наоборот, получим

(2)

называется элементарной дизъюнкцией ранга n. Представление функции в виде (2) называетсясовершенной конъюнктивной нормальной формой или в краткой записи –СКНФ. СКНФ дляf(x1, ...,xn) – конъюнкция элементарных дизъюнкций рангаn. КНФ дляf(x1, ...,xn) – конъюнкция элементарных дизъюнкций, где ранг хотя бы одной элементарной дизъюнкции меньшеn.

Пример 4.Пустьf(x1,x2,x3) =x1 (x2(x3 ~x1)). Представим ее в виде СКНФ, для этого получим таблицу истинности.

x1

x2

x3

x3~x1

x2 (x3~x1)

f

0

0

0

0

1

1

1

1

0

0

1

1

0

0

1

1

0

1

0

1

0

1

0

1

1

0

1

0

0

1

0

1

1

1

1

0

1

1

0

1

1

1

1

1

1

1

0

1

Функция равна нулю только на наборе (1, 1, 0), поэтому

f(x1x2x3)=x1x2x3=x10x20x31=x3.