§ 1. Булевы функции или функции алгебры логики. E

advertisement
http://vmk.ucoz.net/
-3-
§ 1. Булевы функции или функции алгебры логики.
Пусть E = { 0,1 }, E — множество двоичных наборов
n
длины n. Набор ( α1 ,α 2 ,...,α n ) ∈ E
n
будем называть булевым
~ n . Число единиц в наборе α
~n
набором и обозначать через α
~ ║).
назовем весом набора (обозначение ║ α
n
Два
~ = ( α ,...,α , 0 ,α ,...,α )
α
1
k −1
k +1
n
набора
и
~
β = ( α1 ,...,α k −1 , 1 ,α k +1 ,...,α n ) , отличающиеся только в k-ой
компоненте, называются соседними по k-ой компоненте.
Рассмотрим булеву функцию
ременных
f :En →E .
Набор
f ( x1 , x2 ,..., xn ) от n песимволов
переменных
( x1 , x2 ,..., xn ) будем обозначать также через ~
x n . Через P2 (n )
обозначим множество всех булевых функций от n переменных,
{( )
xn
т.е. P2 (n )= f ~
}
f :En →E .
Переменная xk для функции f ( x1 , x2 ,..., xn ) называется
существенной, если найдется пара наборов, соседних по k-ой
~
компоненте α
~
и β
таких, что значения функции на них
(~ )
~ ) ≠ f β . В противном случае переменная x
различны, т.е. f (α
k
называется несущественной или фиктивной.
-4Функция f ( x1 , x2 ,..., xn ) равна функции g ( x1 , x2 ,..., xm ) ,
если одна из них получается из другой с помощью введения или
вычеркивания некоторых фиктивных переменных. Заметим, что
для любой функции, отличной от константы 0 или 1, существует
равная ей, у которой все переменные существенные.
n
Через B обозначим n-мерный булев (или двоичный) куб,
который часто называют также единичным n-мерным кубом.
n
n
Заметим, что B — это граф, вершины которого совпадают с E ,
а ребра соединяют соседние вершины.
Через x обозначим отрицание от переменной x.
В таблице 1 приведены основные элементарные функции
алгебры логики.
x y x& y
x∨ y
x⊕ y x → y x ↔ y
x y
x↓ y
0 0
0
0
0
1
1
1
1
0 1
0
1
1
1
0
1
0
1 0
0
1
1
0
0
1
0
1 1
1
1
0
1
1
0
0
Таблица 1
Эти функции носят соответственно названия:
x & y — конъюнкция x и y, часто обозначают через точку
или вообще опускают, читается как « x и y ».
x ∨ y — дизъюнкция x и y, читается как « x или y».
-5-
x ⊕ y — сложение по модулю 2 x и y.
x → y — импликация x и y, читается как «из x следует y».
x ↔ y — эквивалентность x и y.
x y — штрих Шеффера x и y, часто эту функцию
называют антиконъюнкцией, читается как «не x или не y».
x ↓ y — стрелка Пирса x и y, часто эту функцию называют
антидизъюнкцией, читается как «не x и не y».
Символы
,& ,∨ ,⊕ ,→ , ↔ , ,↓,
участвующие
в
обозначениях элементарных функций, называются логическими
связками.
Основные тождества алгебры логики.
1. Функция
D ∈ { & , ∨ , ⊕ , ↔ , , ↓ }, обладает
x D y , где
свойством коммутативности:
xD y = yD x.
2. Функция x ∗ y , где ∗ ∈ { & , ∨ , ⊕ , ↔ }, обладает свойством
ассоциативности:
( x ∗ y ) ∗ z = x ∗( y ∗ z ).
3. Дистрибутивные законы:
( x ∨ y ) & z = ( x & z ) ∨ ( y & z );
( x & y ) ∨ z = ( x ∨ z ) & ( y ∨ z );
( x ⊕ y ) & z = ( x & z ) ⊕ ( y & z ).
-64. Законы де Моргана:
а) x & y = x ∨ y ;
б) x ∨ y = x & y .
5. Законы поглощения:
а) x ∨ ( x & y ) = x ;
6.
б) x & ( x ∨ y ) = x .
а) x ∨ ( x & y ) = x ∨ y ;
б) x & ( x ∨ y ) = x & y .
7. a) x & x = x & 0 = x ⊕ x = 0 ;
б) x ∨ x = x ∨ 1 = x ↔ x = 1 .
8. Тождества, выражающие одни логические операции через
другие:
а) x ⊕ y = ( x & y ) ∨ ( x & y ) = ( x ∨ y ) & ( x ∨ y ) ;
б) x → y = x ∨ y ;
в) x ↔ y = x ⊕ y = ( x & y ) ∨ ( x & y ) = ( x ∨ y ) & ( x ∨ y ) ;
г) x y = x & y = x ∨ y ;
д) x ↓ y = x ∨ y = x & y .
Будем считать, что операция отрицания – сильнее, чем
любая двухместная связка. Конъюнкция & — самая сильная из
связок
∨ , ⊕ , → , ↔ , , ↓ . В дальнейшем, знак &
будем
записывать в виде точки или вообще опускать. Это соглашение
позволяет упрощать запись формул, не писать внешние и ряд
других скобок.
Например,
тождество
( x ∨ y )& z = ( x & z )∨( y & z )
можно записать в виде ( x ∨ y ) z = xz ∨ yz .
-7В справедливости приведенных тождеств проще всего
убедиться, строя таблицы соответствующих им функций.
Пример 1. По функциям f ( x1 , x2 ) и g ( x1 , x2 ) , заданным
~ = (1001), α
~ = (1110 ), построить векторное завекторно: α
f
g
дание функции
Для этой функции
h( ~
x 4 ) = f ( x1 , g ( x4 , x3 )) → g ( x2 , f ( x1 , x3 )) .
h построить таблицу П 2 ,2 ( h ) .
f ( x1 , x2 ) и g ( x1 , x2 )
Решение. Для каждой из функций
перейдём от векторного задания к табличному (см. табл.2).
x1
x2
f ( x1 , x2 )
g ( x1 , x2 )
0
0
1
1
0
1
0
1
1
0
0
1
Таблица 2
1
1
1
0
Принимая во внимание тот факт, что функция
x→ y
обращается в 0 только на наборе (1,0), а функция g ( x1 , x2 )
равна 0 лишь на наборе (1,1), можно упростить процедуру
построения таблицы функции h( ~
x ) . В самом деле, функция
4
h( ~
x 4 ) = 0 тогда и только тогда, когда f ( x1 , g ( x4 , x3 )) = 1 и
g ( x2 , f ( x1 , x3 )) = 0 . В свою очередь, g ( x2 , f ( x1 , x3 )) = 0
тогда и только тогда, когда
того,
что
f ( x1 , x3 ) = 1
x2 = f ( x1 , x3 ) = 1, тогда в силу
при
x1 = x3 ,
заключаем,
что
-8-
g ( x2 , f ( x1 , x3 )) = 0 либо
при
x1 = x2 = x3 = 1, либо при
x2 = 1, x1 = x3 = 0 . Теперь f ( x1 , g ( x4 , x3 )) = 1 тогда и только
тогда, когда x1 = g ( x4 , x3 ) . Замечаем, что если x1 = 0 , то
g ( x4 ,0 ) = 1 при любом значении переменной x4 . Если x1 = 1,
тогда g ( x4 ,1 ) = 1 при
единственном значении переменной
~ = (1111111111111101) .
x4 = 0 . Таким образом, получаем α
h
x1
x2
x3
x4
g1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
1
1
1
0
1
1
1
0
1
1
1
0
1
1
1
0
f1
0
0
0
1
0
0
0
1
1
1
1
0
1
1
1
0
Таблица 3
В таблице 3 функция
формулой,
построена
f2
g2
h( ~
x4 )
1
1
0
0
1
1
0
0
0
0
1
1
0
0
1
1
1
1
1
1
0
0
1
1
1
1
1
1
1
1
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
h( ~
x 4 ) , реализуемая заданной
«постепенно».
Здесь
используются
следующие обозначения: g1 = g ( x4 , x3 ) , f1 = f ( x1 , g ( x4 , x3 )) ,
-9-
f 2 = f ( x1 , x3 ) ,
булевой функции
g 2 = g ( x2 , f ( x1 , x3 )) . Построим теперь для
h прямоугольную таблицу П 2 ,2 ( h ) (см.
табл.4).
x1
x2
0
0
1
1
0
1
0
1
0
0
1
1
1
1
0
1
1
0
1
1
1
1
1
1
1
0
Таблица 4
1
1
1
1
1
1
x3
x4
Пример 2. Перечислить все существенные и фиктивные
переменные у функции
f(~
x 3 ) = (11110011) .
x ) перейдем
Решение. От векторного задания функции f ( ~
3
к ее табличному заданию (см. табл. 5).
x1
x2
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
x3
f ( x1 , x2 , x3 )
0
1
0
1
0
1
0
1
Таблица 5
1
1
1
1
0
0
1
1
Сравнивая значения функции на всех парах наборов, соседних по переменной x3 , отметим, что f ( 0 ,0 ,0 ) = f ( 0 ,0 ,1) = 1,
- 10 -
f ( 0 ,1,0 ) = f ( 0 ,1,1 ) = 1,
= f ( 1,1,1 ) = 1, т. е.
f ( 1,0 ,0 ) = f ( 1,0 ,1 ) = 0 и f ( 1,1,0 ) =
f ( x1 , x2 ,0 ) ≡ f ( x1 , x2 ,1 ) . Следовательно,
переменная x3 фиктивная. Построим теперь функцию g ( ~
x )
2
x ) фиктивной
посредством операции удаления из функции f ( ~
3
переменной
x3 : вычеркнем из таблицы 5 все строки,
соответствующие
наборам
вида
( α1 ,α 2 ,1 )
и
столбец,
соответствующий переменной x3 . Полученная функция g ( ~
x )
2
x ) и f(~
x ) равны.
изображена в таблице 6. Функции g ( ~
2
x1
x2
g ( x1 , x2 )
0
0
1
0
1
1
1
0
0
1
1
1
3
Таблица 6
Далее, так как g ( 1,0 ) = 0 , а g ( 1,1 ) = 1, заключаем, что
переменная x2 существенная. Аналогично, так как g ( 0 ,0 ) = 1, а
g ( 1,0 ) = 0 , то переменная x1 существенная. Итак, у функции
f(~
x 3 ) переменные x1 , x2 существенные, а переменная x3 фиктивная. (Нетрудно убедиться в том, что f ( ~
x ) = x1 → x2 .)
3
- 11 ЗАДАЧИ
1.1. По функциям
f ( x1 , x2 ) и g ( x1 , x2 ) , заданным
векторно, построить функцию
h:
~ = (1011), α
~ = (0111) ,
1) α
f
g
x 2 ) = f ( x1 , g ( x1 , x2 ));
a) h( ~
b) h( ~
x 2 ) = g ( x2 , f ( x2 , x1 ));
c) h( ~
x 2 ) = f ( f ( x1 , g ( x1 , x2 )), g ( x1 , x2 ));
d) h( ~
x 3 ) = g ( x1 , x2 ) ⊕ f ( x3 , g ( x1 , x2 ));
e) h( ~
x 3 ) = f ( x2 , g ( x3 , x1 )) ↔ g ( x1 , g( x2 , x3 )).
~ = (1010 ), α
~ = (0110 ) ,
2) α
f
g
a) h( ~
x 3 ) = f ( x3 , g ( x1 , x2 ));
b) h( ~
x 3 ) = g ( g( x3 , x2 ), f ( x1 , x3 ));
c) h( ~
x 3 ) = f ( f ( x3 , g ( x1 , x2 )), g ( x1 , x2 ));
d) h( ~
x 3 ) = f ( f ( x1 , x2 ), g ( x3 , x1 )) → g ( x1 , g ( x1 , x2 )) .
1.2. Найти число всех функций от n переменных, которые
на противоположных наборах принимают одинаковые значения.
При n = 2,3 найти все функции существенно зависящие от всех
переменных.
- 12 1.3. Найти число всех функций от n переменных, которые
на противоположных наборах принимают противоположные
значения. При n = 2,3 найти все функции существенно зависящие
от всех переменных.
1.4. Найти число всех функций от n переменных, которые
на любой паре соседних наборов принимают противоположные
значения. Найти вид этих функций.
1.5. Построив таблицы для соответствующих функций,
убедиться в справедливости следующих эквивалентностей:
a) x ∨ y = ( x → y ) → y ;
b) x ↔ y = ( x → y ) & ( y → x ) ;
c) x ↓ y = (( x x )
( y y )) ((x x ) ( y y ));
d) x ∨ ( y ↔ z ) = ( x ∨ y ) ↔ ( x ∨ z ) ;
e) x & ( y ↔ z ) = (( x & y ) ↔ ( x & z )) ↔ x ;
f) x → ( y ↔ z ) = ( x → y ) ↔ ( x → z ) ;
g) x ∨ ( y → z ) = ( x ∨ y ) → ( x ∨ z ) ;
h) x & ( y → z ) = ( x → y ) → ( x & z ) ;
i) x → ( y ∨ z ) = ( x → y ) ∨ ( x → z ) ;
j) x → ( y & z ) = ( x → y ) & ( x → z ) ;
k) x → ( y → z ) = ( x → y ) → ( x → z ) .
1.6. Используя основные тождества алгебры логики,
докажите справедливость соотношений из задачи 1.5.
- 13 1.7. Показать, что x1 — фиктивная переменная у функции f,
реализовав для этой цели функцию f формулой, не содержащей
явно переменную x1 :
a) f ( ~
x 2 ) = (x2 → x1 ) ⋅ (x2 ↓ x1 );
b) f ( ~
x 2 ) = (x1 ↔ x2 ) ∨ (x1 x2 );
c) f ( ~
x 3 ) = ((x1 ⊕ x2 ) → x3 ) ⋅ (x3 → x2 );
d) f ( ~
x 3 ) = ((x1 ∨ x2 ⋅ x3 ) ↔ (x1 → x2 ⋅ x3 ))⋅ (x2 ↓ x3 );
e) f ( ~
x 3 ) = ((x1 ∨ x2 ∨ x3 ) → (x1 x2 x3 )) ⊕ (x2 → x1 ) ⋅ x3 .
1.8.
Перечислить
все
существенные
и
фиктивные
переменные у следующих функций:
a) f ( ~
x 2 ) = ((x1 ∨ x2 ) → x1 ⋅ x2 ) ⊕ (x1 → x2 ) ⋅ (x2 → x1 ) ;
b) f ( ~
x 2 ) = (x1 ⋅ x2 ⊕ (x1 → x2 )) → (x1 ↔ x1 ⋅ x2 );
c) f ( ~
x 3 ) = ((x1 → x2 ) ⊕ (x2 → x3 )) ⊕ (x2 → x3 );
d) f ( ~
x 3 ) = ((x1 ∨ x2 ⋅ x3 ) ⊕ (x1 → x2 ⋅ x3 )) ∨ (x2 ↔ x3 );
e) f ( ~
x 3 ) = (10101010) ;
x 3 ) = (10011001) ;
f) f ( ~
g) f ( ~
x 3 ) = (00111100) .
- 14 -
§ 2. Специальные представления булевых функций.
Разложение по переменным.
σ
⎧ x , если σ = 1,
Пусть σ ∈ E . Введём обозначение x = ⎨
⎩ x , если σ = 0.
Нетрудно проверить, что
x1σ1 x2σ 2 ...xk σ k = 1 ⇔
xσ = 1 ⇔
x = σ. Тогда
x1 = σ1 , x2 = σ 2 ,..., xk = σk .
Теорема 1 (о разложении функции). Всякую булеву функцию
f ( x1 ,..., xn )
представить в виде:
f ( x1 ,..., xn ) =
при любом
∨
(σ1 ,..., σ k )
k ( 1 ≤ k ≤ n ) можно
x1σ1 ...xk σ k f ( σ1 ,...,σ k , xk +1 ,..., xn ) ,
k
где дизъюнкция берётся по всем наборам ( σ1 ,...,σ k ) из E .
Следствие 1 (разложение по i-ой переменной).
f ( x1 ,..., xn ) = xi f ( x1 ,..., xi −1 ,0 , xi +1 ,..., xn ) ∨
∨ xi f( x1,..., xi −1,1 , xi +1,..., xn ) .
(1)
Следствие 2 (разложение по всем n переменным).
f( ~
xn )=
∨
(σ1 ,..., σ n )
x1σ1 ...xn σ n f ( σ1 ,...,σ n ) ,
(2)
n
где дизъюнкция берётся по всем наборам ( σ1 ,...,σ n ) из E .
- 15 -
x n ) не равна тождественно нулю, то
Если функция f ( ~
выражение (2) можно записать в виде:
∨
f ( x1 ,..., xn ) =
(σ1 ,...,σ n )
x1σ1 ...xn σ n ,
(3)
f ( σ1 ,...,σ n )=1
n
где дизъюнкция берётся по всем наборам ( σ1 ,...,σ n ) из E ,
на которых функция f ( ~
x n ) обращается в 1.
Представление функции в виде (3) называется совершенной
дизъюнктивной нормальной формой (сокращённо совершенной
д.н.ф. или СДНФ) функции f ( ~
x n ).
Непосредственно к понятию совершенной д.н.ф. примыкает
следующая теорема.
Теорема 2.
Всякую функцию алгебры логики можно
представить в виде формулы через отрицание, конъюнкцию и
дизъюнкцию.
Кроме приведённых выше разложений булевых функций,
широко используются также следующие разложения.
Теорема 3. Всякую булеву функцию
f ( x1 ,..., xn ) при
любом k ( 1 ≤ k ≤ n ) можно представить в виде:
f( ~
xn ) =
&
(σ ,...,σ
1
k)
(x
σ1
1
)
∨ ... ∨ xk σ k ∨ f ( σ1 ,...,σ k , xk +1 ,..., xn ) ,
k
где конъюнкция берётся по всем наборам ( σ1 ,...,σ k ) из E .
- 16 Следствие 1 (разложение по i-ой переменной).
f(~
x n ) = ( xi ∨ f( x1,..., xi −1,1 , xi +1,..., xn ))&
& ( xi ∨ f( x1,..., xi −1,0 , xi +1,..., xn )).
Следствие 2 (разложение по всем n переменным).
f( ~
xn )=
&
(σ ,..., σ
1
n)
(x
σ1
1
(4)
)
∨ ... ∨ xn σ n ∨ f ( σ1 ,...,σ n ) ,
(5)
n
где конъюнкция берётся по всем наборам ( σ1 ,...,σ n ) из E .
x n ) не равна тождественно 1, тогда
Если функция f ( ~
выражение (5) можно записать в виде:
f( ~
xn )=
&
( σ ,..., σ
)
1
n
f ( σ1 ,..., σ n ) = 0
(x
σ1
1
)
∨ ... ∨ xn σ n ,
(6)
n
где конъюнкция берётся по всем наборам ( σ1 ,...,σ n ) из E ,
на которых функция f ( ~
x n ) обращается в 0.
Представление функции в виде (6) называется совершенной
конъюнктивной нормальной формой (сокращённо совершенной
к.н.ф. или СКНФ) функции f ( ~
x n ).
Пример 1. Разложить по переменной x1 , применяя формулы
(1) и (4), и представить в совершенных д.н.ф. и к.н.ф. функцию
f (x1 , x2 ) = x1 → x2 .
- 17 -
Решение.
f (0 , x2 ) = 0 → x2 = 1, f (1, x2 ) = 1 → x2 = x2 .
Поэтому согласно (1) имеем
f (x1 , x2 ) = x1 ⋅ 1 ∨ x1 ⋅ x2 , а ис-
) (
(
) (
)
пользуя формулу (4), получаем f x1 , x2 = x1 ∨ x2 & x1 ∨ 1 .
Так как f ( 0 ,0 ) = f ( 0 ,1) = f ( 1,1) = 1 и
(
f ( 1,0 ) = 0 , совершен-
)
0
0
0
1
ная д.н.ф. функции f имеет вид f x1 , x2 = x1 x2 ∨ x1 x2 ∨
∨ x11x21 = x1 x2 ∨ x1 x2 ∨ x1 x2 , а совершенная к.н.ф. такова:
f (x1 , x2 ) = x11 ∨ x20 = x10 ∨ x21 = x1 ∨ x2 .
Пример 2.
Представить в совершенной д.н.ф. и совер-
( )
шенной к.н.ф. функцию f ~
x 3 = ( 01101011 ) .
Решение. Функция принимает значение 1 на наборах (0 ,0 ,1),
(0,1,0), (1,0,0), (1,1,0)
и
(1,1,1).
Элементарные конъюнкции,
0
0
1
соответствующие этим наборам, таковы: x1 x2 x3 = x1 x2 x3 ,
x10 x21x30 = x1 x2 x3 , x11x20 x30 = x1x2 x3 , x11x21x30 = x1 x2 x3
и
( )
x11x21x31 = x1 x2 x3 . Значит, совершенная д.н.ф. функции f ~
x3
имеет вид: x1 x2 x3 ∨ x1 x2 x3 ∨ x1 x2 x3 ∨ x1 x2 x3 ∨ x1 x2 x3 . Для
построения совершенной к.н.ф. рассматриваем все те наборы, на
которых функция f
(0,1,1)
и
(1,0,1).
обращается в нуль. Это наборы (0 ,0 ,0 ),
Элементарные дизъюнкции, соответствующие
этим наборам, таковы:
- 18 -
x10 ∨ x20 ∨ x30 = x11 ∨ x21 ∨ x31 = x1 ∨ x2 ∨ x3 ,
x10 ∨ x21 ∨ x31 = x11 ∨ x20 ∨ x30 = x1 ∨ x2 ∨ x3 ,
x11 ∨ x20 ∨ x31 = x10 ∨ x21 ∨ x30 = x1 ∨ x2 ∨ x3 .
Перемножая эти дизъюнкции, получаем совершенную к.н.ф.
)(
(
)(
)
функции f : x1 ∨ x2 ∨ x3 ⋅ x1 ∨ x2 ∨ x3 ⋅ x1 ∨ x2 ∨ x3 .
Полином Жегалкина.
Теорема 4. Всякую булеву функцию f ( x1 ,..., xn ) можно
представить в виде:
∑
f ( x1 ,..., xn ) =
(σ1 ,..., σ n )
x1σ1 ...xn σ n ,
(7)
f ( σ1 ,..., σ n ) =1
где сумма по mod 2 берётся по всем наборам ( σ1 ,...,σ n ) из
E n , на которых функция f ( ~
x n ) обращается в 1.
Нетрудно
тогда x
σ
видеть,
что
x 0 = x = x ⊕ 1, x1 = x = x ⊕ 0 ,
= x ⊕ σ . Подставив в (7) вместо xi σ i выражение
xi ⊕ σ i , получим
f ( x1 ,..., xn ) =
∑
(σ1 ,..., σ n )
f ( σ1 ,..., σ n ) =1
(x1 ⊕ σ1 )...(xn ⊕ σ n ).
- 19 Обычным образом раскрыв скобки и приведя подобные
члены по правилу A ⊕ A = 0 , придем к представлению функции
в виде полинома по mod 2:
f ( x1 ,..., xn ) =
∑
{i1 ,...,i s }⊆{1,...,n}
αi
x ...xi ,
1 ...i s i1
s
(8)
где коэффициенты αi ...i равны 0 или 1. Пустая конъюнкция
1 s
считается равной 1, так что коэффициент, соответствующий
пустому множеству индексов, представляет собой свободный
член полинома. Представление функции f ( ~
x n ) в виде (8) носит
название полинома
Жегалкина. Для функции, тождественно
равной нулю, в качестве полинома берется 0.
Теорема 5.
представлена
в
Всякая
виде
булева функция может быть
полинома
Жегалкина
единственным
образом.
Пример 3.
( )
Построить полином Жегалкина для функции
f ~
x 3 = ( 01101011 ) .
Решение. В примере 2 для этой функции была построена
СДНФ: x1 x2 x3 ∨ x1 x2 x3 ∨ x1 x2 x3 ∨ x1 x2 x3 ∨ x1 x2 x3 , поэтому
( )
f ~
x 3 = (x1 ⊕ 1)(x2 ⊕ 1) x3 ⊕ (x1 ⊕ 1) x2 (x3 ⊕ 1) ⊕
⊕ x1 (x 2 ⊕ 1)(x3 ⊕ 1) ⊕ x1 x2 (x3 ⊕ 1) ⊕ x1 x2 x3 .
Для
преобразования
этого
выражения
могут
быть
- 20 использованы обычные приемы элементарной алгебры, за
исключением правила
A ⊕ A = 0 . В частности, применяя
группировку членов и вынесение за скобки, получаем
( )
f ~
x 3 = (x1 ⊕ 1)(x2 x3 ⊕ x3 ⊕ x2 x3 ⊕ x2 ) ⊕
(
⊕ (x3 ⊕ 1)( x1 x 2 ⊕ x1 ⊕ x1 x 2 ) ⊕ x1 x2 x3 =
)(
) (
)
= x1 ⊕ 1 x2 ⊕ x3 ⊕ x3 ⊕ 1 x1 ⊕ x1 x2 x3 .
Наконец, раскрывая скобки, получаем полином Жегалкина:
( )
f ~
x 3 = x1 x2 ⊕ x1 x3 ⊕ x2 ⊕ x3 ⊕ x1 x3 ⊕ x1 ⊕ x1 x2 x3 =
= x1 ⊕ x2 ⊕ x3 ⊕ x1 x2 ⊕ x1 x2 x3 .
Кроме
Жегалкина,
рассмотренного
существуют
и
способа
построения
другие
методы
полинома
построения.
Рассмотрим некоторые из них.
Метод неопределенных коэффициентов.
Пусть
( )
P~
xn
—
искомый
реализующий заданную функцию
( )
полином
( )
Жегалкина,
f ~
x n . Запишем его в виде
P~
x n = α 0 ⋅1 ⊕ α1 ⋅ x1 ⊕ ... ⊕ α n ⋅ xn ⊕ α12 ⋅ x1 ⋅ x2 ⊕ ... ⊕
⊕ α n −1,n xn −1 ⋅ xn ⊕ ... ⊕ α1...n x1 ⋅ ... ⋅ xn .
(9)
Требуется найти неизвестные коэффициенты в этом
~ ∈ E n составляем
разложении. Поступаем так. Для каждого α
~ ) — выражение,
P( α
~ . Это дает систему из
получающееся из формулы (9) при ~
x =α
уравнение
~ )= f (α
~ ),
P( α
где
- 21 -
2n уравнений с 2n неизвестными, которая имеет единственное
решение. Решив систему, находим коэффициенты полинома
( )
P~
xn .
Пример 4. Методом неопределенных коэффициентов найти
( )
полином Жегалкина для функции f ~
x 3 = ( 01101011 ) .
( )
Решение. P ~
x 3 = α 0 ⊕ α1 ⋅ x1 ⊕ α 2 ⋅ x2 ⊕ α3 ⋅ x3 ⊕
⊕ α12 ⋅ x1 ⋅ x2 ⊕ α13 ⋅ x1 ⋅ x3 ⊕ α 23 ⋅ x2 ⋅ x3 ⊕ α123 ⋅ x1 ⋅ x2 ⋅ x3 .
Выпишем систему уравнений для неизвестных коэффициентов:
f (0 ,0 ,0 ) = 0 = α 0 ,
f (0 ,0 ,1) = 1 = α 0 ⊕ α 3 ,
f (0 ,1,0 ) = 1 = α 0 ⊕ α 2 ,
f (0 ,1,1) = 0 = α 0 ⊕ α 2 ⊕ α 3 ⊕ α 23 ,
f (1,0 ,0 ) = 1 = α 0 ⊕ α1 ,
f (1,0 ,1) = 0 = α 0 ⊕ α1 ⊕ α 3 ⊕ α13 ,
f (1,1,0 ) = 1 = α 0 ⊕ α1 ⊕ α 2 ⊕ α12 ,
f (1,1,1) = 1 = α 0 ⊕ α1 ⊕ α 2 ⊕ α 3 ⊕ α12 ⊕ α13 ⊕ α 23 ⊕ α123 .
Решая эту систему, находим
α 0 = α13 = α 23 = 0 .
α1 = α 2 = α 3 = α12 = α123 = 1 ,
Следовательно,
= x1 ⊕ x2 ⊕ x3 ⊕ x1 x2 ⊕ x1 x2 x3 .
( )
f ~
x 3 = ( 01101011 ) =
- 22 Алгебраический метод построения полинома.
Сначала формулу, реализующую функцию f, преобразуем в
формулу над множеством связок
{
, &}. Затем заменяем всюду
подформулы вида A на A ⊕ 1 , раскрываем скобки, пользуясь
дистрибутивным законом A ⋅ ( B ⊕ C ) = A ⋅ B ⊕ A ⋅ C , и применяя
тождества A ⋅ A = A,
A ⋅1 = A, A ⊕ A = 0 и A ⊕ 0 = A .
Пример 5. Построить полином Жегалкина для функции
( )
f ~
x 3 = x1 ∨ x1 ⋅ x2 ∨ x2 ⋅ x3 .
Решение. Выразим f в виде формулы через отрицание и
( )
конъюнкцию: f ~
x 3 = x1 ∨ x1 ⋅ x2 ∨ x2 ⋅ x3 = x1 ∨ x2 ∨ x3 =
= x1 ∨ x2 ∨ x3 = x1 ⋅ x2 ⋅ x3 .
Заменим теперь все подформулы вида A на A ⊕ 1 :
( )
f ~
x 3 = (x1 ⊕ 1) ⋅ (x2 ⊕ 1) ⋅ x3 ⊕ 1 =
= (x1 x2 ⊕ x1 ⊕ x2 ⊕ 1)x3 ⊕ 1 = x1 x2 x3 ⊕ x1 x3 ⊕ x2 x3 ⊕ x3 ⊕ 1.
ЗАДАЧИ
2.1. Для следующих функций построить СДНФ и СКНФ:
( )
b) ; f (~
x 3 ) = (x1 ∨ x2 )⋅ x3 ;
c) f (~
x 3 ) = x1 ∨ x1 ⋅ x2 ∨ x2 ⋅ x3 ;
a) f ~
x 3 = x1 ⋅ x2 ∨ x3 ;
- 23 -
( )
e) f (~
x 3 ) = (x1 → x2 ) ⊕ (x1 x2 ⋅ x3 );
f) f (~
x 3 ) = (x1 ⋅ x2 ⊕ x3 )⋅ (x1 ⋅ x3 → x2 ).
d) f ~
x 3 = (x1 ∨ x2 ∨ x3 )⋅ (x1 ⋅ x2 ∨ x3 );
2.2. Построить из заданной д.н.ф. функции ее СДНФ:
( )
b) f (~
x 3 ) = x1 ⋅ x2 ∨ x2 ⋅ x3 ∨ x1 ⋅ x3 ;
c) f (~
x 3 ) = x1 ∨ x2 ⋅ x3 ∨ x2 ⋅ x3 .
a) f ~
x 3 = x1 ⋅ x2 ∨ x3 ;
2.3. Построить из заданной к.н.ф. функции ее СКНФ:
( )
b) f (~
x 3 ) = (x1 ∨ x2 ) ⋅ (x2 ∨ x3 )⋅ x3 ;
c) f (~
x 3 ) = (x1 ∨ x2 )⋅ (x1 ∨ x3 )⋅ (x2 ∨ x3 ) .
a) f ~
x 3 = x1 ⋅ (x2 ∨ x3 );
2.4. Выразить через полином Жегалкина все элементарные
функции алгебры логики от двух переменных.
2.5.
Методом
неопределенных
коэффициентов
найти
полиномы Жегалкина для следующих функций:
( )
c) f (~
x 3 ) = ( 0 0 0 0 0111 );
а) f ~
x 3 = ( 011010 01 ) ;
( )
d) f (~
x 3 ) = ( 0110 0110 ) .
b) f ~
x 3 = ( 10 0 01110 ) ;
2.6. Построить полиномы Жегалкина для всех функций из
задачи 2.1.
– 24 –
§ 3. Двойственность и класс самодвойственных функций.
g ( x1 ,..., xn )
Функция
называется
двойственной
к
функции f ( x1 ,..., xn ) , если g ( x1 ,..., xn ) = f ( x1 ,..., xn ) , эту
функцию
будем
обозначать
через
f ∗ ( x1 ,..., xn )
т.е.
f ∗ ( x1 ,..., xn ) = f ( x1 ,..., xn ) .
Легко видеть, что функция 0 двойственна функции 1,
функция 1 двойственна функции 0,
функция x двойственна функции x,
функция x двойственна функции x ,
функция x1 & x2 двойственна функции x1 ∨ x2 ,
функция x1 ∨ x2 двойственна функции x1 & x2 .
Если функция f задана формулой через отрицание, & и ∨,
то справедлив следующий принцип двойственности. Для того,
чтобы
получить
формулу,
реализующую
функцию
f ∗,
достаточно заменить все операции & на ∨, все операции ∨ на &,
а все константы — противоположными константами.
Из принципа двойственности вытекает, что если имеет
место некоторое тождество, то справедливо и двойственное к
нему. Нетрудно понять, что пары а) и б) основных тождеств
алгебры логики
двойственными.
4 – 7, приведенные в § 1, являются
– 25 –
Пример1. Используя принцип двойственности, построить
формулу. реализующую функцию, двойственную к функции
f = x ⋅1 ∨ y ⋅ ( z ∨ 0 ) ∨ x ⋅ y ⋅ z , и убедиться в том, что полученная
формула эквивалентна формуле A = x ⋅ ( y ⊕ z ) .
Решение.
Согласно
принципу
двойственности
имеем:
f ∗ = ( x ∨ 0 ) ⋅ ( y ∨ ( z ⋅1)) ⋅ (x ∨ y ∨ z ) = x ⋅ ( y ∨ z ) ⋅ (x ∨ y ∨ z ) =
= x ⋅ ( y ∨ z ) ⋅ ( y ∨ z ) = x ⋅ ( y ⋅ z ∨ y ⋅ z ) = x ⋅ ( y ⊕ z ) . Получаем, что
функция, двойственная к функции f, может быть реализована
формулой A.
Функция f ( x1 ,..., xn ) называется самодвойственной, если
она
совпадает
со
своей
двойственной,
т.е.
f ( x1 ,..., xn ) = f ∗ ( x1 ,..., xn ) .
Множество
всех
самодвойственных
функций
n
от
переменных будем обозначать через S ( n ) .
Класс всех самодвойственных функций (от любого числа
переменных) замкнут относительно операции суперпозиции,
обозначим его через S , т. е. [S]=S.
Функция самодвойственна тогда и только тогда, когда она
на
любых
двух
противоположные
противоположных
значения.
наборах
Отсюда
принимает
следует,
что
самодвойственная функция полностью определяется своими
значениями на первой половине строк, поэтому S ( n ) = 2
2 n −1
.
– 26 –
Лемма 1 (о несамодвойственной функции). Если функция
f ( x1 ,..., xn ) не является самодвойственной, то из нее с
помощью подстановки x
и x
вместо переменных можно
получить константу.
Доказательство: Пусть функция
f ( x1 ,..., xn ) не само-
двойственна, тогда найдется пара противоположных наборов
~ = ( α , α …, α )
α
1
2
n
~
β = ( α1 , α 2 … , α n )
и
таких,
что
~
~ ) = f ( β ) = с для
значения функции на них совпадают, т. е. f ( α
α
некоторого с ∈ { 0 , 1 }. Сделаем замену x i → xi для всех
i = 1 , 2 ,…, n .
Вновь
полученную
функцию
от
одной
переменной, обозначим через ϕ( x ) . Нетрудно проверить, что
ϕ( 0 ) = ϕ( 1 ) = с , что и требовалось доказать.
Проиллюстрируем эту лемму на примере.
Пример1. Определить, можно ли получить константу из
x 3 ) = x3 → x1 x2 .
функции f ( ~
Решение. Перейдем к табличному заданию этой функции. В
таблице 7 стрелками одинаковой длины указаны противоположные наборы. Замечаем, что
f ∉ S , т. к. нарушается
условие самодвойственности на первом и восьмом наборах:
f ( 000 ) = f ( 111 ) = 1. Таким образом, константу 1 можно
получить двумя способами.
– 27 –
x1 x2 x3 x1 x2
x3 → x1 x2
0
0
0
0
1
0
0
1
0
0
0
1
0
0
1
0
1
1
0
0
1
0
0
0
1
1
0
1
0
0
1
1
0
1
1
1
1
1
1
1
Таблица 7
Сделаем
следующую
замену
переменных:
x 0 → x1 , x 0 → x2 , x 0 → x3 , тогда f ( x , x , x ) = x → x x = 1 .
Если
сделать
замену:
x1 → x1 , x1 → x2 , x1 → x3 ,
тогда
f ( x , x , x ) = x → x x = 1. Константу ноль из заданной функции
получить нельзя, т.к. не существует двух противоположных
наборов, на которых функция принимает нулевое значение.
Лемма
о
несамодвойственной
функции
может
быть
использована для получения ряда тождеств для констант.
В
примере
1
мы
получили
следующие
тождества:
x → x x = 1, x → x x = 1. Эти тождества нетрудно доказать,
используя тождества: x ⋅ x = x , x → y = x ∨ y , x ∨ x = 1.
– 28 –
ЗАДАЧИ
3.1. Используя непосредственно определение двойственности булевых функций, а также основные тождества, выяснить,
является ли функция g двойственной к функции f:
a) f = x ⊕ y , g = x ↔ y ;
b) f = x y , g = x ↓ y ;
c) f = x → y , g = x ⋅ y ;
d) f = (x → y ) → ( y → x ), g = ( x → y ) ⋅ ( y → x );
e) . f = x ⋅ y ∨ z , g = x ⋅ ( y ∨ z ) ;
f) f = x ⋅ y → z , g = x ⋅ y ⋅ z .
3.2.
Используя
принцип
двойственности,
построить
формулу, реализующую функцию, двойственную к функции f.
Полученную формулу по возможности упростить.
a) f = ( x ∨ y ∨ z ) ⋅ ( y ⊕ z ) ∨ x ⋅ y ⋅ z ;
(
)
b) f = ( x ∨ (1 → y )) ∨ y ⋅ z ∨ x y ↓ z ;
c) f = (x ↓ y ) ⊕ (( x y ) ↓ (x ↔ y ⋅ z ));
d) f = (x ∨ y ∨ ( y ⋅ z ⊕ 1)) ↓ z .
3.3. Показать, что функция
x⋅ y ∨ x⋅z ∨ y⋅z
является
самодвойственной.
3.4. Найти все самодвойственные функции существенно
зависящие от двух переменных.
– 29 –
~
3.5. Заменить прочерки в векторе α
f
символами 0 или 1
так, чтобы получился вектор самодвойственной функции:
~ = ( 01− 0 − 0 − −11− 0 −1− − ) ;
a) α
f
~ = ( − − 01− −11− − 01− −10 ) ;
b) α
f
~ = ( 11− − 0 0 − − 01− −10 − − ) .
c) α
f
3.6. Выяснить, является ли самодвойственной функция f,
заданная векторно:
~ = ( 011010 01 ) ;
a) α
f
~ = ( 011110 01 ) ;
b) α
f
~ = ( 10110110 ) ;
c) α
f
~ = ( 101010 0 0 ).
d) α
f
3.7. Выяснить, является ли функция f самодвойственной.
Если не является, то построить из f константу.
a) f = x ⊕ y ⊕ z ⊕ 1 ;
b) f = x ⊕ y ;
c) f = x ⋅ y ⊕ y ⋅ z ⊕ x ⋅ z ⊕ y ⊕ z ;
d) f = (x ∨ y ∨ z )⋅ t ∨ x ⋅ y ⋅ z ;
e) f = x ⋅ y ∨ z ;
f) f = x ⋅ y ⊕ z ⋅ ( x ∨ y ).
– 30 –
§ 4. Монотонность и класс монотонных функций.
Пусть
~ = ( α , α …, α ),
α
1
2
n
~
β = ( β1 ,β 2 ,… , β n )
и
выполнены неравенства: α i ≥ βi для всех i = 1, 2 , … ,n , тогда
~ = ( α , α … , α ) больше или
будем говорить, что набор α
1 2
n
~
~
равен β = ( β1 ,β2 ,… , βn ) и обозначать через α
~
β . Если для
~ и ~
~
наборов α
β выполнено одно из двух неравенств: α
~
β или
~
β
~ , то будем говорить, что наборы α
~ и ~
α
β сравнимы. В
~ и ~
β несравнимы. Очевидно, что
противном случае, наборы α
любые два соседних набора сравнимы.
Функция f ( x1 ,..., xn ) называется монотонной, если для
~ и ~
~
любых α
β , таких, что α
~
β выполнено неравенство:
~
~ )≥ f( β
f(α
) . В противном случае, функция называется
немонотонной.
Множество всех монотонных функций от n переменных
обозначим через M(n).
Класс всех монотонных функций замкнут относительно
операции суперпозиции, обозначим его через M, т.е. [M ] = M .
Лемма 2 (о немонотонной функции). Если функция
f ( x1 ,..., xn ) не является монотонной, то из нее с помощью
подстановки констант 0 , 1 и переменной x можно получить x .
– 31 –
Доказательство. Пусть функция f ( x1 ,..., xn ) немонотонна,
тогда
найдется
такая
пара
сравнимых
наборов
~
~ = ( α , α …, α ) и β
~
α
= ( β1 ,β2 ,… , βn ) , что α
1
2
n
~ )< f( ~
~ ) = 0,
f(α
β ) , т. е. f ( α
i
( i = 1 ,...,n )
~
β, а
~
f ( β ) = 1. Для каждого
выполнено либо α i = β i , либо α i > β i (т. к.
α i ≥ β i ). В первом случае делаем замену α i вместо переменной
xi , т. е. αi → xi , во втором – подставляем x вместо переменной
xi , т. е. x → xi . Вновь полученную функцию, обозначим через
~
ϕ( x ). Тогда, нетрудно проверить, что ϕ(0 ) = f ( β ) = 1 ,
~ ) = 0 , т. е. ϕ( x ) = x . Утверждение доказано.
ϕ(1) = f ( α
Замечание.
Если функция не является монотонной, то
найдется пара соседних наборов, на которых нарушается условие
монотонности.
Следствие. Если функция f ( x1 ,..., xn ) немонотонна, то из
нее с помощью подстановки констант: вместо n − 1 переменной и
переменной x можно получить x .
Доказательство. В силу замечания, найдется пара наборов
~и~
~
α
β , соседних по i –ой компоненте, таких что α
которых
условие
монотонности
нарушается,
~
β , на
т.
е.
~ )< f( ~
~ = ( α ,… ,α ,1 ,α ,...,α ) ,
f(α
β ) . Очевидно, α
1
i −1
i +1
n
~
β = ( α1 ,… ,α i −1 , 0 ,α i +1 ,...,α n ) .
Сделаем
следующую
– 32 –
⎧α k , если k ≠ i ,
подстановку xk → ⎨
для всех k = 1 , 2 , … , n .
⎩ x, если k = i ,
Вновь полученная функция будет зависеть от одной переменной,
обозначим ее через ϕ( x ). Тогда, нетрудно проверить, что
~
ϕ(0 ) = f ( β ) = 1,
~ ) = 0,
ϕ( 1 ) = f ( α
т.
е.
ϕ( x ) = x .
Утверждение доказано.
Пример 1. Определить, можно ли получить функцию x из
функции f ( x1 , x2 , x3 ) = x1 ⊕ x 2 x3 .
Решение.
f ( 100 ) = 1 ,
Функция
f
немонотонна,
т.
к.
f ( 111 ) = 0 , значит по лемме о немонотонной
функции из этой функции можно получить функцию x . Сделаем
следующую замену переменных: 1 → x1 , x → x2 , x → x3 , тогда
получаем, что
f ( 1, x , x ) = 1 ⊕ x = x . Воспользуемся теперь
следствием леммы, для этого надо выбрать пару соседних
наборов, на которых нарушено условие монотонности. Имеем,
f ( 110 ) = 1, а f ( 111 ) = 0 . После подстановки переменной x и
константы
1,
1 → x1 , 1 → x2 , x → x3
получим,
что
f ( 1 ,1 , x ) = 1 ⊕ 1 ⋅ x = x .
Проверку на монотонность булевой функции
f(~
x n ),
~ = ( α ,α ,...,α
заданной своим вектором значений α
),
f
0 1
2 n −1
~ на
можно осуществить следующим образом. Разделим вектор α
f
– 33 –
две
~
α
~
α
f1
1
f1
0
равные
части
~
α
f1
0
= ⎛⎜ α 0 ,α1 ,...,α n −1 ⎞⎟
⎝
2
−1 ⎠
= ⎛⎜ α n −1 ,α n −1 ,...,α n ⎞⎟ .
⎝ 2
2
+1
2 −1 ⎠
~
≤α
Если
и
отношение
не выполнено, то f ( ~
x ) не является монотонной.
1
f
1
n
~ (σ ∈ { 0 ,1 }) вновь
В противном случае каждый из векторов α
f1
σ
разделим на две равные части и проверим для них отношение
предшествования. Если хотя бы одно из отношений не
выполнено, то заключаем, что f ( ~
x ) ∉ M . В противном случае
n
вновь делим векторы пополам и т. д. Если отношение
предшествования выполняется для всех пар векторов, то
f(~
x n )∈ M .
Пример
2.
По
вектору
значений
~ = ( 10 011111 )
α
f
выяснить, является ли функция f монотонной.
Решение. Поделим вектор пополам, тогда 10 01≤1111 . На
следующем шаге отношение предшествования нарушается для
пары 10 и 01, а 11≤11 . Таким образом, заданная функция не
является монотонной.
В силу замкнутости класса монотонных функций, можно
утверждать, что всякая функция
f, которая задана формулой,
содержащей лишь связки & и ∨, монотонна.
– 34 –
Пример 3. Доказать, что функция
f = x ∨ xy ∨ x y z
является монотонной.
Решение.
Преобразуем
f, применив тождество 6(а):
f = x ∨ x y ∨ x y z = x ∨ y ∨ y z = x ∨ y ∨ z , т. о. функция f —
монотонна.
ЗАДАЧИ
4.1. Какие из элементарных функций алгебры логики
являются монотонными?
4.2. Выяснить, является ли монотонной функция f, заданная
векторно:
~ = ( 011010 01 ) ;
a) α
f
~ = ( 01010111 ) ;
b) α
f
~ = ( 0 0110110 ) ;
c) α
f
~ = ( 0 0 010 011 ).
d) α
f
4.3. Выяснить, является ли функция f монотонной. Если не
является, то построить из f функцию x .
a) f = x ⊕ y ⊕ z ;
b) f = xz ⊕ y ;
c) f = x ⋅ y ⊕ y ⋅ z ⊕ x ⋅ z ⊕ x ;
d) f = ( x ⊕ y ) ⋅ ( x ↔ y );
e) f = x ⋅ y ∨ z ;
f) f = x ⋅ y ⊕ z ⋅ ( x ∨ y ).
– 35 –
4.4. Доказать, что функция f является монотонной:
a) f = ( x ⊕ y ) ⋅ ( x ↔ y ) ;
b) f = x → ( y → x ) ;
c) f = x ⋅ y ⋅ z ∨ x ⋅ y ⋅ z ∨ x ⋅ y ⋅ z ∨ x ⋅ y ⋅ z ∨ x ⋅ y ⋅ z ;
d) f = ( x ⊕ y ) ⋅ x ⋅ y ;
e) f = x ⋅ y ⊕ y ⋅ z ⊕ z ⋅ x .
4.5. Найти все монотонные функции, которые можно
~ заменой символа «—» на 0 или 1:
получить из вектора α
f
~ = ( 0 − );
a) α
f
~ = ( − − );
b) α
f
~ = ( − 0 0 − );
c) α
f
~ = ( −10 − ) ;
d) α
f
~ = ( − − − − − 0 0 − );
e) α
f
~ = ( − − −1 − − 0 − ) ;
f) α
f
~ = ( 0 − − − − − −1 ) .
g) α
f
4.6. Найти все функции
f ∈ M ∩ S , которые можно
~ заменой символа «—» на 0 или 1:
получить из вектора α
f
~ = ( − − );
a) α
f
~ = ( − 0 − − );
b) α
f
~ = ( − − −1 ) ;
c) α
f
~ = ( − 0 0 − 0 − − − );
d) α
f
~ = ( − 01− 0 − − − ) .
e) α
f
– 36 –
§ 5. Линейность и класс линейных функций.
Функция f ( x1 , x2 ,… , xn ) называется линейной, если она
не содержит нелинейные члены в полиноме Жегалкина, т. е. не
содержит
конъюнкции.
Для
линейной
функции
полином
Жегалкина имеет следующий вид:
f ( x1 , x2 ,… , xn ) = α 0 ⊕ α1 x1 ⊕ α 2 x2 ⊕ … ⊕ α n xn ,
где α i ∈ { 0 , 1 } ( i = 0 ,1,2 ,… n ).
Класс всех линейных функций замкнут относительно
операции суперпозиции, обозначим его через L, т. е. [L ] = L .
Множество всех линейных функций от n переменных
обозначим через
L(n). Так как линейная функция от n пе-
ременных определяется двоичным набором
длины (n + 1), получаем, что L(n ) = 2
n +1
(α 0 ,α1 ,...,α n )
.
Если функция f ( x1 , x2 ,… , xn ) линейная и существенно
зависит
от
всех
n
переменных,
то
она
имеет
вид:
f ( x1 , x2 ,… , xn ) = α 0 ⊕ x1 ⊕ x2 ⊕ … ⊕ xn , где α 0 ∈ { 0 ,1 }, т. е.
таких функций только две.
Лемма 3 (о нелинейной функции). Если функция f ( ~
x )
n
нелинейная, то из нее с помощью подстановки констант: 0, 1, а
также переменных x1 , x1 , x2 , x2 и, быть может, отрицания над
всей функцией можно получить конъюнкцию x1 x2 .
– 37 –
Доказательство.
f(~
x n ) нелинейна
Пусть функция
относительно переменных x1 и x2 , тогда ее можно представить в
f(~
x n ) = x1 x2 f1( x3 , x4 ,… , xn ) ⊕ x1 f 2 ( x3 , x4 ,… , xn ) ⊕
виде:
⊕ x2 f3( x3 , x4 ,… , xn ) ⊕ f 4 ( x3 , x4 ,… , xn ) ,
где
функция
f1( x3 , x4 ,… , xn ) ≠ 0 (не равна тождественно нулю), т. е.
существуют такие α 3 , α 4 ,… , α n , что значение функции на них
равно единице, т. е. f1( α 3 ,α 4 ,… ,α n ) = 1. Подставим вместо
переменных
правую
xi константы α i , где i = 3,4 ,… ,n , в левую и
часть.
Получим,
x1 x2 ⊕ α x1 ⊕ β x2 ⊕ λ ,
что
f ( x1 , x2 ,α3 ,… ,α n ) =
где α = f 2 ( α 3 ,α 4 ,… ,α n ) , β =
= f 3 ( α 3 ,α 4 ,… ,α n ) , λ = f 4 ( α 3 ,α 4 ,… ,α n ) . Вновь полученную функцию от двух переменных , обозначим через Ψ ( x1 , x2 ) .
Нетрудно показать, что Ψ( x1 ⊕ β , x2 ⊕ α ) ⊕ αβ ⊕ λ = x1x2 .
Таким образом, окончательно получаем, что
f ( x1 ⊕ β , x2 ⊕ α ,α3 ,… ,α n ) ⊕ αβ ⊕ λ = x1x2 .
Лемма доказана.
Проиллюстрируем лемму
о нелинейной функции на
примере.
Пример 1. Определить, можно ли получить функцию x1 x2
из функции f ( x1 , x2 , x3 ) = x1x 2 x3 ∨ x1 x 2 .
– 38 –
Решение. Построим полином Жегалкина для заданной
функции.
f ( x1 , x2 , x3 ) = x1 x 2 x3 ⋅ x x = x1 x 2 x3 ⋅ x1 x 2 ⊕ 1 =
1 2
= (x1 x 2 x3 ⊕ 1) ⋅ (x1 (x 2 ⊕1) ⊕ 1) ⊕ 1 =
= x1x 2 x3 ⊕ x1x 2 x3 ⊕ x1x 2 x3 ⊕ x1x 2 ⊕ x1⊕1 ⊕ 1.
Получили, что
f ( x1 , x2 , x3 ) = x1x 2 x3 ⊕ x1x 2 ⊕ x1, т. е. функция
f ( x1 , x2 , x3 ) нелинейна относительно переменных x1 и x2 , и по
лемме
о
нелинейной
функции
из
нее
можно
получить
конъюнкцию x1 x2 . Представим ее в виде
f ( x1 , x2 , x3 ) = x1x 2 (x3 ⊕ 1) ⊕ x1 .
Построим функцию от двух переменных Ψ( x1 , x2 ) =
= f ( x1 , x2 ,0 ) = x1x 2 ⊕ x1 . Таким образом, имеем α = 1, β = 0 и
λ = 0 , тогда Ψ( x1 ⊕ β , x2 ⊕ α ) ⊕ αβ ⊕ λ = Ψ( x1 , x2 ⊕ 1 ) =
= x1 (x2 ⊕ 1) ⊕ x1= x1x 2 ⊕ x1⊕ x1= x1x 2 .
Заключаем, что конъюнкцию x1 x2 можно получить из
функции f ( x1 , x2 , x3 ) заменой переменных x2 на x2 , x3 на 0,
действительно, f ( x1 , x2 , 0 ) = x1 x2 .
ЗАДАЧИ
5.1. Какие из элементарных функций алгебры логики
являются линейными?
– 39 –
5.2. Выяснить, является ли линейной функция f, заданная
векторно:
~ = ( 10 01 ) ;
a) α
f
~ = ( 1101 ) ;
b) α
f
~ = ( 10 010110 ) ;
c) α
f
~ = ( 110 0 0 011 ) ;
d) α
f
~ = ( 011010 01 ) ;
e) α
f
~ = ( 1010 0110 ) ;
f) α
f
~ = ( 011010 01 ) ;
g) α
f
~ = ( 0110 10 01 0110 10 01 ) ;
h) α
f
~ = ( 1010 010110 01110 0 ) ;
i) α
f
~ = ( 1010 0101 01011010 ) .
j) α
f
5.3. Выяснить, является ли функция f линейной. Если не
является, то построить из f функцию x ⋅ y :
a) f = x → y ;
b) f = x ⋅ y ∨ y ⋅ z ∨ z ⋅ x ;
~ = ( 1110 10 0 0 ) ;
c) α
f
~ = ( 011110111111110 0 ) ;
e) α
f
~ = ( 1110 10 0110 01 0111 );
f) α
f
g) f = (x ⋅ y ∨ x ⋅ y ⋅ z ) ⊕ x ⋅ y ⋅ z ;
h) f = x → ( y → z );
i) f = x ⋅ y ∨ y ⋅ z ∨ z ⋅ x .
~ = ( 11011011 ) ;
d) α
f
– 40 –
~ прочерки символами 0 или 1
5.4. Заменить в векторе α
f
так, чтобы получился вектор значений некоторой линейной
функции f. Выразить f полиномом.
~ = ( 10 − 1 ) ;
a) α
f
~ = ( 0 − 11 );
b) α
f
~ = ( − 0 01 − − 1 − ) ;
c) α
f
~ = ( 1 − 10 1 − − − ) ;
d) α
f
~ = ( − 0 − 1 − − 0 0 );
e) α
f
~ = ( 11 − 0 − − − 1 ) ;
f) α
f
~ = ( − −10 − − − − 0 − −1 −110 );
g) α
f
~ = ( 1− − − − − − − − − − 0 −110 ) .
h) . α
f
x ) , существенно
5.5. Найти число линейных функций f ( ~
n
зависящих в точности от k переменных.
5.6. Найти число линейных функций f ( ~
x ) таких, что
n
f ( 0 ,0 ,...,0 ) = f ( 1,1,...,1 ) = 1.
5.7. Доказать, что линейная функция является самодвойственной тогда и только тогда, когда она существенно
зависит от нечетного числа переменных.
– 41 –
§ 6. Классы функций, сохраняющих константы.
f ( x1 , x2 ,… , xn )
Функция
сохраняет
константу
0
~n
(константу 1), если f ( 0 ) = f ( 0 ,0 ,...,0 ) = 0 (соответственно
если
~
f ( 1 n ) = f ( 1 ,1 ,...,1 ) = 1).
Множество
всех
булевых
функций, сохраняющих константу 0 (константу 1), обозначается
через T0 (соответственно через T1). Каждый из классов T0 и T1
является замкнутым относительно операции суперпозиции.
Множество всех функций из T0 ( T1), зависящих от
x1 , x2 ,… , xn , будем обозначать через T0 ( n )
переменных
(соответственно
T1( n ) ). Легко
через
T0 ( n ) = T1( n ) = 2
2 n −1
подсчитать,
что
.
Пример 1. Найти число функций f ( ~
x ) , принадлежащих
n
множеству A = T0 ∩ T1 .
Решение. Если f ( ~
x ) ∈ T0 ∩ T1 , тогда значения функции
n
f(~
x n ) можно произвольно выбирать на всех двоичных
(
n
наборах, кроме нулевого и единичного, т.е. на 2 − 2
Такой выбор осуществляется 2
A =22
n −2
.
2 n −2
) наборах.
способами. Таким образом,
– 42 –
ЗАДАЧИ
x ) принадлежит
6.1. Выяснить, при каких n функция f ( ~
n
множеству T0 \ T1:
a) f ( ~
x n ) = x1 ⊕ x2 ⊕ ... ⊕ xn ;
⎛ n −1
⎞
n
~
b) f ( x ) = ⎜ ⊕ xi xi +1 ⎟ ⊕ xn x1 ;
⎝ i =1
⎠
c) f ( ~
x n )=
d) f ( ~
x n )=
⊕
xi ⋅ x j ;
⊕
(xi ∨ x j );
1≤ i < j ≤ n
1≤ i < j ≤ n
e) f ( ~
x n ) =1 ⊕ (x1 → x2 )(x2 → x3 )...(xn → x1 ).
x ) , принадлежащих
6.2. Подсчитать число функций f ( ~
n
множеству А:
a) A = T0 ∪ T1 ;
b) A = T0 ∩ L ;
c) A = S ∩ T1 ;
d) A = T0 ∪ L ;
e) A = L − T1 ;
f) A = (T1 ∪ L ) ∩ S ;
g) A = S ∩ T1 ∩ L ;
h) A = T0 ∪ L ∪ S .
6.3. Найти все самодвойственные монотонные функции
f(~
x n ) , существенно зависящие от всех переменных (n=1,2,3,4).
– 43 –
6.4. Доказать, что
L ∩ T0 ∩ T1 = L ∩ S ∩ T0 = L ∩ S ∩ T1 = L ∩ S ∩ T0 ∩ T1 .
6.5. Доказать, что L ⊆ T1 ∪ T0 ∪ S .
6.6. Доказать, что множество A не пусто:
a) A = LT1 − ( T0 ∪ S ) ;
b) A = LT0 − ( T1 ∪ S ) ;
c) A = LS − ( T1 ∪ T0 ) .
6.7. Какие функции можно получить из функции f ( ~
x )
n
путем отождествления переменных, если:
a) f ∈ L − T1S ;
b) f ∈ T1 − T0 ;
c) f ∈ T0 − T1;
d) f ∈ S − T0 ;
e) f ∈ S − T1 ;
f) f ∈ T1 − T0 ;
g) f ∈ T1 − T0 ;
h) f ∈ T1 − T0 .
6.8. Показать, что всякая монотонная функция содержится
не менее, чем в двух классах из T0 , T1 , L.
6.9. Доказать, что функция, двойственная монотонной
функции, монотонна.
6.10. Доказать, что монотонная функция, не сохраняющая
нуль (единицу), равна тождественно единице (нулю).
6.11. Доказать, что если f тождественно не равна константе,
а( f ∨ f
∗
) — константа, то f ∉ M ∪ S .
– 44 –
§ 7. Полнота и замкнутые классы.
F. Замыканием [F]
Пусть задана система функций
множества F
называется совокупность всех функций из P2,
являющихся суперпозициями функций из множества F. Система
F называется замкнутой, если [F]=F.
Система F называется полной, если [F]=P2, т. е. если любая
функция
алгебры
логики
может
быть
выражена
через
суперпозицию функций из множества F.
Система
{ &, ∨ , }
(конъюнкция, дизъюнкция, отрицание)
полна, т. к. любую булеву функцию можно представить в виде
СДНФ или СКНФ.
Из представления функции в виде полинома Жегалкина
следует, что система функций {& ,⊕ ,0 , 1 } также полна.
Дизьюнкцию
можно
выразить
через
конъюнкцию
и
отрицание, а конъюнкцию через отрицание и дизъюнкцию (по
закону де Моргана):
x∨ y = x &y
Следовательно, системы
x& y = x ∨ y.
{
Теорема Поста о полноте.
, & } и{ , ∨
} будут полными.
Система функций
F полна
тогда и только тогда, когда она не содержится ни в одном из пяти
замкнутых классов: T0 , T1 , S , M, L .
– 45 –
Доказательство. Необходимость докажем от противного.
Пусть система F полна и включена в один из пяти классов T0, T1,
S, M, L, т. е. F ⊆ A ∈ { T0 ,T1, S , M , L } , где A один из пяти
замкнутых классов. Тогда [F]= P2 , т.е. P2 =[A], а так как класс A
замкнут, то один из пяти классов совпадает с множеством всех
булевых функций, что ведет к противоречию.
Достаточность. Пусть выполнено условие теоремы, т. е.
существуют функции, которые не принадлежат соответствующим
классам. Пусть
f 0 ∉ T0 , f1 ∉ T1 , f s ∉ S , f m ∉ M , f L ∉ L ,
возможно, что некоторые из этих функций равны между собой.
Покажем, что через суперпозицию этих функций можно выразить
отрицание и конъюнкцию, тогда любая функция может быть
выражена через суперпозицию функций из множества F.
1 этап. Получение констант: 0, 1.
a) Пусть
~
f1( 0 n ) = 0 , тогда
f1( x ,..., x ) = 0 . Вторую
константу получаем из f 0 :
f 0 ( f1( x ,..., x ) , f1( x ,..., x ) ,… , f1( x ,..., x ) ) = 1.
~
b) Если f1( 0 n ) = 1, тогда f1( x ,..., x ) = x . По лемме о
несамодвойственной функции из функции f s ∉ S и отрицания
можно получить константу, обозначим ее через c. Вторую
константу получаем из f1 ∉ T1 , f1( с ,...,с ) = с .
– 46 –
2 этап. Получение отрицания.
По лемме о немонотонной функции из функции f m ∉ M с
помощью подстановки констант, которые были получены через
суперпозицию на первом этапе, и переменной x получаем x .
3 этап. Получение конъюнкции.
По лемме о нелинейной функции из f L ∉ L с помощью
подстановки
констант
и
отрицания
можно
получить
конъюнкцию. Константы и отрицание были получены через
суперпозицию на первом и втором этапах. Теорема доказана.
Полная система F называется базисом, если никакая ее
подсистема не является полной.
Следствие1.
Базис состоит не более чем из четырех
функций.
Доказательство. Из доказательства теоремы следует, что
{
система функций f 0 , f1 , f s , f m , f L
} полна.
На первом этапе, при получении констант, в случае а)
имеем
f1( x ,..., x ) = 0 , следовательно, f1 ∉ S , тогда система
{ f 0 , f1 , f m , f L }
В случае b)
система
полна.
f1( x ,..., x ) = x , следовательно, f1 ∉ T0 , тогда
{ f1 , f s , f m , f L } также полна.
– 47 –
Замкнутый класс F, не совпадающий с множеством всех
булевых функций, называется предполным, если при добавлении
к нему произвольной функции из P2 , не принадлежащей F, вновь
полученная система будет полной, т. е. для ∀ f ∉ F система
F ∪ { f } полна.
Следствие 2. Существует только пять предполных классов
T0 , T1 , S , M, L .
Следствие 3. Всякий замкнутый класс содержится в одном
из пяти классов T0 , T1 , S , M, L .
Утверждение доказывается от противного.
Пример
{
1.
Выяснить,
полна
ли
система
функций
0 , 1 , xy , x ⊕ y ⊕ z }.
Решение. Составим для этой системы таблицу принад-
лежности функций каждому из классов T0, T1, S, M, L.
T0
T1
S
M
L
xy
+
+
––
+
––
0
+
––
––
+
+
1
––
+
––
+
+
x⊕ y⊕ z
+
+
+
––
+
Таблица 8
Эта система полна, т. к. она не содержится целиком ни в
одном из замкнутых классов (каждый столбец таблицы 8
– 48 –
содержит не менее одного минуса). Покажем, что она образует
базис, для этого достаточно показать, что у нее нет полной
подсистемы, отличной от нее самой. Функция
x⊕ y⊕ z
обязательно входит в базис, т. к. только она не монотонна.
Функция xy входит в базис, т. к. только она не линейна.
Константа 0 входит в базис, т. к. только 0 не принадлежит классу
T1 . Константа 1 является единственной функцией системы, не
принадлежащей классу T0, поэтому она входит в базис. Таким
образом, все 4 функции входят в любую полную подсистему.
Из примера 1 получаем следующее утверждение.
Следствие 4.
Существует базис состоящий из четырех
функций.
Функция f ( ~
x n ) называется шефферовой (или функцией
Шеффера от n переменных), если она полна, т. е. образует базис
в P2 . Нетрудно проверить, что штрих Шеффера и стрелка Пирса
являются функциями Шеффера от двух переменных.
Пример
2.
Доказать
полноту
системы
функций
G = { f ( x , y , z ) = xy → z , g ( x , y ) = x ⊕ y}. Проиллюстрировать
поэтапное доказательство теоремы Поста, т. е. выразить
константы, отрицание и конъюнкцию через функции системы G.
Решение.
Рассмотрим
функцию
f ( x , y , z ) = xy → z ,
построим для нее таблицу значений (см. табл. 9).
– 49 –
x ⊕ y ⊕ z x ⊕ y ⊕ z ⊕1
x
y
z
xy → z
0
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
0
0
1
1
1
0
1
1
0
0
1
1
0
1
0
1
1
0
1
1
1
0
0
0
1
1
1
1
1
1
0
Таблица 9
Очевидно, что f не самодвойственна и не монотонна, т. к.
условие монотонности нарушается на третьем и седьмом
наборах: f ( 0 ,1,0 ) = 1, f ( 1,1,0 ) = 0 . Нетрудно проверить, что у
этой функции все переменные существенные, т. к. она принимает
значение 0 только на одном наборе, для которого найдутся
соседние наборы по первой, по второй и по третьей переменным,
значения функций на которых равны 1. Если бы эта функция
была линейна, то она совпала бы с функцией x ⊕ y ⊕ z или
x ⊕ y ⊕ z ⊕ 1(см. табл.9). Заключаем,что функция f не линейна.
Вторая функция g(x,y)= x ⊕ y на нулевом и на единичном
наборах принимает значение 0. Найдем для нее двойственную
∗
функцию: g ( x , y ) = x ⊕ y = ( x ⊕ 1 ) ⊕ ( y ⊕ 1 ) ⊕ 1 = x ⊕ y ⊕ 1 .
Из единственности представления функции в виде полинома
– 50 –
Жегалкина, получаем, что g не самодвойственна. Эта функция
не монотонна, т. к. условие монотонности нарушается на наборах
(0,1) и (1,1).
Принадлежность функций
f
и
g
каждому из пяти
замкнутых классов T0, T1, S, M, L показана в таблице 10.
T0
T1
S
M
L
xy→ z
––
+
––
––
––
x⊕ y
+
––
––
––
+
Таблица 10
По теореме Поста делаем вывод, что система функций
G = { f ( x , y , z ) = xy → z , g ( x , y ) = x ⊕ y} полна.
Проиллюстрируем теперь теорему Поста.
1) Получение констант. Имеем,
f ( 0 ,0 ,0 ) = f ( 1,1,1 ) = 1,
следовательно, f ( x , x , x ) = 1, т. о. константу 1 можно выразить
в виде формулы
xx → x = 1. Так как g ( 0 ,0 ) = g ( 1,1 ) = 0 , то
g ( x , x ) = 0 , или в виде формулы x ⊕ x = 0 .
2) Получение отрицания. По лемме о немонотонной
функции имеем f ( x ,1,0 ) = x или в виде формулы x ⋅1 → 0 = x .
Аналогично, применяя эту лемму для второй функции, получим,
что g ( 1, x ) = x или в виде формулы 1 ⊕ x = x . Подставим
вместо 1 ее выражение в виде f ( x , x , x ) = 1, тогда получим, что
g ( f ( x , x , x ), x ) = x или в формульном виде ( xx → x ) ⊕ x = x .
– 51 –
3) Получение &. Найдем полином Жегалкина для функции
f ( x , y , z ) = xy → z . СКНФ для нее имеет следующий вид:
x ∨ y ∨ z . Воспользовавшись законом де Моргана, тождеством
для
отрицания
и
дистрибутивностью
конъюнкции), получим полином
(для
сложения
и
xyz ⊕ 1 = xyz ⊕ xy ⊕ 1. По
лемме о нелинейной функции имеем xy = f ( x , y ,0 ) . Подставляя
выражение константы 0 в виде суперпозиции, получим, что
xy = f ( x , y , g ( x , x )) (обозначим правую часть этого выражения
через A) или в виде формулы xy = xy → ( x ⊕ x ) . Наконец,
применив выражение отрицания через суперпозицию функций
исходной системы, имеем g ( f ( x , x , x ), A ) = xy . В формульном
виде получим, что ( xx → x ) ⊕ ( xy → ( x ⊕ x )) = xy . Итак,
отрицание и конъюнкцию выразили через функции системы G.
Пример 3. Bыразить функцию f = x ↓ y через функции
системы G = { f ( x , y , z ) = xy → z , g ( x , y ) = x ⊕ y}.
Решение.
Выразим функцию f через конъюнкцию и
отрицание: f = x ⋅ y . Используя выражения для отрицания и
конъюнкции через функции системы G (см. пример 2), получаем
f = g ( f ( x , x , x ), f ( g ( f ( x , x , x ), x ), y , g ( x , x ))), или в виде
формулы: f = ( xx → x ) ⊕ ((( xx → x ) ⊕ x ) y → ( x ⊕ x )) = x y .
–52–
ЗАДАЧИ
7.1. Выяснить, полна ли данная система функций. Если
полна, то проиллюстрировать поэтапное доказательство теоремы
Поста, т. е. получить через суперпозицию функций из этой
системы константы, отрицание и конъюнкцию.
a) { x → yz , xz ↔ xy , xy ⊕ yz };
b) { ( xy ∨ xz ) ⊕ yz , x ∨ y , x → xy , x ↔ y };
c) { xy ∨ xz ∨ yz , xy → z , ( xy ∨ xz ) ⊕ yz };
d) { xz ↔ xy , ( xy ∨ xz ) ⊕ yz , xy → z , x ↔ y };
e) { xz ∨ xy ∨ yz , ( xy ∨ xz ) ⊕ yz , xyz ↔ xz };
f) { x ↔ xz , xz ↔ xy , ( xy ∨ xz ) ⊕ yz , x ∨ y , x ⊕ y };
g) { x ∨ y , x ⊕ y , x → y ,0 }.
7.2. Выяснить, полна ли система A функций, заданных
векторами своих значений:
a) A = { f1 = (0110 ), f 2 = ( 110 0 0 011 ), f 3 = ( 10 01 0110 )};
b) A = { f1 = (0111), f 2 = ( 0101 1010 ), f 3 = ( 01111111 )};
c) A = { f1 = ( 0111 ), f 2 = ( 10 01 0110 )};
d) A = { f1 = (0101), f 2 = ( 1110 10 0 0 ), f 3 = ( 0110 10 01 )};
e) A = { f1 = ( 10 01 ), f 2 = ( 1110 10 0 0 )};
f) A = { f1 = ( 11 ), f 2 = ( 0111 ), f 3 = ( 0 011 0111 )};
g) A = { f1 = ( 10 ), f 2 = ( 0 011 0111 )}.
–53–
7.3. Полна ли система F =
{ f ( ~x n ), g( ~x n ) } , если:
a) f ∈ S − M , g ∉ L ∪ S , f → g ≡ 1 ;
b) f ∈ T0 ∪ L , g ∉ S , f → g ≡ 1 ;
c) f ∈ T 0 ∪ T1 , g ∈ M − T1 , f → g ≡ 1 ;
d) f ∈ SL − T0 , g ∈ M − T1 L , f → g ≡ 1 ?
7.4. Выяснить, полна ли система функций
A = { f , g ,h },
если выполнены следующие условия: f ∉ L ∪ T0 T1 , g ∈ M − L ,
f → g ≡ 1, f ∨ h ≡ 1 ?
7.5. Привести примеры базисов, содержащих одну, две, три
и четыре функции.
7.6. Перечислить все различные базисы, содержащие только
функции, существенно зависящие от двух переменных.
7.7. Найти все функции Шеффера от двух переменных.
7.8. Доказать, что если f ∉ T0 ∪ T1 ∪ S , то f — функция
Шеффера.
7.9. Сколько существует функций Шеффера от n переменных?
7.10. Верно ли, что если f ∉ L ∪ S ∪ M , то f полна ?
7.11. Опровергнуть, что
a) если f ∉ ( T0 ∪ T1 ) − S , то f ∈ L ∪ M ;
b) если f ∈ T0 T1 M , то f — функция Шеффера;
–54–
c) если f ∉ T0 ∪ S ∪ M , то f ∈ L T1 S M ;
d) если f ∉ L ∪ S ∪ M , то f — функция Шеффера.
7.12. Полна ли система функций A? Если полна, то привести
пример полной системы функций из множества A.
a) A = P2 − ( T0 ∪ T1 ∪ L ∪ S ∪ M ) ;
b) A = ( M − T0 ) ∪ ( L − S ) .
7.13. Верно ли, что f ∈ [g ] или g ∈ [ f ] ?
a) f = x ⊕ y , g = xy ;
b) f = x ⊕ y , g = x → y ;
c) f = x → y , g = xy ;
d) f = x → y , g = x ∨ y ;
e) f = x ↔ y , g = x ∨ y ;
f) f = x ↔ y , g = xy ;
g) f = x → y , g = xy ⊕ xz ⊕ yz ;
h) f = x ⊕ y , g = xy ⊕ xz ⊕ yz ;
i) f = x ⊕ y , g = xy → z ;
j) f = x → y , g = xy ⊕ z ;
k) f = x ↔ y , g = xy ⊕ z ;
l) f = x → y , g = x .
- 56 -
Список литературы
1. Яблонский С. В. Введение в дискретную математику. — М.:
Наука, 1986.
2. Яблонский С. В., Гаврилов Г. П., Кудрявцев В. Б. Функции
алгебры логики и классы Поста. — М.: Наука, 1966.
3. Гаврилов Г. П., Сапоженко А. А. Сборник задач по дискретной
математике. — М.: Наука, 1977.
4. Гаврилов Г. П., Сапоженко А. А. Задачи и упражнения по
курсу дискретной математики. — М.: Наука, 1992.
5. Алексеев В. Е., Белова Р. В. Представление булевых функций
формулами и схемами. — Методическая разработка, 1986.
- 57 -
Оглавление.
§ 1. Булевы функции или функции алгебры логики........................3
§ 2. Специальные представления булевых функций.....................14
§ 3. Двойственность и класс самодвойственных функций............24
§ 4. Монотонность и класс монотонных функций.........................30
§ 5. Линейность и класс линейных функций..................................36
§ 6. Классы функций, сохраняющих константы............................41
§ 7. Полнота и замкнутые классы....................................................44
§ 8. Диаграмма Венна для классов T0 , T1 , S , L , M .......................55
Список литературы...........................................................................56
-3Проверку на монотонность булевой функции f ( ~
x ),
~ = ( α ,α ,...,α
заданной своим вектором значений α
),
f
0 1
n
n
2 −1
~ на
можно осуществить следующим образом. Разделим вектор α
f
две
~
α
~
α
f1
1
f1
0
равные
части
~
α
f1
0
= ⎛⎜ α 0 ,α1 ,...,α n −1 ⎞⎟
⎝
2
−1 ⎠
и
Если
отношение
= ⎛⎜ α n −1 ,α n −1 ,...,α n ⎞⎟ .
⎝ 2
2
+1
2 −1 ⎠
n
~
~
не
выполнено,
то
f
(
x
) не является монотонной.
≤α
1
f
1
~ (σ ∈ { 0 ,1 }) вновь
В противном случае каждый из векторов α
f1
σ
разделим на две равные части и проверим для них отношение
предшествования. Если хотя бы одно из отношений не
выполнено, то заключаем, что f ( ~
x ) ∉ M . В противном случае
вновь делим векторы пополам и т. д. Если отношение
предшествования выполняется для всех пар векторов, то
n
f(~
x n )∈ M .
Пример
2.
По
вектору
значений
~ = ( 10 011111 )
α
f
выяснить, является ли функция f монотонной.
Решение. Поделим вектор пополам, тогда 10 01≤1111 . На
следующем шаге получаем: 10 > 01 (отношение предшествования нарушается) и 11≤11 . Таким образом, заданная функция
не является монотонной.
Download