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

DisMathTPU_new

.pdf
Скачиваний:
63
Добавлен:
29.05.2015
Размер:
753.84 Кб
Скачать

Пример. Найдем коэффициенты разложения той же булевой функции f(x; y; z) = y x z ! y z по всем переменным.

f(0; 0; 0) = 0 0 0 ! 0 0 = 1 0 ! 0 = 0 ! 0 = 1, f(0; 0; 1) = 0 0 1 ! 0 1 = 1 0 ! 0 = 0 ! 0 = 1, f(0; 1; 0) = 1 0 0 ! 1 0 = 0 0 ! 0 = 1 ! 0 = 0, f(0; 1; 1) = 1 0 1 ! 1 1 = 0 0 ! 1 = 1 ! 1 = 1, f(1; 0; 0) = 0 1 0 ! 0 0 = 1 1 ! 0 = 1 ! 0 = 0, f(1; 0; 1) = 0 1 1 ! 0 1 = 1 0 ! 0 = 0 ! 0 = 1, f(1; 1; 0) = 1 1 0 ! 1 0 = 0 1 ! 0 = 0 ! 0 = 1, f(1; 1; 1) = 1 1 1 ! 1 1 = 0 0 ! 1 = 1 ! 1 = 1.

Подставив коэффициенты в формулу, получим

f(x; y; z) = x y z _ x y z _ x y z _ x y z _ x y z _ x y z:

Вычисление коэффициентов разложения функции по всем переменным эквивалентно построению ее таблицы истинности.

Определение. Совершенная дизъюнктивная нормальная форма

функции f(x1; : : : ; xn) (СовДНФf ) это формула вида

_xc11 : : : xcnn:

c1:::cn2Mf1

Из данной формулы с очевидностью следует утверждение.

Утверждение о единственности совершенной ДНФ. Любая булева функция, кроме константы 0, представима cовершенной дизъюнктивной нормальной формой, единственной для данной функции.

Алгоритм построения совершенной ДНФ по таблице истинности (основан на определении совершенной ДНФ).

Начало: задана таблица истинности булевой функции.

Шаг 1 : в векторе-столбце значений функции выбирается очередная единица. Если единицы исчерпаны, то идем на конец.

Шаг 2 : по набору значений аргументов строки формируется конъюнкция всех аргументов с соблюдением правила: если i-я компонента

набора равна 0, то i-я переменная входит в конъюнкцию в степени 0

(с инверсией), иначе в степени 1 (без инверсии). Конъюнкция добавляется в формулу как очередное слагаемое. Идем на шаг 1.

Конец.

41

Пример. Применим алгоритм к той же функции (с переименованными аргументами) f(x1; x2; x3) = x2 x1x3 ! x2x3.

x1 x2 x3

f(x1; x2; x3)

x10x20x30 =

 

 

 

 

 

 

0

0

0

1

 

1

 

2

 

3

x

x

x

0

0

1

1

x10x20x31 =

 

1

 

2x3

x

x

0

1

0

0

x10x21x31 =

 

 

 

 

 

 

0

1

1

1

 

1x2x3

x

1

0

0

0

x11x20x31 = x1

 

 

 

 

1

0

1

1

 

2x3

x

1

1

0

1

x11x21x30 = x1x2

 

3

x

1

1

1

1

x11x21x31 = x1x2x3

СовДНФf = x1x2x3 _ x1x2x3 _ x1x2x3 _ x1x2x3 _ x1x2x3 _ x1x2x3:

Обратим внимание на тот факт, что нам впервые удалось перейти от табличного способа задания функции к формульному!

Построение таблицы истинности по совершенной ДНФ очевидно: степени переменных конъюнкций задают наборы, на которых функция равна 1. Это гораздо проще, чем построение таблицы истинности по совершенной ДНФ как по произвольной формуле.

7.4. Совершенная конъюнктивная нормальная форма

Пусть задана булева функция f(x1; : : : ; xn). Представим ее инверсию f(x1; : : : ; xn) совершенной ДНФ (учтем, что Mf1 = Mf0):

 

 

_

 

 

c1

cn

1

_

c1

cn

 

 

f(x1; : : : ; xn) =

 

 

x1 : : : xn =

f

: : : xn

 

 

 

 

 

x1

 

c1

:::cn

M

1

 

 

c :::cn

M0

 

 

 

2

 

f

 

 

2

 

 

Проинвертируем обе части этого равенства:

f(x1; : : : ; xn) = _ xc11 : : : xcnn

c1:::cn2Mf0

По законам двойного отрицания и де Моргана имеем:

f(x1; : : : ; xn) = c1

 

 

x1c1 : : : xncn

= c1

 

 

 

x1c1

_ : : : _

 

:

:::cn

M0

:::cn

M0

xncn

 

^

f

^

f

 

 

 

 

 

 

2

 

 

 

2

 

 

 

 

 

 

Заметим, что xc = xc (x0 = x = x = x1 = x0, è x1 = x = x0 = x1). Ó÷è- тывая это, получаем следующее представление функции f(x1; : : : ; xn):

 

^ x

1c

1 _ : : : _ x

 

 

f(x1; : : : ; xn) =

ncn :

c1:::cn2Mf0

42

Определение. Совершенная конъюнктивная нормальная форма

функции f(x1; : : : ; xn) (СовКНФf ) это формула вида

 

 

 

x

 

1 _ : : : _ x

 

 

 

 

 

1c

c1

:::cn

M0

ncn :

 

^

f

 

 

 

 

 

 

2

 

 

 

 

 

 

Из данной формулы с очевидностью следует утверждение.

Утверждение о единственности совершенной КНФ. Любая булева функция, кроме константы 1, представима cовершенной конъюнктивной нормальной формой, единственной для данной функции.

Алгоритм построения совершенной КНФ по таблице истинности (вытекает из определения совершенной КНФ).

Начало: задана таблица истинности булевой функции.

Шаг 1 : в векторе-столбце значений функции выбирается очередной ноль. Если нули исчерпаны, то идем на конец.

Шаг 2 : по набору значений аргументов строки формируется дизъюнкция всех аргументов с соблюдением правила: если i-я компонента

набора равна 0, то i-я переменная входит в дизъюнкцию в степени 1

(без инверсии), иначе в степени 0 (с инверсией). Дизъюнкция добавляется в формулу как очередной сомножитель. Идем на шаг 1.

Конец.

Пример. Функция та же: f(x1; x2; x3) = x2 x1x3 ! x2x3.

x1 x2 x3

f(x1; x2; x3)

 

 

 

 

 

0

0

0

1

 

 

 

 

 

0

0

1

1

x11 _ x20 _ x31 = x1 _

 

 

0

1

0

0

 

2 _ x3

x

0

1

1

1

x10 _ x21 _ x31 =

 

 

 

 

1

0

0

0

 

1 _ x2 _ x3

x

1

0

1

1

 

 

 

 

 

1

1

0

1

 

 

 

 

 

1

1

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

СовКНФf = (x1 _ x2 _ x3)(x1 _ x2 _ x3):

Построение таблицы истинности по совершенной КНФ, так же как и по совершенной ДНФ, выполняется значительно проще, чем по произвольной формуле, так как инверсии степеней переменных дизъюнкций задают наборы, на которых функция равна 0.

43

7.5. Упражнения

Упр.1. Выполнить разложения функций f1 f4 по указанным под- множествам переменных двумя способами (последовательным применением разложения Шеннона и непосредственно по формуле разложения функции k по переменным):

f1(x; y; z; t) = (x _ y z t)(y ! x y z _ (x _ z)) ïî fx; tg; fy; zg,

f2(x; y; z; t) = (x ! y z)(y t z) ! x

t

_

 

ïî fxg; fy; z; tg,

x

f3(x; y; z) = x y z ! (x z _ (x y))

ïî fxg; fx; y; zg,

f4(x; y; z; t) = y z x t=(x ! z t) (x _ y _ z) по fx; yg; fz; tg. Показать равносильность формул, полученных двумя способами.

Упр.2. Построить совершенные ДНФ и совершенные КНФ булевых функций 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

0

1

1

0

0

1

0

1

1

0

0

0

1

1

1

0

1

1

0

0

1

1

1

1

1

1

1

0

0

1

0

1

0

0

1

0

1

1

0

1

1

1

1

1

0

0

0

1

1

1

0

0

1

1

0

1

1

1

0

1

1

1

1

0

1

1

1

1

0

1

 

 

 

 

 

 

 

 

 

 

 

8. Дизъюнктивная нормальная форма

8.1. Элементарная конъюнкция и ДНФ

Пусть имеем множество переменных X = fx1; x2; : : : ; xng.

Определение. Элементарной конъюнкцией назовем конъюнкцию переменных множества X, в которую каждая переменная входит не

более одного раза (с инверсией или без инверсии).

Примеры. Пусть X = fx1; x2; x3; x4g, тогда x1x2x4, x1x3, x1, 1 являются элементарными конъюнкциями, а x1x1x2 è x1x2x2x4 нет. Определение. Число переменных, образующих элементарную конъ-

юнкцию, назовем ее рангом.

Примеры. Ранги элементарных конъюнкций x1x3x4 и 1 равны òðåì è íóëþ.

44

Определение. Полной конъюнкцией назовем элементарную конъюнкцию, состоящую из всех n переменных множества X, то есть конъ-

юнкцию ранга n.

Пример. При n = 4 конъюнкция x1x2x3x4 полная. Определение. Две конъюнкции называются ортогональными по

переменной xi, если эта переменная входит в одну конъюнкцию с инверсией, а в другую без инверсии.

Пример. Конъюнкции x1x2x3 è x1x3x4 ортогональны по переменным x1 è x3.

Определение. Две конъюнкции называются смежными, если они ортогональны по одной и только одной переменной xi (принято также говорить смежны по переменной xi ).

Пример. Конъюнкции x1x2x3 è x1x3x4 являются смежными по переменной x3 (ортогональны только по x3).

Определение. Две конъюнкции называются соседними, если они ортогональны по одной и только одной переменной xi и совпадают по остальным (принято также говорить соседние по переменной xi ).

Пример. Конъюнкции x1x2x3 è x1x2x3 соседние по переменной x3 (ортогональны только по x3 и совпадают по x1 è x2).

Законы склеивания и обобщенного склеивания применяются, как нетрудно видеть, к соседним и смежным конъюнкциям соответственно. Поэтому их также называют законами склеивания соседних конъюнкций и обобщенного склеивания смежных конъюкнций и иногда добавляют, по какой именно переменной.

Примеры. Конъюнкции x1x2x3 è x1x2x3 соседние по переменной x3, значит, к ним применим закон склеивания соседних конъюнкций

x1x2x3 _ x1x2x3 = x1x2:

Конъюнкции x1x2x3 è x1x3x4 смежные по переменной x3, значит, к ним применим закон обобщенного склеивания смежных конъюнкций

x1x2x3 _ x1x3x4 = x1x2x3 _ x1x3x4 _ x1x2x4:

Определение. Дизъюнктивной нормальной формой (ДНФ) булевой функции f(x1; : : : ; xn) назовем дизъюнкцию различных элементарных конъюнкций, задающую функцию f(x1; : : : ; xn).

Пример. x1x2 _ x1x2x3 _ x1x3x4 = ÄÍÔ.

45

Определение. Длиной ДНФ назовем число ее конъюнкций, а рангом ДНФ сумму рангов конъюнкций.

Пример. Длина ДНФ из предыдущего примера равна трем, а рангвосьми.

Будем применять обозначение ДНФ f , если захотим отметить, что ДНФ представляет булеву функцию f(x1; : : : ; xn).

Очевидно, что совершенная ДНФ является частным случаем ДНФ, все конъюнкции которой полные. Любая ДНФ может быть преобразована в совершенную ДНФ с использованием основных равносильностей законов склеивания и поглощения конъюнкций.

8.2. Преобразование ДНФ в совершенную ДНФ

Алгоритм преобразования ДНФ в совершенную ДНФ (основан на законах склеивания y = xy _ xy и идемпотентности x _ x = x).

Начало: задана ДНФf функции f(x1; : : : ; xn).

Шаг 1 : рассматриваем очередную конъюнкцию K исходной ДНФf . Если все конъюнкции исчерпаны, идем на конец.

Шаг 2 : если конъюнкция K не является полной, то выбираем пере-

менную xi, которая не входит в K, и по закону склеивания заменяем K на дизъюнкцию двух конъюнкций: K = Kxi _ Kxi (в таком примене- нии будем называть его законом расклеивания соседних конъюнкций ). Если полученные слагаемые не являются полными конюнкциями, то применяем к каждой из них закон расклеивания, пока не получим из конъюнкции K дизъюнкцию полных конъюнкций. Идем на шаг 1.

Конец: на основании закона идемпотентности приводим подобныеполучаем СовДНФ функции f(x1; : : : ; xn).

Пример. Пусть ДНФf = x1x2 _ x1x2 _ x3, n = 3. Применим закон расклеивания к каждой конъюнкции:

x1x2 = x1x2x3 _ x1x2x3, x1x2 = x1x2x3 _ x1x2x3,

x3 = x1x3 _ x1x3 = x1x2x3 _ x1x2x3 _ x1x2x3 _ x1x2x3.

В последней строке подчеркнуты конъюнкции, совпадающие с полу- ченными ранее. По закону идемпотентности они не войдут в совершенную ДНФ, которая примет вид

СовДНФf = x1x2x3 _ x1x2x3 _ x1x2x3 _ x1x2x3 _ x1x2x3 _ x1x2x3:

46

8.3. Элементарная конъюнкция и интервал

Утверждение о конъюнкции и интервале. Каждая элементарная конъюнкция K ранга r может быть задана интервалом IK ранга r. Каждый интервал ранга r задает элементарную конъюнк-

цию ранга r.

Доказательство (конструктивное).

Рассмотрим произвольную конъюнкцию K ранга r: K = xci11 : : : xcirr : Построим характеристическое множество MK1 .

MK1 = na1 : : : an : aci11 : : : acirr = 1o = na1 : : : an : aci11 = 1; : : : ; acirr = 1o :

Следовательно, для компонент вектора a1 : : : an 2 MK1 с номерами ij, j = 1; : : : ; r, должно выполняться условие acijj = 1, ÷òî, êàê áûëî ïî-

казано ранее, эквивалентно условию aij = cj. Остальные компоненты

могут принимать любые значения, так как соответствующие им переменные в конъюнкцию не входят. Это означает, что множество MK1 ÿâ-

ляется интервалом, у которого компоненты с номерами ij, j = 1; : : : ; r, то есть r компонент, являются внешними, а остальные n r компонент

внутренними.

Рассмотрим теперь произвольный интервал I ранга r. Пусть его компоненты с номерами i1; : : : ; ir являются внешними и равны со-

ответственно c1; : : : ; cr. Если рассмотреть интервал I как характеристическое множество Mf1 булевой функции f(x1; : : : ; xn), то из определения интервала следует, что f(x1; : : : ; xn) принимает на наборе

a1; : : : ; an значение 1, если и только если ai1 = c1, : : :, air = cr, òî åñòü если и только если aci11 = 1, : : :, acirr = 1. Отсюдаследует, что функция

f(x1; : : : ; xn) является конъюнкцией

f(x1; : : : ; xn) = xci11 : : : xcirr :

Таким образом, интервал IK, задающий элементарную конъюнкцию K ранга r, имеет следующий вид:

если переменная xi не входит в K, то i-я компонента интервала IK является внутренней;

иначе i-я компонента является внешней, она равна 0, если пе-

ременная xi входит в конъюнкцию K с инверсией, и равна 1, если переменная xi входит в K без инверсии.

47

Примеры. Пусть X = fx1; x2; x3; x4g. Рассмотрим конъюнкции разных рангов и их задание интервалами (здесь и далее конъюнкции и задающему ее интервалу будем присваивать один и òîò же номер).

 

 

 

 

 

 

 

 

 

 

 

4

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

I2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

K1 = x1x2x3x4; I1 = 1 1 1 0;

 

 

 

 

 

 

 

 

 

 

 

I1

K2 = x3x4;

 

I2 = 0 1:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

Конъюнкция K3 = 1 задается интервалом I3 =

 

, òî åñòü âñåì

булевым пространством B4. Результаты можно

 

 

 

 

 

 

 

 

 

 

 

 

 

проверить построени-

ем характеристических множеств M1 конъюнкций. Так множество M1

конъюнкции K2 = x3x4 состоит из всех векторов, в которых третья

компонента принимает значение 0, четвертая 1, а значения остальных компонент произвольны, значит M1 = 0 1.

Это взаимно-однозначное соответствие между элементарной конъюнкцией и интервалом позволяет рассматривать, например, закон склеивания соседних конъюнкций xy _ xy = y и операцию склеивания

соседних интервалов Ixy [ Ixy = Iy как один и тот же закон, сформулированный на двух разных языках.

8.4. ДНФ и достаточное множество интервалов

Рассмотрим ДНФf = K1 _ : : : _ Km. По определению дизъюнкции, булева функция f(x1; : : : ; xn) принимает значение 1 тогда и только тогда, когда хотя бы одна из конъюнкций K1; : : : ; Km принимает зна- чение 1. Это означает, что соответствующие интервалы I1; : : : ; Im îá- разуют множество, достаточное для функции f(x1; : : : ; xn). Таким образом и в этом случае можно пользоваться двумя параллельными языками: языком ДНФ и языком интервалов. Последний оказывается наиболее наглядным при задании булевых функций матрицами Грея.

8.4.1. Построение матрицы Грея по ДНФ

Исходя из предыдущих рассуждений, построение матрицы Грея булевой функции f(x1; : : : ; xn) ïî åå ÄÍÔf = K1 _ : : : _ Km сводится к выделению на матрице интервалов I1; : : : ; Im, задающих элементар- ные конъюнкции K1; : : : ; Km.

48

Пример. Построим матрицу Грея булевой функции f(a; b; c; d; e)

ïî åå ÄÍÔf = a c _ a b d _ c d e:

 

 

 

 

 

K1

 

K2 K3

 

 

 

 

 

 

 

 

 

c

 

 

 

 

 

 

 

e

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

I1

 

 

 

 

 

 

 

-

a

 

 

 

@R

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

@

 

 

 

 

 

 

 

I3

 

 

 

I2

 

 

 

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

Закон склеивания:

 

 

 

 

- x y

=

 

- y

 

 

 

 

 

 

 

 

y

 

 

 

 

y

 

 

 

_

 

 

 

 

 

x

 

 

 

 

 

x

 

 

 

x y

 

x y = y

 

 

 

 

 

- x y

 

 

- y

Закон поглощения:

 

 

 

- y

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

 

y

 

 

x y

_

y = y

 

 

 

 

 

-x y =

 

 

 

 

 

 

 

 

 

 

 

x

 

 

y

 

x

 

 

y

 

 

 

 

 

 

 

 

 

 

 

 

 

склеивания:

 

 

 

 

 

- x z

=

 

 

- x z

Закон обобщенного

 

 

z

 

 

 

z

 

 

 

 

 

 

 

x

 

 

 

 

 

x

 

 

 

x y

 

x z = x y

 

x z

 

 

 

 

 

- x y

 

 

y z

_

_

_

y z

 

 

 

 

 

 

 

- x y

 

 

 

 

 

 

 

 

 

 

 

 

R@

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

@

 

 

8.4.2. Построение ДНФ по матрице Грея

Пусть булева функция f(x1; : : : ; xn) задана матрицей Грея. Выделим на ней достаточное множество интервалов. Запишем дизъюнкцию

конъюнкций, заданных этими интервалами получим ДНФ f . Пример. Рассмотрим матрицу Грея булевой функции.

I1

 

 

d

c

 

 

- I3

HH

 

 

HY

 

 

e

 

 

 

 

 

-

 

 

I4

 

 

 

 

- I2

b

 

a

 

 

 

 

ÄÍÔf = a c d e _ a b c e _ a b c d e _ a b:

K1

K2

K3

K4

49

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

Пример. Рассмотрим функцию из предыдущего примера.

I1

 

 

 

 

d

c

 

 

 

 

HH

 

 

 

- I3

 

 

 

YH

 

 

 

 

 

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

- I2

 

 

 

b

 

@

 

 

 

 

 

 

a

R@

I4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ÄÍÔ0 = c d e

_

a c e

_

a b c d e

_

a b:

 

 

f

K1

K2

K3

K4

 

 

 

 

 

 

 

Заметим, что ДНФ0

f проще, чем ДНФf , так как при одинаковой

длине ДНФ0

f имеет меньший ранг (13 вместо 15).

8.5. Построение ДНФ по формуле

Пусть булева функция f(x1; : : : ; xn) задана формулой. Применим к ней разложение Шеннона по любой переменной (наиболее предпочтительным, как правило, является выбор чаще встречающейся переменной, так как появление большого числа констант приводит к значи- тельному упрощению формул). Если коэффициенты полученной формулы не являются ДНФ, то применим разложение Шеннона к коэффициентам, и так далее до тех пор, пока все очередные коэффициенты

не превратятся в ДНФ, затем раскроем скобки получим ДНФ f . Пример. Рассмотрим функцию трех переменных

f(x; y; z) = (x ! yz)=(x z):

Разложим ее по переменной x (она встречается в формуле чаще y и так же часто как z):

f(x; y; z) = x [(1 ! yz)=(1 z)] _ x [(0 ! yz)=(0 z)] =

[ упростим выражение, используя свойства 0 и 1 для дизъюнкции с исключением (0 a = a, 1 a = a), для штриха Шеффера (1=a = a)

50

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