DisMathTPU_new
.pdf5.2. Двойственная формула
Определение. Формула F называется двойственной формуле F,
если она получена из F заменой символов функций на символы двойственных им функций.
Пример.
задает бу-
леву функцию f(x1; : : : ; xn), то двойственная ей формула F задает двойственную функцию f (x1; : : : ; xn):
Доказательство. По условию теоремы формула F задает булеву функцию f(x1; : : : ; xn). По определению формулы F имеем:
F = f(x1; : : : ; xn) = f0(f1(x1; : : : ; xn); : : : ; fm(x1; : : : ; xn)):
Рассмотрим двойственную ей формулу:
F = f0 (f1 (x1; : : : ; xn); : : : ; fm(x1; : : : ; xn)) =
[ по определению двойственной функции для функций fi (x1; : : : ; xn), ãäå i = 1; : : : ; m ]
= f0 (f1(x1; : : : ; xn); : : : ; fm(x1; : : : ; xn)) =
[по определению двойственной функции для f0 (y1; : : : ; ym) ]
=f0(f1(x1; : : : ; xn); : : : ; fm(x1; : : : ; xn)) =
[ по закону двойного отрицания ]
= f0(f1(x1; : : : ; xn); : : : ; fm(x1; : : : ; xn)) = f(x1; : : : ; xn) =
[ по определению двойственной функции для f(x1; : : : ; xn) ]
= f (x1; : : : ; xn):
Пример. Рассмотрим формулу F = x _ y, которая задает булеву
функцию НЕ-ИЛИ, то есть стрелку Пирса. Двойственная ей формула F = xy должна задавать функцию, двойственную стрелке Пирса
это штрих Шеффера: в самом деле F = xy это функция НЕ-И, то есть штрих Шеффера.
31
Следствие из принципа двойственности. Если формулы F1 è
F2 равносильны, то двойственные им формулы F1 è F2 также рав- носильны.
Доказательство. Равносильные формулы F1 è F2 задают одну и ту
же булеву функцию f(x1; : : : ; xn), следовательно, по принципу двой-
ственности, двойственные им формулы F1 è F2 задают двойственную f(x1; : : : ; xn) функцию f (x1; : : : ; xn).
Таким образом, можно не доказывать некоторые равносильности (в том числе и основные), а выводить их, пользуясь следствием из принципа двойственности.
Примеры. Исходя из закона склеивания конъюнкций x y _x y = y и используя следствие, получим (x _ y)(x _ y) = y закон склеивания дизъюнкций. Исходя из одного закона де Моргана x _ y = x y и используя следствие, получим другой закон де Моргана x y = x_y.
5.3. Способы получения двойственной функции
Из изложенного выше следует, что если булева функция f(x1; : : : ; xn) задана формулой Ff , то двойственная ей функция f (x1; : : : ; xn) ìî-
жет быть получена тремя способами:
по определению двойственной функции инверсией в формуле Ff всех аргументов и самой функции;
по определению двойственной формулы и принципу двойствен- ности заменой в формуле Ff символов функций на символы двой-
ственных им функций;построением таблицы истинности исходной функции по формуле
Ff , а затем переходом к таблице истинности двойственной функции (переворотом и инверсией столбца значений исходной функции).
5.4. Упражнения
Упр.1. Построить формулы для функций, двойственных данным, пользуясь двумя разными способами. Сравнить таблицы истинности, построенные по полученным формулам.
F1 = x y _ y z _ x t _ z t,
F2 = x 1 _ y(z t _ 0) _ x y z,
32
F3 = (x ! y) ((x # y)=(x y z)),
F4 = (x _ y _ (yz 1)) ! 1.
Упр.2. Построить таблицы истинности по формулам из упр. 1, получить таблицы истинности двойственных функций и сравнить их с результатами предыдущего упражнения.
Упр.3. По таблицам истинности функций f1 f8 построить двой- ственные им функции.
x y z |
f1 |
f2 |
f3 |
f4 |
f5 |
f6 |
f7 |
f8 |
||
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
Упр.4. Являются ли двойственными ли формулы Ff è Gg? ßâëÿ- ются ли двойственными функции f и g?
1) |
Ff = x y x z y z |
Gg = |
|
|
|
|
_ |
|
|
|
_ |
|
|
|
|
|
, |
|
||||||
x |
y |
x |
z |
y |
z |
|
||||||||||||||||||
2) |
Ff = x y # x z, |
Gg = (x _ y)=(x _ z), |
||||||||||||||||||||||
3) |
Ff = ( |
x |
! |
y |
) ! (y ! x), Gg = (x ! y)( |
y |
! |
x |
). |
Упр.5. Показать, что f = g.
1)Ff = xyz _ x(y z),
'g = 10010111,
2)Ff = x y z, Fg = x y z,
3)Ff = xy _ xz _ yz, Fg = xy _ xz _ yz,
4)Mf1 = f0101; 0110; 1001; 1010g,
I1 = 0 0
Ig = fI1; I2; I3; I4g, I2 = 1 1
I3 = 0 0
I4 = 1 1
33
6. Контрольная работа 1
Тема контрольной работы: булевы функции, фиктивные пере-
менные, двойственные функции и двойственные формулы.
|
|
|
|
|
|
|
|
|
Ff |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
по определению |
|
|
|
0 |
? |
|
|
|
|
по определению |
|||||||||||||
двойственной функции |
|
|
|
|
двойственной формулы |
||||||||||||||||||
|
|
|
3 |
|
|
|
|
(F )f |
|
|
|
|
4 |
|
|
|
|
|
|||||
|
|
? |
|
|
|
|
|
|
|
|
|
|
|
|
? |
|
|
||||||
|
|
|
|
|
|
1 |
? |
|
|
|
|
|
|
|
|
|
|||||||
|
(F 0)f |
|
|
|
#таблица |
|
|
|
|
|
|
(F )f |
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
00 |
|
|
|
|
|
|
|
000 |
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
истинности |
|
|
|
|
|
|
|
|
|||||||||||||
|
|
? |
|
|
|
|
|
|
|
|
f |
|
|
|
|
|
? |
|
|
||||
|
Ff0 |
|
|
" |
|
|
|
|
|
|
! Ff |
|
|||||||||||
|
|
|
# |
2 |
? |
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
10 |
|
|
истинности f |
|
|
100 |
|
|
|
|||||||||||
|
|
|
|
|
- |
|
|
таблица |
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
" |
5 |
|
|
|
|
|
! |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
удалить |
|
|
|
|
||||
|
|
|
|
|
|
|
#таблица |
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
фиктивные переменные |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
? |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
истинности f |
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
" |
|
|
|
|
|
|
! |
|
|
|
|
|
Схема контрольной работы (решение каждой из десяти задач
начинать с постановки задачи и делать вывод из сравнения таблиц ис- тинности функции f , полученных разными способами; F обозначает
формулу без лишних скобок, (F ) с недостающими скобками).
Задания на контрольную работу (формула Ff )
1) x ! y |
! (z |
|
|
|
xy) |
||||
2) x |
|
(z |
|
|
y |
xy) |
3)x=y=(z xy)
4)z ! y ! (x zy)
5)x ! y ! (z xy)
16)x ! y ! (y xz)
17) y |
|
(z |
|
|
y |
xy) |
18)x=y ! (z xy)
19)z ! xy ! (x z)
20)x ! xy ! (z y)
6) xz # y=(y x)
7) z y (x y)
8)x _ z # y=(y x)
9)xz ! y # (y x)
10)xz y ! (x y)
21)z xy ! (x # y)
22)xz # y=x(y z)
23)x _ yz # (y x)
24)z # xy (x ! z)
25)xy # x=(x y)
11)y z ! y(x # z)
12)x z ! x(y=z)
13)xy _ z=(x ! z)
14)y z ! y(x=z)
15)x ! z=x(y # z)
26)y zy=y(x # z)
27)x=z ! y(x # z)
28)x=z ! y(x ! z)
29)x z ! y(x=z)
30)x ! y=x(y # z)
34
Пример. Задана формула
Ff = z y (x yz):
0) Расставим недостающие скобки в формуле Ff . Возьмем в скоб- ки конъюнкцию, затем остальные подформулы слева направо.
(F )f = (z y) (x (yz)):
1), 2) Построим таблицу истинности функции f(x; y; z) по фор-
ìóëå (F )f . Получим таблицу истинности двойственной функции f (x; y; z) по таблице истинности функции f(x; y; z), переворачивая
и инвертируя столбец значений функции f(x; y; z).
x y z |
(z y) |
|
( |
|
|
( |
|
|
f(x; y; z) |
f (x; y; z) |
||
|
x |
|
yz)) |
|||||||||
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
|||
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
|||
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
|||
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
|||
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
|||
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
|||
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
|||
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
5 |
3 |
4 |
1 |
|
|
3) По определению двойственной функции получим из формулы (F )f формулу двойственой функции (F 0)f , инвертируя переменные и
саму функцию f. Упростим формулу (F 0)f , заменив инверсию функции обратной импликации на не обратную импликацию.
(F 0)f = (z y) (x (yz)) = (z y) - (x (yz)):
00) Уберем лишние скобки в формуле (F 0)f вокруг конъюнкции и первой слева функции ( ).
Ff0 = z y - (x yz):
4) Построим формулу, двойственную (F )f . Заменим в формуле
(F )f символы элементарных функций на символы двойственных им
функций.
(F )f = (z y) ,! (x ,! (y _ z)):
35
000) Уберем лишние скобки в формуле (F )f . Опустим скобки во- круг первой слева функции ( ).
Ff = z y ,! (x ,! (y _ z)):
10) Построим по формуле Ff0 таблицу истинности двойственной функции f (x; y; z) .
x y z |
|
|
|
|
- (x |
|
|
|
) |
f (x; y; z) |
||
|
z |
y |
|
yz |
||||||||
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
|
1 |
||
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
|
0 |
||
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
|
0 |
||
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
|
1 |
||
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
|
1 |
||
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
|
0 |
||
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
|
0 |
||
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
|
1 |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
4 |
3 |
6 |
5 |
1 |
|
|
100) Построим по формуле Ff таблицу истинности двойственной функции f (x; y; z) .
x y z |
z |
|
y , |
(x , |
(y |
|
z)) |
f (x; y; z) |
|||||
|
|
|
|
|
! |
|
|
! |
|
|
_ |
|
|
0 |
0 |
0 |
|
1 |
1 |
1 |
0 |
1 |
1 |
|
1 |
||
0 |
0 |
1 |
|
0 |
0 |
1 |
0 |
1 |
1 |
|
0 |
||
0 |
1 |
0 |
|
0 |
0 |
1 |
1 |
0 |
0 |
|
0 |
||
0 |
1 |
1 |
|
1 |
1 |
1 |
0 |
0 |
1 |
|
1 |
||
1 |
0 |
0 |
|
1 |
1 |
0 |
0 |
1 |
1 |
|
1 |
||
1 |
0 |
1 |
|
0 |
0 |
0 |
0 |
1 |
1 |
|
0 |
||
1 |
1 |
0 |
|
0 |
0 |
0 |
0 |
0 |
0 |
|
0 |
||
1 |
1 |
1 |
|
1 |
1 |
0 |
0 |
0 |
1 |
|
1 |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
6 |
2 |
5 |
3 |
4 |
|
|
Вывод. Таблицы истинности двойственной функции f (x; y; z) из задач 2), 10), 100) совпадают, значит, все задачи решены верно (кроме,
может быть, задачи 0).
5) Удалим фиктивные переменные функции f (x; y; z) в ее табли-
це истинности. Так как вес столбца значений функции четный, то
переменные функции могут быть фиктивными. Рассмотрим переменную x. Верхняя половина столбца значений функции f (x; y; z) (1001)
36
равна нижней половине (1001), значит, переменная x является фиктивной. Удаляем из таблицы истинности столбец x и все строки, в которых x принимает значение 0.
y |
z |
f (y; z) |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
|
|
|
В полученной таблице истинности верхняя половина столбца значений функции f (y; z) (10) не равна нижней половине (01), значит, перемен-
ная y существенна. Четвертины первой же половины не равны, значит, переменная z тоже существенна.
7. Разложение булевой функции по переменным и совершенные нормальные формы
7.1. Разложение Шеннона
Рассмотрим следующее разложение булевой функции f(x1; : : : ; xn) по переменной xi.
Разложение Шеннона.
f(x1; : : : ; xn) = xif(x1; : : : ; xi 1; 1; xi+1; : : : ; xn) _ _xif(x1; : : : ; xi 1; 0; xi+1; : : : ; xn):
Доказательство (не умаляя общности, для i = 1). При x1 = 0 имеем:
f(0; x2; : : : ; xn) = 0f(1; x2; : : : ; xn)_0f(0; x2; : : : ; xn) = f(0; x2; : : : ; xn):
Ïðè x1 = 1 имеем:
f(1; x2; : : : ; xn) = 1f(1; x2; : : : ; xn)_1f(0; x2; : : : ; xn) = f(1; x2; : : : ; xn):
Следовательно, разложение верно.
Определение. Сомножитель f(x1; : : : ; xi 1; 1; xi+1; : : : ; xn) называется коэффициентом разложения функции f(x1; : : : ; xn) по переменной xi ïðè xi, à f(x1; : : : ; xi 1; 0; xi+1; : : : ; xn) коэффициентом разложения функции f(x1; : : : ; xn) по переменной xi ïðè xi.
37
Пример. Булеву функцию f(x; y; z) = y x z ! y z разложим по переменной x:
y x z ! y z = x(y 1 z ! y z) _ x (y 0 z ! y z) =
[ упростим коэффициенты разложения на основе свойств 0 и 1 для конъюнкции ]
= x(y z ! y z) _ x (y 0 ! y z) =
[ продолжим упрощение коэффициента при x на основе свойства 0 для эквивалентности a 0 = a при a = y; напомним, что способ получения таких свойств был рассмотрен в подразделе 4.4 ]
=x(y z ! y z) _ x (y ! y z);
âрезультате имеем следующие коффициенты разложения, зависящие лишь от y и z:
yz ! y z коэффициент разложения функции f(x; y; z) по переменной x при x,
y! y z коэффициент разложения функции f(x; y; z) по переменной x при x.
7.2. Разложение функции по k переменным
Разложим функцию f(x1; : : : ; xn) последовательно по двум переменным: сначала саму функцию по переменной x1, затем коэффици- енты разложения по переменной x2.
f(x1; : : : ; xn) = x1f(1; x2; : : : ; xn) _ x1f(0; x2; : : : ; xn) = = x1[x2f(1; 1; x3; : : : ; xn) _ x2f(1; 0; x3; : : : ; xn)] _
_ x1[x2f(0; 1; x3; : : : ; xn) _ x2f(0; 0; x3; : : : ; xn)] =
[раскроем скобки по закону дистрибутивности ]
=x1x2f(1; 1; x3; : : : ; xn) _ x1x2f(1; 0; x3; : : : ; xn) _ _ x1x2f(0; 1; x3; : : : ; xn) _ x1x2f(0; 0; x3; : : : ; xn):
Введем обозначения: x = x1, x = x0 (условимся читать символы xc как x в степени c ). Тогда разложение функции f(x1; : : : ; xn) ïî переменным x1, x2 в свернутой форме примет вид
f(x1; : : : ; xn) = |
|
|
x1c1x2c2f(c1; c2; x3; : : : ; xn): |
c c2 |
|
2 |
|
1 |
_ |
|
|
|
|
2B |
|
38
Пример. Продолжим разложение булевой функции f(x; y; z) из
предыдущего примера. Ранее мы уже получили ее разложение по переменной x:
f(x; y; z) = y x z ! y z = x(y z ! y z) _ x (y ! y z):
Разложим теперь коэффициенты этого разложения по переменной y:
x [y(1 z ! 1 z) _ y(0 z ! 0 z)] _ x [y(1 ! 1 z) _ y(0 ! 0 z)] =
[используем свойства 0 и 1 для конъюнкции ]
=x [y(0 z ! z) _ y(1 z ! 0)] _ x [y(1 ! z) _ y(0 ! 0)] =
[ используем свойства 0 и 1 для импликации и раскроем квадратные скобки ]
=x y(z ! z) _ x y(z ! 0) _ x y z _ x y =
=x y(z ! z) _ x y z _ x y z _ x y:
Решим теперь тот же пример, но не последовательным применением разложения Шеннона, а непосредственно по формуле разложения функции по двум переменным.
Пример. Найдем коэффициенты разложения Шеннона булевой функции f(x; y; z) = y x z ! y z по переменным x и y:
f(1; 1; z) = 1 1 z ! 1 z = 0 z ! z = z ! z;
f(1; 0; z) = 0 1 z ! 0 z = 1 z ! 0 = z ! 0 = z; f(0; 1; z) = 1 0 z ! 1 z = 0 0 ! z = 1 ! z = z; f(0; 0; z) = 0 0 z ! 0 z = 1 0 ! 0 = 0 ! 0 = 1:
Подставив коэффициенты разложения в формулу, получим
f(x; y; z) = x1 y1f(1; 1; z) _ x1 y0f(1; 0; z) _ x0 y1f(0; 1; z)_ _x0 y0f(0; 0; z) = x y(z ! z) _ x y z _ x y z _ x y:
Заметим, что в данном случае оба способа привели к одинаковым формулам. В общем случае формулы могут не совпадать, но они с очевидностью равносильны, ибо задают одну функцию.
Далее предположим, что разложение функции по k переменным
имеет вид, аналогичный разложению функции по двум переменным, и докажем этот результат.
39
Разложение функции по k переменным.
f(x1; : : : ; xn) = _ xc11 : : : xckk f(c1; : : : ; ck; xk+1; : : : ; xn):
c1:::ck2Bk
Доказательство. Подставим в левую и правую части равенства произвольный набор a1 : : : an:
f(a1; : : : ; an) = _ ac11 : : : ackk f(c1; : : : ; ck; ak+1; : : : ; an):
c1:::ck2Bk
Для упрощения правой части докажем сперва вспомогательный результат: ac = 1 тогда и только тогда, когда a = c. Действительно, под-
ставляя в формулу ac все возможные наборы, получаем: 00 = 0 = 1, 11 = 1, íî 01 = 0, 10 = 1 = 0. Значит, конъюнкция ac11 : : : ackk = 1 тогда и только тогда, когда a1 : : : ak è c1 : : : ck совпадают. Это означа- ет, что конъюнкция не обращает в ноль лишь одно слагаемое правой части, для которого c1 = a1; : : : ; ck = ak
переменным имеет следующий вид:
f(a1; : : : ; an) = aa11 : : : aakk f(a1; : : : ; ak; ak+1; : : : ; an) = f(a1; : : : ; an):
7.3. Совершенная дизъюнктивная нормальная форма
Разложив произвольную булеву функцию f(x1; : : : ; xn) по k переменным при k = n, получим
f(x1; : : : ; xn) = _ xc11 : : : xcnnf(c1; : : : ; cn):
c1:::cn2Bn
Поскольку коэффициентами разложения здесь являются значения функции на всевозможных наборах, то возможны два случая:
либо набор c1 : : : cn 2 Mf0, тогда f(c1; : : : ; cn) = 0, и поэтому обращается в 0 соответствующее слагаемое правой части;
либо набор c1 : : : cn 2 Mf1, тогда f(c1; : : : ; cn) = 1, и слагаемое
упрощается.
В результате имеем формулу разложения булевой функции по всем
переменным
f(x1; : : : ; xn) = _ xc11 : : : xcnn:
c1:::cn2Mf1
40