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

§1.5. Полнота, замкнутость. Теорема Поста о полноте

~ k

) и

~ n

 

~ n

) функция

Определение. Для функций f (x

f1 (x

), K, fk (x

ϕ(x1 , K, xn ) = f ( f1 (x1 , K, xn ), K,

fk (x1 , K, xn )) называется

суперпозицией.

 

 

 

 

 

Определение. Класс булевых функций Ψ ={ f1 , K,

fk , K} называется

функционально полным, если любая функция из P2

может быть

представлена в виде формулы над Ψ .

 

 

 

 

Замечание. Класс Ψ может быть конечным или бесконечным.

Примеры полных классов: а) Ψ = P2 ; б) Ψ ={x, x1 & x2 , x1 x2 } (любая булева функция выражается формулой в виде конъюнкции, дизъюнкции и инверсии); в) Ψ ={0, 1, x1 & x2 , x1 x2 } для любой

булевой функции можно привести ее полином Жегалкина. Определение. Пусть K некоторый класс булевых функций. Замыканием K называется множество всех булевых функций, получающихся в виде формул над K (обозначается [K] ).

Свойства:

1.K1 K2 [K1 ] [K2 ] .

2.K [K] .

3.[[K]]=[K].

Определение. Класс K называется: – замкнутым, если [K] = K ; – полным, если [K] = P2 ; – предполным, если K не полный, но для любой функции f K класс K1 = K { f } полный.

Важнейшие замкнутые классы

Обозначим через T0 ={ f | f (0, K, 0) = 0} ; T1 ={ f | f (1, K, 1) =1} ;

S ={ f | f

= f *}

класс самодвойственных функций;

 

~

~

~

~

~

~

M ={ f | α

, β

:αpβ f (α)

f (β)} класс монотонных функций,

а функция

f M

называется монотонной;

L ={ f | f (x1 , K, xn ) =α0 α1 x1 K αn xn } класс линейных функций, а f L называется линейной.

Лемма. Классы T0 , T1 , S, M , L

замкнутые.

 

 

Доказательство. а) Пусть функция F = f ( f1 , K, fk ) , где

 

f ,

f1 , K, fk Т0 . Покажем, что F T0 . Действительно,

 

 

F (0, K, 0) = f ( f1 (0, K, 0), K,

fk (0, K, 0)) = f (0, K, 0) = 0 .

Следовательно, класс T0 замкнут.

 

 

 

 

б) Аналогично предыдущему доказывается замкнутость класса T1 .

в) Пусть функция F = f ( f1 , K,

fk ) , где

f ,

f1 , K, fk

 

самодвойственные, тогда F* = f * ( f1*, K,

fk *) = f ( f1 , K,

fk ) = F ,

т. е. . F S . Следовательно, класс S замкнут.

 

г) Пусть функция F = f ( f1 , K,

fk ) , где

f ,

f1 , K, fk M . Покажем,

 

 

 

 

 

 

~

= (x1 , K, xn ),

~

 

 

 

что F M . Пусть x

x1 = (x11 , K, x1p ), K,

 

~

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

= (xk1 , K, xkpk )

Наборы переменных состоят из переменных,

xk

встречающихся у функций F,

f1 , K, fk соответственно.

 

 

~n

и

~ n

 

 

 

 

 

 

 

 

~

 

Пусть α

 

β

 

два набора значений переменных x . Они

 

 

 

 

 

 

 

~

,

~

 

~

~

значений переменных

определяют наборы α1

β1 , K

, αk ,

βk

~

~

 

 

 

 

~

 

~

 

 

~

 

~

 

x1 , K, xk , причем α 1

p β 1 , K ,

α k

p β k . Так как

 

f1 , K, fk M , то

 

 

~

 

 

 

~

~

 

 

 

 

 

 

 

~

 

 

 

 

 

 

 

 

~

 

 

f1 (α1 )

f1 (β1 ), K, fk (αk ) fk (βk ) .

 

 

 

 

 

 

 

 

~

 

 

~

 

 

~

f M ,

Тогда ( f1 (α1 ), K, fk (αk )) p( f1 (β1 ), K, fk (βk )) . Функция

поэтому

 

 

 

~

 

 

~

 

f

 

~

~

 

 

f ( f1 (α1 ), K,

fk (αk ))

( f1 (β1 ), K, fk (βk )) . Откуда

 

~

= f

 

 

~

 

 

~

 

 

 

~

~

~

 

F(α)

( f1 (α1 ), K

, fk (αk ))

f ( f1 (β1 ), K, fk (βk )) = F(β) .

Следовательно, класс S замкнут.

д) Класс L замкнут, так как линейное выражение, составленное из линейных выражений, является линейным.

Лемма (о несамодвойственной функции). Если f (x1 , K, xn ) S , то из нее путем подстановки функций x и x вместо xi можно получить несамодвойственную функцию одного переменного, т.е. константу. Доказательство. Так как f (x1 , K, xn ) S , то существует такой

набор (α1 , K, αn ) такой, что f (α1 , K, αn ) = f (α1 , K, αn ) . Рассмотрим функцию ϕi (x) = xαi , 1 i n . Пусть

ϕ(x) = f (ϕ1 (x), K, ϕn (x)) .

Тогда

ϕ(0) = f (ϕ1 (0), K, ϕn (0)) = f (0α1 , K, 0αn ) = f (α1 , K, αn ) = = f (α1 , K, αn ) = f (1α1 , K,1αn ) = f (ϕ1 (1), K, ϕn (1)) =ϕ(1).

Следовательно, получили константу 0 или 1.

 

 

 

Замечание. Если αi = 0 , то вместо xi

подставляем

 

 

, если же αi = 1

x

то x (или наоборот).

 

 

 

 

 

 

 

~ n

 

 

 

 

 

 

 

 

 

) ,

Замечание. Для того чтобы определить является ли функция f (x

 

 

 

~

, самодвойственной, следует

заданная своим вектором значений α f

 

 

 

 

~

 

из первой

 

 

проверить, получается ли вторая половина вектора α f

 

 

отражением и последующего инвертирования его координат.

 

 

 

 

 

~ n

) M , то подстановкой

Лемма (о немонотонной функции). Если f (x

констант 0 , 1 и функции x из нее можно получить

 

.

 

 

x

 

 

Доказательство. Если f (x1 , K, xn ) M , то найдутся два набора

 

~

и

~

~

~

 

 

 

~

~

значений переменных α1

β1 таких, что α1 p β1 и

f (α1 ) > f (

β1 ) .

~

~

различаются в m координатах

 

 

Поскольку наборы α1 и

β1

 

 

(1 m n ), то меняя по одной координате между ними можно вставить

m 1 наборов таких, что

 

~ ~

~ ~

~

α1 pα

2 pα3 pKpαm p β1 .

~

 

 

~

 

 

 

 

 

Так как f (α1 )

> f ( β1 ) , то в этой цепочке найдется два соседних

~

 

и

~

+1

~ ~

и

~

~

переменных αk

αk

таких, что αk pαk +1

f (αk ) > f ( αk +1 ) .

Пусть эти наборы различаются в i - ой координате:

α~k = (α1, K, αi1, 0, αi+1, K, αn )

α~k +1 = (α1 , K, αi1 , 1, αi+1 , K, αn ) .

Рассмотрим функцию

ϕ(x) = f (α1 , K, αi1 , x, αi+1 , K, αn ) .

Получаем

 

 

 

 

~

 

~

ϕ(0) = f (α1 , K, αi1 , 0, αi+1 , K, αn ) =

 

f (αk ) > f ( αk +1 ) =

= f (α1 , K, αi1 , 1, αi+1 , K, αn ) =ϕ(1).

 

 

Поскольку, ϕ(0) >ϕ(1) , то ϕ(x) = x .

 

 

 

 

Замечание. Для проверки на монотонность функции

~ n

) , заданной

f (x

 

 

~

, нужно сначала разделить его две равные

своим вектором значений α f

~

 

 

~

= (α2n1 , K, α2n 1 ) . Если

части α f 0 = (α0 , α1 ,K, α2n11 ) и α f 1

~

~

не выполнено, то

~ n

) немонотонная. В

отношение α f 0 pα f 1

f (x

противном случае разделим каждый из полученных векторов опять

~

~

~

~

 

 

 

 

пополам α f 0,0

, α f 0,1

и α f 1,0

, α f 1,1 . Проверим сначала первую пару на

 

 

~

~

 

 

 

 

выполнение отношения α f 0,0 pα f 0,1 , и в случае положительного

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

Лемма (о нелинейной функции). Если f (x1 , K, xn ) L , то из нее

путем подстановки констант 0 , 1 и функций x и x , а также, быть может, инвертированием f , можно получить функцию x1 & x2 . Доказательство. Возьмем полином Жегалкина для f :

f (x1 , K, xn ) =

 

ai1Kis xi1 Kxis .

(i1

,K,is )

0i1

<K<is n

В силу нелинейности полинома в нем найдется член, содержащий не менее двух множителей. Без ограничения общности можно считать, что

среди этих множителей присутствуют x1 и x2 . Тогда можно преобразовать полином следующим образом:

ai1Kis xi1 Kxis = x1 x2 f1 (x3 ,K, xn )

(i1 ,K,is ) 0i1<K<is n

x1 f2 (x3 ,K, xn ) x2 f3 (x3 ,K, xn ) f4 (x3 ,K, xn ) ,

где в силу единственности полинома f1 (x3 ,K, xn ) ≡/ 0 .

Пусть α3 ,K, αn таковы, что f1 (α3 ,K,αn ) =1. Тогда

ϕ(x1 , x2 ) = f (x1 , x2 ,α3 ,K,αn ) = x1 x2 α x1 β x2 γ ,

где α, β,γ – константы, равные 0 или 1. Рассмотрим функцию

ψ(x1 , x2 ) , получаемую из ϕ(x1 , x2 ) следующим образом:

ψ(x1 , x2 ) =ϕ(x1 β, x2 α) αβ γ .

Очевидно, что

ϕ(x1 β, x2 α) αβ γ = (x1 β)(x2 α)

α(x1 β) β(x2 α) γ αβ γ = x1 x2 .

Следовательно, ψ (x1 , x2 ) = x1 & x2 .

Лемма. Классы T0 , T1 S, M , L попарно различны.

Доказательство. Для доказательства леммы приведем функции, лежащие в классах, но так, чтобы классы взаимно не поглощались.

Рассмотрим функции 0,1, x и построим таблицу принадлежности

классам. В таблице будем ставить «+», если функция принадлежит классу, и «–» в противном случае.

 

 

 

T0

T1

S

M

L

0

 

+

+

+

1

 

+

+

+

 

 

 

+

+

 

x

Если бы какие-нибудь два класса совпадали, то совпадали и соответствующие столбцы таблицы. Так как они не совпадают, делаем вывод о попарном различии классов.

Теорема Поста (о полноте). Для того чтобы система функций Φ была полной необходимо и достаточно, чтобы она целиком не содержалась

ни в одном из пяти замкнутых классов T0 , T1 S, M , L . Доказательство. Необходимость. Пусть система Φ полна. Тогда [Φ] = P2 . Допустим, что Φ содержится целиком, в каком из пяти классов (обозначим его через R ), т.е. Φ R . В этом случае

P2 =[Φ] [R] = R . Получаем противоречие с только что доказанной

леммой.

Достаточность. Пусть Φ не содержится целиком ни в одном из пяти классов Поста. Выделим из нее подсистему функций, зависящих от

переменных x1 , K, xn , Φ′ ={ f1 , f2 , f3 , f4 , f5 } , где f1 T0 , f2 T1 , f3 S, f4 M , f5 L , и на ее основе построим полную систему.

1. При помощи f1 ,

f2 , f3 построим функции (константы) 0

и 1. Так как

f1 T0 , то либо (а)

f1 (1, K,1) =1 либо (б) f1 (1, K,1) = 0 .

 

(а) Рассмотрим функцию ϕ(x) = f1 (x, K, x) . Из цепочки равенств

ϕ(0) = f1 (0, K, 0) =1 = f1 (1, K,1) =ϕ(1) следует, что ϕ(x) 1. (б) В этом случае для функции ϕ(x) = f1 (x, K, x) получаем

ϕ(0) = f1 (0, K, 0) =1 = f1 (1, K,1) =ϕ(1) , т.е. ϕ(x) x .

Вторую константу получаем, используя функцию f2 .

Если же константы построить не удалось, то, взяв полученную функцию

x строим с помощью x и f3 (лемма о несамодвойственной функции) константы.

2. Если же константы построить удалось, то, используя функцию f4

(лемма о немонотонной функции) строим x .

3. При помощи 0, 1, x и f5 (лемма о нелинейной функции) строим

функцию x1 & x2 .

Система Φ′′ ={x, x1 & x2 } полная. Тогда и Φ′ − полная.

Следствие 1. Из всякой полной системы можно выделить полную подсистему, содержащую не более пяти функций.

Лемма. Из всякой полной системы можно выделить полную подсистему, содержащую не более четырех функций.

Доказательство. Так как f1 T0 , то либо f1 S либо f1 M . Тогда полная система будет состоять из функций { f1 , f2 , f4 , f5} либо

{ f1 , f2 , f3 f5 } .

Пример 1. Определить количество функций классов T0 и T1 , зависящих от переменных x1 , K, xn .

Решение. Вектор значений функции f T0 имеет вид

~

= (0, α1 , K, α2n 1 ) , т.е. определено только значение на нулевом

α f

наборе переменных, свободных же 2n 1. Следовательно,

| T

| = 22n 1 . Аналогично вычисляется количество функций класса T .

0

1

Пример 2. Определить количество самодвойственных функций, зависящих от n переменных.

Решение. Функция f S принимают противоположные значения на

противоположных наборах переменных. Поэтому для ее задания достаточно задать первую половину ее вектора значений

~

α f = (α0 , α1 ,K, α2n11 , α2n11 , K, α0 ) . Следовательно, различных

144424443

2n1

самодвойственных функций, зависящих от переменных n , 22n1 . Пример 3. Определить количество линейных функций, зависящих от переменных x1 , K, xn .

Решение. Различных линейных функций от переменных x1 , K, xn

столько же, сколько различных векторов (α0 , α1 , K, αn ) , т.е. 2n+1 .

Задачи для самостоятельного решения.

1.Привести все самодвойственные функции от двух переменных.

2.Выяснить, является ли самодвойственной функция f :

а)

f = xy yz zx ;

б) f = x y z 1;

в)

f = (x

 

z)t x

 

z ;

 

y

y

 

3. Выяснить, является ли самодвойственной функция f , заданная

векторно:

 

~

 

 

 

 

 

~

=

(1010) ;

 

 

 

 

 

 

 

 

а) α f

 

 

~

б) α f = (10010110) ;

~

=

(10110101) ;

= (1100100101101100) .

в) α f

г) α f

4. Определить, какие из переменных функций

~ n

f (x

) следует заменить

на x , а какие на

 

с тем, чтобы получить константу:

x

~

=

(10110110) ;

~

= (11011000) ;

 

 

а) α f

б) α f

 

 

~

=

(11001110) ;

~

= (10001101000101100) .

в) α f

г) α f

 

 

 

 

 

 

 

~ n

) S :

5. Выяснить при каких n 2 функция f (x

 

 

~ n

 

 

 

 

~ n

)

=

 

 

xi x j ;

а) f (x

) = x1 x2 K xn ; б) f (x

 

 

 

) = xi x j .

 

 

 

 

1i< jn

 

~ n

 

 

 

 

 

 

 

в) f (x

 

 

 

 

 

 

 

1i< jn

6.Привести все линейные функции от двух переменных.

7.Представив функцию f полиномом, выяснить, является ли она

линейной:

а) f = x y x y ; б) f = xy x y z ; в) f = (x y) ( y x)) ~ z .

8. Выяснить, является ли линейной функция f , заданная векторно:

~

= (1001) ;

 

~

= (1101) ;

а) α f

~

б) α f

~

= (10110101) ;

= (0110100101101001) .

в) α f

г) α f

9. Подставляя на места переменных нелинейной функции ~ n f (x )

функции из множества {0,1, x, y} , получить хотя бы одну из функций

 

 

 

 

 

 

 

 

 

 

 

 

 

x & y, x & y, x & y :

 

 

 

 

 

 

~

= (01100111) ;

~

 

= (11010101) ;

а) α f

б) α f

 

~3

 

 

 

 

 

 

 

 

 

 

 

 

) = x1 x2 x2

x3 x3 x1 ;

в) f (x

~

= (1101111111001111) .

 

 

г) α f

 

 

10. Найти число линейных функций

~ n

) ,

 

 

 

f (x

 

 

 

 

а) существенно зависящих в точности от k

переменных;

 

 

~

~

 

 

 

 

б) удовлетворяющих условию f (0)

= f (1) =1.

 

 

 

 

 

 

 

 

 

 

~ n

) :

11. Выяснить, принадлежит множеству T0 \ T1 функция f (x

~ 3

) = (x1 x2 ) (x2 x3 ) (x3 x1 ) ;

 

 

 

а) f (x

 

 

 

~ 3

 

 

 

 

 

 

 

 

 

) = x1 x2 x3 x1 x2 x1 .

 

 

 

 

 

 

б) f (x

~ n

 

 

 

 

12. Выяснить, при каких n функция

) T0 \ T1 :

 

f (x

 

 

~ n

) = x1 x2 K xn ; б)

~ n

) =

 

xi x j .

 

а) f (x

f (x

 

 

 

 

 

 

 

1i< jn

 

13.Приведите все монотонные функции от двух переменных.

14.Выяснить, является ли монотонной функция f :

а) f = (x y) (x ~ y) ;

б) f = xy xz zy ;

 

в) f = x1 (x2 x3 ) ;

г) f = x1 (x2 x3 ) x4 .

15. Выяснить, является ли монотонной функция

f

, заданная векторно:

~

= (0110) ;

 

 

~

 

 

 

 

 

 

а) α f

 

 

б) α f = (10110111) ;

 

~

=

~

= (001000110111111) .

 

в) α f

(00010111) ; г) α f

 

 

 

 

 

 

~ n

 

 

 

 

 

~

16. Для немонотонной функции f (x

) указать два соседних набора α

~

 

 

 

 

 

~

~

 

 

~

~

и β значений переменных таких, чтоα p β и

f (α) > f

(β ) :

 

~ 3

 

 

 

 

~ 3

 

 

 

 

 

 

) = x1 x2 x3 x1 x2 ;

 

) = x1

x2 ;

 

а) f (x

б) f (x

 

 

~ 4

) = x1 x3 x2 x4 .

 

 

 

 

 

 

 

в) f (x

 

 

~ n

 

 

 

 

17. Выяснить при каких n 2

 

 

)

монотонна:

функция f (x

 

~ n

 

 

 

 

~ n

) =

 

xi x j .

а) f (x

) = x1 x2 K xn ; б) f (x

 

 

 

 

 

 

 

1i

< jn

 

18. Подсчитать число функций, зависящих от переменных x1 , K, xn и принадлежащих множеству A :

а) A =T0 T1 ; б) A =T0 L ;

в) A =T1 S ;

г) A =T0 L ; д) A = L S T0 ;

е) A = (L \ T0 ) S ;

ж) A = (S L) \ T1 ;

з) A = S \ L ;

и) A = L \ S .

19. Выяснить, полна ли система функций A :

 

а)

A ={ f1 = (0110), f2 = (11000011), f3 = (10010110)};

б)

A ={ f1 = (0111), f2 = (01011010), f3 = (01111110)} ;

в) A ={xy, x y, x y, xy yz zx} ;

 

г) A ={xy, x y, x y z 1} ;

 

д) A = (S M ) (L \ M ) ;

 

е) A = (L T1 T0 ) S \ (T1 T0 ) .

 

 

 

Ответы

 

1. x1 ,

x1

, x2 ,

x2

. 2. а) f S ; б)

f S ; в) f S . 3. а) f S ; б)

f S ; в) f S ; г) f S . 4. а)

x1 , x3 заменить на

 

, x2 на x или

x

наоборот; б) существуют две пары наборов таких, что

f (α1 , K, αn ) = f (α1 , K, αn ) : (010) – (101) и (011) – (100). В первом случае заменив x1 , x3 на x , а x2 на x получим константу 0; во втором заменив x1 на x , а x2 , x3 на x получим константу 1; в) получим константу 1, заменив, например, x1 , x2 на x , а x3 на x получим константу 0; во втором заменив x1 на x , а x2 , x3 на x ; г) существуют

три пары наборов таких, что f (α1 , K, αn ) = f (α1 , K, αn ) : (0011) – (1100), (0100) – (1011) и (0110) – (1110). Можем координаты,

соответствующие 0 в первом наборе каждой пары заменяем на x , а соответствующие 1 – на x . 5. а) при нечетных n ; б) – в) при всех n 3 f S . 6. 0,1, x1 x2 , x1 , x1 , x2 , x2 , x1 ~ x2 . 7. а)

f = x y x y =

x y (1 x) y = (x y) (1 x) y = x(1 y) (1 x) y = x y ; б) f L ; в) f L . 8. а) f L ; б) f L ; в) f L ; г) f L .

9. а) f (1, x, y) = x y ; б) f (x, y, 0) г) f ( y, 0,1, x) = x y . 10. а) 2 Cnk

= x y ; в) f (x, y,1) = xy ;

б) 2n1 . 11. а) f T0 \ T1 ;

б)

f T0 \ T1 . 12. а) при нечетных n 2 ; б) при всех n 2 (mod 4) и

n 3 (mod 4) f T0 \ T1 . 13. 0,1, x1 x2 , x1 , x2 , x1 & x2 .

14. а) f M ; б) f M ; в)

f M ; г) f M . 15. а) f M ;

б)

f M ; в)

f M ; г) f M

~

~

. 16. а) α = (001) ,

β = (011) ;

 

~

~

 

 

~

~

~

б) α = (010) ,

β = (011) или

β

= (110) ; α = (100) ,

β = (101) или

~

 

~

 

 

 

 

 

β

= (110) ; в) α {(0101), (0111), (1010), (1011), (1101), (1110)} ,

~

 

 

 

 

 

 

 

β = (1111) . 17. а) при n =1 f M , при

 

n 2 f (x1 ,1, 0, K,1) =

 

M

б) при n = 2, 3 f M и f M при

x1

всех n 4 .