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

§ 2.3. Минимизация дизъюнктивных нормальных форм

Элементарная конъюнкция, ранг элементарной конъюнкции. Дизъюнктивная нормальная форма (ДНФ), сложность ДНФ. Минимальная ДНФ. Импликанта, простая импликанта. Сокращенная ДНФ. Тупиковая ДНФ. Представление булевой функции в виде сокращенной, тупиковой и минимальной ДНФ.

Базовые понятия и утверждения

1. Постановка задачи минимизации ДНФ. Пусть задан алфавит переменных X x1, x2 ,..., xn .

Определение. Формулу

вида K x 1

x 2

... x r , где

для

 

i1

i2

ir

 

любого i i равно 0 или 1

и все переменные разные ( i i ,

если

), называют элементарной конъюнкцией ранга r над множеством

X.

Константу 1 считают элементарной конъюнкцией ранга 0. Элементарные конъюнкции, отличающиеся порядком следования

переменных, задают одну функцию, и мы их различать не будем.

На пр им ер ,

пусть

 

задан

 

алфавит

переменных

X x1 , x2 , x3 , x4 .

Тогда

формула

x1 x2 x4

- элементарная

конъюнкция ранга 3, а формула

x1 x4

-

элементарная конъюнкция

ранга 2 над множеством

X .

Формула

x1 x1 x2 x3 , напротив,

элементарной конъюнкцией не является, так как в этой формуле дважды упоминается переменная x1 .

Пр и м ер 1 . Перечислить все элементарные конъюнкции над множеством x1 , x2 : 1, x1 , x1 , x2 , x2 , x1 x2 , x1 x2 , x1 x2 , x1 x2 .

Вообще, используя алфавит из n переменных X x1, x2 ,..., xn ,

можно составить 3n элементарных конъюнкций. Действительно, произвольную элементарную конъюнкцию можно составить за n этапов. На первом этапе принять решение относительно переменной x1

68

(есть три возможности - включить ее в конъюнкцию саму по себе, включить ее отрицание или не включать ее вовсе), на втором - принять

решение относительно переменной x2 (вновь имеем три возможности)

и т.д. Действуя описанным образом, мы составим 3 3 ... 3 3n

n

элементарных конъюнкций (в их число входит и константа 1 - сопоставим ее случаю, когда ни одна из переменных в конъюнкцию не включена).

Пр и м ер 2 . Перечислить все элементарные конъюнкции ранга 3 над множеством x1 , x2 , x3 , x4 , обращающиеся в 1 на наборе

(0,1, 0, 0) .

Произвольная элементарная конъюнкция равна 1 в том и только

втом случае, когда все образующие ее множители одновременно равны 1.

Значит, переменная x2 может войти в элементарную конъюнкцию, обращающуюся в 1 на наборе (0,1, 0, 0) , только без отрицания, а

остальные переменные - обязательно с отрицанием. Таким образом, перебрав все варианты выбора трех переменных из множества

x1 , x2 , x3 , x4 , получим четыре конъюнкции: x1x2 x3 , x1x2 x4 , x1x3 x4 ,

x2 x3 x4 . ►

Упр а жн е н ие 2 . 1 7 . Перечислить все элементарные конъюнкции над множеством x1 , x2 , x3 , обращающиеся в единицу на наборе

(1, 0, 0) .

Определение. Формулу

вида D K1

K2 ... Ks ( Ki K j

при i j ), где через Ki

(i 1, 2,..., s)

обозначены элементарные

конъюнкции над множеством X, называют дизъюнктивной нормальной формой над множеством X.

Дизъюнкции, отличающиеся только порядком следования конъюнкций, мы различать не будем.

Сумма рангов конъюнкций, входящих в ДНФ, называется

сложностью ДНФ.

69

На пр им ер , D1 x1 x2

x1 x2 x3

x1 -

ДНФ сложности 6;

D2 x1 x1 x2 x3 - ДНФ

сложности

4; D3

x1 x2 x3 - ДНФ

сложности 3 над множеством X x1 , x2 , x3 .

 

Заметим, что формулы D1, D2 , D3 равносильны и, следовательно,

реализуют одну и ту же функцию f x1 , x2 , x3 . Таким образом, одна и

та же функция может быть задана несколькими ДНФ, причем эти ДНФ могут иметь различную сложность.

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

минимальной ДНФ данной функции.

Так, для

функции

f x1 , x2 , x3 , реализуемой рассмотренными

выше ДНФ

D1 , D2 ,

D3 , дизъюнктивная нормальная форма

D3 x1 x2 x3 является минимальной.

Задача минимизации ДНФ формулируется так: для всякой булевой функции f x1, x2 ,..., xn найти представление в виде минимальной

ДНФ.

Задачу минимизации ДНФ можно решить методом полного перебора, организовав его следующим образом.

1. Построить все ДНФ над множеством X x1, x2 ,..., xn .

Выше было показано, что число различных элементарных

конъюнкций над алфавитом из n переменных равно 3n . При построении произвольной ДНФ каждую из этих конъюнкций можно в нее либо включить, либо не включить. Значит, всего можно составить

23n 1 ДНФ (вычтя из 23n единицу, мы учли, что если не включить в строящийся объект ни одну из элементарных конъюнкций, то ДНФ не образуется).

2. Отобрать из построенных ДНФ те, которые задают функцию f .

Заметим, что для всякой булевой функции f x1, x2 ,..., xn ,

тождественно отличной от нуля, есть, по крайней мере, одна представляющая ее ДНФ - это СДНФ.

70

3. Для каждой отобранной ДНФ определить сложность; ДНФ наименьшей сложности и есть искомые минимальные ДНФ функции f .

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

Вэтом параграфе мы познакомимся с одним из них.

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

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

функции f x1, x2 ,..., xn , если на любом наборе 1 , 2 ,..., n , на котором эта элементарная конъюнкция равна 1, функция f также

обращается в 1.

Заметим, что любая элементарная конъюнкция, входящая в СДНФ функции, является импликантой этой функции.

Определение. Будем называть импликанту функции f простой, если элементарная конъюнкция, получающаяся из нее удалением любой из букв, уже не является импликантой f .

Пр и м ер 3 . Перечислить все простые импликанты функции

f(x, y) x y .

Имеем девять элементарных конъюнкций над переменными

x, y : 1, x , x , y , y , xy , xy , xy , x y . Относительно каждой из них

выясним, является ли она импликантой, и если это так, то простая ли она.

Для удобства дальнейших

рассуждений перечислим значения

функции f

на всех

наборах

значений

переменных:

f (0, 0) 1,

f (0,1) 1,

f (1, 0) 0 ,

f (1,1) 1 .

 

 

1 импликантой не является, так как

обращается в

1 на всех

наборах, в то время как

f (1, 0) 0 .

 

 

71

x не является импликантой f , так как на наборе 1, 0 она обращается в 1, в то время как f (1,0) 0 .

x обращается в 1 на наборах 0, 0 , 0,1 , и на каждом из этих наборов f также равна 1, следовательно, x - импликанта f . Эта

импликанта простая, так как конъюнкция 1, полученная из нее путем удаления x , импликантой не является.

y обращается в 1 на наборах 0,1 , 1,1 , и на каждом из этих наборов f также равна 1, следовательно, y - импликанта f . Эта импликанта простая, так как конъюнкция 1, полученная из нее путем

удаления

y , импликантой не является.

 

 

 

 

 

 

y

обращается

в 1

на

наборах

0, 0 и

1, 0 ,

а

f (1, 0) 0 ,

следовательно, y

не является импликантой

f .

 

 

 

 

xy

обращается

в

1

на

 

одном

наборе

1,1 ,

и

f (1,1) 1 ,

следовательно, xy - импликанта

f

. Однако простой эта импликанта не

является,

так как конъюнкция

y ,

полученная из нее путем удаления

буквы x , является импликантой.

 

 

 

 

 

 

 

 

xy

обращается

в

1

на

 

одном

наборе

0,1

и

f (0,1) 1,

следовательно, xy - импликанта

f

. Однако простой эта импликанта не

является,

поскольку конъюнкция

x , полученная из нее путем удаления

буквы

y , является импликантой.

 

 

 

 

 

 

 

 

xy

обращается в 1 на наборе 1, 0 , а

f (1, 0) 0 ,

следовательно,

xy

не является импликантой

f .

 

 

 

 

 

 

 

 

x y

обращается в 1 на наборе 0, 0 ,

f (0, 0) 1,

следовательно,

x y

импликанта

f .

Однако простой эта импликанта не является, так

как конъюнкция

x ,

полученная из нее путем удаления

y , является

импликантой.

 

 

 

 

 

 

 

 

 

 

 

 

 

Таким образом,

функция

f

 

имеет две простые импликанты: x

и y . ►

 

 

 

 

 

 

 

 

 

 

 

 

 

 

72

Упр а жн е н ие 2 . 1 8 . Перечислить все простые импликанты функции f (x, y) (1011) .

Определение. Дизъюнкция всех простых импликант функции называется сокращенной ДНФ функции.

На пр им ер , для функции f (x, y) x y (см. пример 3) сокращенная ДНФ имеет вид x y .

Из определения сокращенной ДНФ непосредственно следует, что сокращенная ДНФ у функции единственна.

Справедливо следующее утверждение: сокращенная ДНФ функции f x1, x2 ,..., xn задает функцию f x1, x2 ,..., xn

(доказательство приведено во второй части параграфа).

Более того, оказывается, что почти всегда можно реализовать функцию дизъюнкцией лишь некоторых (не всех!) простых импликант. В связи с этим уместно ввести понятие тупиковой ДНФ.

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

Имеет место следующий теоретический факт: минимальная ДНФ функции является тупиковой ДНФ (доказательство приведено во второй части параграфа).

3. Построение минимальных ДНФ. Рассмотрим алгоритм построения минимальных ДНФ функции, исходя из СДНФ. Обоснование данного алгоритма можно найти в [1].

Алгоритм состоит из трех этапов: сначала получают сокращенную ДНФ, далее строят все тупиковые ДНФ и, наконец, из тупиковых ДНФ выделяют минимальные.

1 - й эт ап : получение сокращенной ДНФ функции.

Сокращенную ДНФ можно получить из СДНФ, используя алгоритм,

называемый м е то до м К ва й на .

 

 

В

алгоритме

используются

следующие

равносильные

преобразования:

а) операция неполного склеивания, состоящая в замене выражения

Kx Kx на Kx Kx K ;

б) операция поглощения, состоящая в замене выражения

K1K2 K1 на K1 ;

73

в) операция удаления дублируемых членов, состоящая в замене выражения K K на K .

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

операцию неполного

склеивания ( Kx Kx

заменяем на

Kx Kx K ).

Затем

с помощью операции

поглощения

K Kx K

удаляем те конъюнкции ранга n, которые возможно

удалить таким образом.

Убираем дублируемые члены

K K K .

Полученную в итоге ДНФ обозначаем D1 .

k шаг. К началу этого шага нами построена ДНФ Dk . К каждой паре конъюнкций ранга n k этой ДНФ применяем операции

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

Dk 1 . Если Dk 1

совпадает с Dk , то Dk

- искомая сокращенная ДНФ.

В противном случае, увеличив значение k

на единицу, повторяем k

шаг.

 

 

 

 

В качестве

 

пр им ер а п остроим методом Квайна сокращенную

ДНФ функции g (10011011) :

 

g x1, x2 , x3

СДНФ

 

 

 

x1x2 x3 x1x2 x3 x1x2 x3 x1x2 x3 x1x2 x3

x1x2 x3 x1x2 x3 x1x2 x3 x1x2 x3 x1x2 x3 x2 x3 x2 x3x1x3 x1x2 x2 x3 x2 x3 x1x3 x1x2 .

2 - й эт ап : п остроение тупиковых ДНФ.

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

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

Пусть f - произвольная булева функция. Назовем носителем функции множество булевых векторов, на которых функция f принимает значение 1. Пусть булевы векторы 1, 2 ,..., s - элементы

74

носителя функции f , K1, K2 ,..., Km - совокупность простых

импликант функции. Составим таблицу, строки которой соответствуют простым импликантам функции, столбцы - элементам носителя, а в

ячейках на пересечении строки Ki и столбца j проставлено число

ij , равное 1, если импликанта

Ki на наборе j обращается в

единицу, и равное 0 в противном случае (табл. 2.20). Назовем эту таблицу импликантной.

 

 

По импликантной таблице

 

 

 

 

Таблица 2.20

составим

 

 

формулу

вида

 

 

 

 

 

 

 

 

 

 

1

 

...

j

s

s

 

 

 

 

 

 

 

 

 

 

 

 

 

K

 

 

 

 

 

 

 

 

 

1 j

 

 

 

i

, т.е. каждому

K1

11

 

 

 

1s

i: 1

 

 

 

 

 

j 1

ij

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

булеву

вектору

j

(1 j n )

 

Ki

i1

 

ij

is

сопоставим

 

дизъюнкцию

тех

 

 

 

импликант, значение которых на

 

Km

m1

 

mj

ms

j

 

равно

 

1,

и

запишем

 

 

 

 

 

 

 

 

 

 

конъюнкцию всех выписанных дизъюнкций.

 

 

 

 

 

 

 

Составленную таким образом формулу преобразуем, используя

законы

дистрибутивности, в ДНФ

над

алфавитом

переменных

K1, K2 ,..., Km . Затем полученное выражение упростим, применив,

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

различных конъюнкций

вида Ki

Ki

... Ki

.

По каждой

такой

 

1

2

 

 

p

 

 

 

конъюнкции выпишем

дизъюнкцию

Ki

Ki

... Ki

.

Все

 

 

 

1

 

2

 

p

 

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

В качестве пр им ер а найдем с помощью приведенного выше алгоритма тупиковые ДНФ функции g (10011011) . Ранее мы нашли

сокращенную ДНФ этой функции, следовательно, можем выписать

совокупность

всех простых импликант функции: K1 x2 x3 ,

K2 x2 x3 ,

K3

x1x3 ,

K4 x1x2 . Составим импликантную таблицу

(табл. 2.21).

 

 

 

 

 

 

75

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 2.21

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

000

011

 

100

 

110

 

111

 

 

 

 

 

 

 

 

K1 x2 x3

 

1

0

 

 

1

 

 

0

 

 

0

 

 

 

 

 

 

 

 

K2 x2 x3

 

0

1

 

 

0

 

 

0

 

 

1

 

 

 

 

 

 

 

 

K3 x1x3

 

0

0

 

 

1

 

 

1

 

 

0

 

 

 

 

 

 

 

 

K4 x1x2

 

0

0

 

 

0

 

 

1

 

 

1

 

 

 

 

Тогда

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

K

 

K K

 

K

K

 

K

 

K

 

K

 

K

 

 

 

 

i

 

 

 

 

 

 

i: σ

1

1

2

1

 

3

 

 

3

 

 

4

 

 

2

 

 

4

 

j 1

ij

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

K1K2 K2 K3 K4 K4 K1K2 K3 K1K2 K4 .

Имеем две тупиковые ДНФ, каждая из которых задает функцию g :

K1 K2 K3 x2 x3 x2 x3 x1x3

и

K1 K2 K4 x2 x3 x2 x3 x1x2 .

3 - й эт ап : построение минимальных ДНФ. Минимальные ДНФ функции являются тупиковыми ДНФ. Поэтому, чтобы их найти, достаточно вычислить сложность всех тупиковых ДНФ функции и отобрать из них ДНФ наименьшей сложности (таких ДНФ может оказаться несколько). Они и будут минимальными ДНФ.

 

Таблица 2.22

На пр им ер , для функции g (10011011)

 

обе тупиковые ДНФ имеют сложность, равную 6,

 

 

 

 

x1

x2

x3

f

и, следовательно, обе являются минимальными.

0

0

0

1

Пр и м ер 4 . Построить минимальные

0

0

1

1

ДНФ функции:

0

1

0

1

а) f

(11101010) ;

0

1

1

0

б) h (1000100110001011) .

1

0

0

1

а) Зададим функции таблицей

1

0

1

0

(табл. 2.22).

1

1

0

1

1 - й э та п . Строим сокращенную ДНФ

1

1

1

0

функции:

 

76

f x1, x2 , x3

СДНФ

 

 

 

 

 

 

x1x2 x3

x1x2 x3

x1x2 x3

x1x2 x3

x1x2 x3

 

x1x2 x3 x1x2 x3 x1x2 x3 x1x2 x3 x1x2 x3 x1x2 x1x3 x2 x3

x2 x3 x1x3 x1x2 x1x3 x2 x3 x2 x3 x1x3

x1x2 x1x3 x2 x3 x2 x3 x1x3 x3 x3 x1x2 x3 .

2 - й и 3 - й этапы для данной функции можно опустить. Действительно, нетрудно убедиться, что при опускании любой буквы в

сокращенной ДНФ, получается формула, функцию

f

не

представляющая. Следовательно, сокращенная ДНФ

x1x2 x3

функции

f является также тупиковой и минимальной.

 

 

 

б)

Зададим

функции таблицей

 

 

 

 

Таблица 2.23

(табл. 2.23).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 - й эт а п . Построим сокращенную

 

x1

 

x2

x3

x4

f

ДНФ функции:

 

 

 

0

 

0

0

0

1

h x1x2 x3 x4 x1x2 x3 x4 x1x2 x3 x4

 

 

 

0

 

0

0

1

0

 

1

2

3

 

0

 

0

1

0

0

x1x2 x3 x4 x1x2 x3 x4 x1x2 x3 x4

 

0

 

0

1

1

0

 

0

 

1

0

0

1

4

5

6

 

 

 

0

 

1

0

1

0

 

I

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1x2 x3 x4 x1x2 x3 x4 x1x2 x3 x4

 

0

 

1

1

0

0

 

0

 

1

1

1

1

 

7

1

2

 

 

 

 

1

 

0

0

0

1

 

 

 

 

 

 

x1x2 x3 x4 x1x2 x3 x4 x1x2 x3 x4

 

1

 

0

0

1

0

 

1

 

0

1

0

0

3

4

5

 

1

 

0

1

1

0

x1x2 x3 x4 x1x2 x3 x4 x1x3 x4

 

1

 

1

0

0

1

 

6

7

1,2

 

1

 

1

0

1

0

 

 

1

 

1

1

0

1

x2 x3 x4 x2 x3 x4 x2 x3 x4

 

 

 

1

 

1

1

1

1

 

1,4

2,5

3,7

 

 

 

 

 

 

 

 

 

 

II

 

 

 

 

 

 

 

x1x3 x4 x1x2 x4 x1x2 x3 x1x3 x4 x2 x3 x4

x2 x3 x4 x2 x3 x4

4,5

5,6

6,7

8

9

10

 

11

 

77

Соседние файлы в папке Лекции Олейник PDF