Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДИСКРЕТНАЯ МАТЕМАТИКА - ч3.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
1.19 Mб
Скачать

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

Определение 1. Функции f*(x1, ..., xn) называется двойственной к функции f(x1, ..., xn), если f*(x1, ..., xn) = ( 1, ..., n).

Пример 1. Покажем с помощью таблицы истинности, что константа 0 двойственна к 1:

x

f

f*

0

1

0

0

1

1

Функции f(x) = x и g(x) = двойственны сами себе:

x

f

f*

g

g*

0

1

0

1

0

1

1

0

1

0

так как f*(x)= ( ).

Определение 2. Если f*(x1, ..., xn) = f(x1, ..., xn), то f(x1, ..., xn) называется самодвойственной.

Пример 2. Покажем, что f(x1,x2,x3)=x1x2x3 – самодвойственна:

x1

x2

x3

f

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

0

1

1

0

1

0

0

1

0

1

1

0

1

0

0

1

Если f*– самодвойственна, то ( 1, ..., n) = f(x1, ..., xn), т.е. на противоположных наборах функция принимает противоположные значения.

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

x1 x2

f=х1х2

f*

g=x1|x2

g*=x1 x2

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*(f1*( x1, ..., xn), ..., fm*( x1, ..., xn)), что и требовалось доказать.

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

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

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

x y

xy

(xy)*

x y

(x y)*

0 0

0 1

1 0

1 1

0

1

1

0

1

0

0

1

1

1

0

1

0

1

0

0

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

(x y)* = x ~ y = = x y 1, x y = y x ,

(x y)* = y, x y = y.

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

f* = yz ( (x (y z) 1)) = yz z(x (y z) 1) = z( y( xz )) = z( y (xz1)) = z( y (x )) = z y(z xz ) = 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 ) = ( x tzxxz) = ( txzxz)

= (x(zt)).