Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

DisMathTPU_new

.pdf
Скачиваний:
63
Добавлен:
29.05.2015
Размер:
753.84 Кб
Скачать
F = x=(y x(y _ z)) - (y x).
Теорема (принцип двойственности ). Если формула F
F = x # (y (x _ yz)) ! (y x),

5.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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]