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

DisMathTPU_new

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

Упр. 3. Получиòü îäíó êðатчайшую ДÍÔ áóëåâых функций:

f1(a; b; c; d) = a b d _ a b c d _ b d _ a b c d _ a c d _ a b c _ a c d;

f2(a; b; c; d) = a b c d _ a b c _ a b d _ a c d _ c d _ b c d;

f3(a; b; c; d) = a c d _ a b d _ a b c _ c d _ b c d _ a b c d:

11.3. Приближенная кратчайшая ДНФ

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

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

Заметим, что любую ДНФ (в частности, безызбыточную) можно считать приближенной кратчайшей, так как в определении не уточ- няется, что значит достаточно близка по длине.

Пример. Найдем две приближенные кратчайшие ДНФ одной и той же булåâîé функции.

 

d c

 

 

 

 

 

 

 

 

 

 

 

 

 

ПриКратДНФ0

= a c d

_

b c d

_

b d

_

a b c;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

a

d c

ПриКратДНФ

 

 

_

 

_

 

 

 

 

 

 

00

 

 

 

 

 

 

 

 

 

= a b c

 

b d

 

 

a c d:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

a

Вторая из найденных ДНФ оказывается к тому же кратчайшей.

91

11.3.1. Алгоритм Закревского

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

Алгоритм Закревского (ориентирован на матричное представление функции и визуальный способ решения).

Начало. Задана матрица Грея булевой функции.

Шаг 1. Для каждой точки вычислим цену количество соседних ей точек. Все точки будем считать неотмеченными.

Шаг 2. Рассмотрим точку минимальной цены среди неотмеченных и найдем все содержащие ее максимальные интервалы. Выберем интервал, содержащий наибольшее число неотмеченных точек. Если таких интервалов несколько, выберем интервал наибольшей мощности.

Шаг 3. Включим выбранный интервал в решение и отметим на матрице его точки. Если не все точки отмечены, то идем на шаг 2.

Конец. Включенные в решение интервалы задают ПриКратДНФ. Пример. Рассмотрим функцию из последнего примера.

Начало. Точки обозначаем греческими буквами (левая матрица). Шаг 1. Âû÷èсляем цены точåê (ïравая матрица).

 

 

 

 

 

 

c

 

 

 

 

 

 

c

 

 

 

 

 

 

d

 

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

2

 

 

 

 

 

 

 

 

 

 

 

2

3

 

 

 

 

 

"

 

 

 

 

 

 

2

3

2

 

 

b

 

 

 

 

 

 

b

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

a

 

 

 

Шаги 2, 3. Выбираем точку (минимальной цены 2). Она входит

в два максимальных интервала (левая матрица). Они содержат по две неотмеченные точки и имеют одинаковые мощности, включаем в решение лþáîé из них и отмечаåì åго точки (правая матрица).

 

d c

I1

 

2 d c

 

 

 

 

 

 

2

 

 

"

 

2

3 2

b

 

b

 

2

 

 

 

a

 

a

 

 

Поскольку не все точки отмечены, идем на шаг 2.

92

Шаги 2, 3. Выбираем неотмеченную точку (цены 2). Она вхо-

дит в два максимальных интервала (с одной и двумя неотмеченными точками), поэтому включаем в решение интервал I2 с двумя неотме- ченными точками и отмечаем их. Поскольку не все точки отмечены, идем на шàã 2.

 

 

c

I1

 

 

c

 

 

d

 

 

d ?

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

2

3 2 6

"

 

 

 

 

 

 

 

 

 

 

I2

a b

 

 

a b

 

 

 

Шаги 2, 3. Выбираем точку (цены 2). Она входит в один мак-

симальный интервал, включаем его в решение и отмечаем точки. Поскольку не все точки отмечены, идем на шаг 2.

 

c

 

 

 

c

 

d

I1

d ?

 

 

 

 

 

 

 

 

 

"

 

 

2

I2

 

 

 

 

6

 

 

 

 

 

 

a b

 

a b

?

 

 

 

 

I3

 

 

 

Шаги 2, 3. Выбираем неотмеченную точку (цены 2). Она входит

в два максимальных интервала, содержащих по одной неотмеченной точке. Мощности интервалов равны, включаем в решение любой интервал и оòìå÷аем его точки. Вñå òîчки отмечены, идем на конец.

c

 

d

 

 

 

 

b

 

a

c

I1 d

?

b

I26

a? ?

I3 I4

Конец. ПриКратДНФ = a c d _ b c d _ b d _ a b c:

Полученная ДНФ не является кратчайшей для рассмотренной функции (см. страницу 84), но кратчайшая ДНФ могла быть получена данным алгоритмом, если бы при первом выполнении шага 2 вместо I1 â решение был включен другой максимальный интервал (проверьте эту возможность самостоятельно).

93

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

Найти приближенные кратчайшèå ÄÍÔ алгоритмом Закревского.

 

 

 

 

 

 

 

c

c

 

 

 

 

 

d

 

 

 

 

c

 

 

 

 

 

 

 

d

 

 

 

 

 

e

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

 

 

 

 

 

 

 

a

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

 

 

11.4. Контрольная работа 3

Тема контрольной работы: минимизация булевых функций.

 

Блейка-Порецкого

#

 

 

 

 

 

 

'

алгоритм

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ÄÍÔ

 

 

 

 

 

 

 

6

 

 

 

!

 

 

 

 

 

2

"

1

 

 

 

$

 

 

 

#

?

 

 

 

 

 

 

 

 

 

матрица

 

 

 

 

 

 

 

 

 

 

 

 

'

 

 

 

 

Ãðåÿ

!

$

 

 

 

 

 

"

 

 

 

 

#алгоритмКвайна- # 4

?? ?

СокрДНФ

МакКласки

СовДНФ

 

 

!

 

!

 

"7

 

5

"

 

 

 

 

 

 

 

 

 

 

 

 

 

#таблица

 

 

 

 

 

 

 

?

 

 

 

 

 

 

Квайна

!

 

 

 

"8

 

 

 

 

алгоритм

 

#кратчайшее

 

 

 

 

 

 

?

 

 

 

 

 

 

покрытие

!

 

 

 

 

" 9

 

 

 

Закревского

 

 

 

 

 

 

 

 

# ?

 

 

#3 ?

# 10 ?

 

"КратДНФ0

!

 

"КратДНФ !"ПриКратДНФ !

 

& Схема контрольной работы

%

 

 

 

 

 

10

 

 

94

Решение каждой из 11 задач начинать с постановки задачи и делать выводы из сравнения полученных разными способами:

сокращенных ДНФ,

матриц Грея,

кратчайших и приближенной кратчайшей ДНФ).

Задания на контрольную работу (ДНФ)

1) a b c d _ a b c _ a b d _ a c d _ a b c d _ b c d _ a b c d 2) a b c _ a c d _ b c d _ a b c d _ a c d _ a b c d _ a b c d 3) a b c d _ a c d _ a c d _ a b d _ a b c d _ a b c d _ a b c 4) a b c d _ a b c _ a c d _ a b c d _ a b c _ a c d _ a b c d 5) a c d _ a c d _ b c d _ a b c d _ a b c d _ a b c d _ b c d 6) a b c d _ a b c d _ a b c d _ a b d _ a b c _ a c d _ a c d: 7) a c d _ a b d _ a c d _ a b c d _ a b c d _ a b c d _ a b c 8) a b c _ a b c d _ a b c _ a b c d _ a c d _ a b c d _ a c d 9) a c d _ a b c d _ a c d _ a b d _ a b c d _ a b c d _ a b d 10) a b c d _ a b c _ b c d _ b c d _ a b d _ a b c d _ a b c d 11) a c d _ a b c d _ a b c _ b c d _ a b d _ a b c d _ a b c d 12) a b c _ a c d _ a b c d _ a b c d _ a b c d _ a b c _ a c d 13) a b c _ a c d _ b c d _ a b c _ a b c d _ a b c d _ a b c d 14) a c d _ a b c _ a b c _ a b c d _ a c d _ a b c d _ a b c d 15) a c d _ a c d _ a b c d _ a b c d _ a b c _ a b c _ a b d 16) b c d _ a b c d _ a b d _ a c d _ a b c _ a b c d _ b c d 17) a c d _ b c d _ a b c _ a b d _ a b c d _ a b c d _ a b c d 18) a c d _ a b c _ a c d _ a b c d _ a b c _ a b c d _ a b c d 19) a b c _ a b c d _ a c d _ a b c _ a b c d _ a b d _ a c d 20) a c d _ a b d _ b c d _ a b c _ a b c d _ a b c d _ a b c d 21) a b c d _ a b c d _ a b c _ c d _ a b c _ a b c d _ a c d 22) a b d _ a b c _ a b d _ b c d _ a b c d _ a b c d _ a b c d 23) a c d _ a b d _ a b c d _ a b c _ b c d _ a b c _ a b c d 24) b c d _ a b d _ a b d _ a b c _ a b c d _ a b c d _ a b c d 25) b c d _ a b c d _ a b d _ a b c d _ a b c _ a c d _ a b c d 26) a b d _ a b c d _ a c d _ a b c d _ a c d _ a b d _ a b c d 27) a c d _ a b c _ a b c _ a b c d _ a b c d _ a c d _ a b c d 28) a c d _ a b c d _ a b c d _ a c d _ a b c _ a b c d _ b c d 29) a b c d _ a c d _ a b d _ a b c d _ a c d _ a b c _ a b c d 30) a b d _ a b c _ a c d _ a b c d _ a b d _ a b _ a b c d

95

Пример. Задана ДНФ булевой функции.

ÄÍÔ = a c d _ a b c d _a b c d _a b c _a b c d _b d: K1 K2 K3 K4 K5 K6

1) Построим матрицу Грея функции по заданной ДНФ.

d c - I4

- I

6

b

a? ? ? ?

I1 I2 I3 I5

2, 3) Найдем сокращенную и кратчайшую ДНФ по матрице Грея.

Все максимальные интервалы A E (левая и средняя матрицы) за-

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

d c - C

- B

b

a?

A

c

d

F

?

E a b - D 6

c

d

F

?

E b 6

a ? ?

AB

СокрДНФ = a c _ b d _ a b c _ a b d _ b c d _ a c d: A B C D E F

КратДНФ = a c _ b d _ b c d _ a c d: A B E F

4) Построим совершенную ДНФ функции по матрице Грея. Каждая точка задает конъюнкцию совершенной ДНФ.

СовДНФ = a b c d _ a b c d _ a b c d _ a b c d _ a b c d _

_ a b c d _ a b c d _ a b c d _ a b c d _ a b c d:

5) Построим сокращенную ДНФ функции из совершенной ДНФ алгоритмом Квайна-МакКласки. Представляем совершенную ДНФ списком точек, упорядочиваем их по весу и разбиваем на классы.

96

Список 0

Список 0 (упорядоченный)

0 0

1

1

 

C1

1) 0 0 1 0

0

0

1

0

 

 

2)

1

0

0

0

 

0 1

0

1

 

C2

3) 0 0 1 1

0

1

1

1

 

 

4)

0

1

0

1

 

1

1

0

0

 

 

5)

1

1

0

0

 

1

1

0

1

 

 

6)

1

0

0

1

 

1

1

1

1

 

 

7)

1

0

1

0

 

1 0

0

0

 

C3

8) 0 1 1 1

1

0

0

1

 

 

9)

1

1

0

1

 

1

0

1

0

 

C4

10)

1

1

1

1

 

Выполняем все неполные склеивания векторов классов Ci è Ci+1, ãäå i = 1; 2; 3, отмечая векторы, участвующие в склеивании. Результаты

заносим в список 1 (с номерами склеиваемых векторов). Повторяя аналогичные действия для списка 1, получаем список 2 и приводим в нем подобные. Склеивание векторов из списка 2 невозможно.

 

 

Список 1

 

 

Список 2

 

 

 

 

 

(1,3)

 

 

1 0

 

(3,10)

C1

1) 0

0

1

 

1)

(((((

 

2)

 

0

1

0

(1,7)

 

2)

1 (0(

 

(4,9)

 

 

 

 

 

 

 

 

((

 

 

3)

1

 

0

0

(2,5)

 

3)

1

1

(7,12)

 

4)

1

0

(2,6)

4)

(((((

 

0

 

((1 1 (8,11)

 

 

 

 

 

 

 

 

 

((

 

 

 

5)

1

0

0

(2,7)

 

 

 

 

 

C2

6) 0 1

1

(3,8)

 

 

Список 3

 

7)

0

1

1

(4,8)

 

ïóñò

 

8)1 0 1 (4,9)

9)1 1 0 (5,9)

10)1 0 1 (6,9)

C3 11) 1 1 1 (8,10) 12) 1 1 1 (9,10)

Неотмеченные векторы всех списков задают сокращенную ДНФ (обозначения конъюнкций взяты из задачи 2).

СокрДНФ = a b c _ b c d _ a b d _ a c d _ a c _ b d: C E D F A B

6) Построим сокращенную ДНФ функции из исходной ДНФ алгоритмом Блейка-Порецкого. Представляем ДНФ списком троичных

97

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

1) 1(

((((((

13

 

0

0

((

 

(((((

7

2)( 1

0

0

1

(

((

 

 

(((

 

((((

 

 

6

3)( 1

1

1

1

(

 

 

 

 

 

4) 0

0

1

 

((((

5)((1(0((1 0 8 6) 1 1

(((

7) 1(0((0( (2,1) 13

((

8) 1 0 0 (5,1)

(((

9)((1(1((0( (6,1) 13 10) 0 1 1 (6,4)

((((

11) (1(((0 1 (7,6) 13

(

12)0 1 0 (8,4)

13)1 0 (9,7)

(((

14)((0(0((1( (12,10) 4

(((

15)((1(0(((0 (13,12) 8

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

СокрДНФ = a b c _ b d _ a b d _ a c d _ b c d _ a c: C B D F E A

Вывод. Сокращенные ДНФ, полученные в задачах 2), 5), 6), совпадают, следовательно, они найдены верно.

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

 

 

 

1

2

d c

d c

- C

 

 

3

4

 

 

 

- B

 

5

6

7

 

 

 

-

A

a b

8

9

 

10

 

 

 

 

 

 

 

 

a b

 

 

c

F d

?

E a b - D 6

98

Проверяя принадлежность точек максимальным интервалам, строим таблицу Квайна:

0011 0010 0101 0111 1100 1101 1111 1000 1001 1010

1 0

 

 

 

 

1

1

 

1

1

 

A

1 1

 

 

1

1

 

1

1

 

 

 

B

0 0 1

 

 

 

 

 

 

 

 

 

 

C

1

1

 

 

 

 

 

 

 

 

1 0 0

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

1

 

1

0 1 0

 

 

 

 

 

 

 

 

 

 

E

 

1

 

 

 

 

 

 

 

1

0 1 1

 

 

 

 

 

 

 

 

 

 

F

1

 

 

1

 

 

 

 

 

 

 

1

2

3

4

5

6

7

8

9

10

 

8) Найдем кратчайшее покрытие таблицы Квайна. В ней нет однострочного покрытия, но строки A и B ядерные, включаем их в

покрытие и вычеркиваем из матрицы вместе с покрытыми столбцами (с третьего по девятый), получаем матрицу Q1. В ней нет одностроч- ных покрытий и ядерных столбцов, но есть строка-предшественница: D E, поэтому удаляем строку D. В новой матрице Q2 появилась ядерная строка E, включаем ее в покрытие и удаляем из матрицы

вместе со вторым и десятым столбцами, получаем матрицу Q3.

 

1

1

 

C

1

1

 

C

1

C

Q1 =

 

 

 

D Q2 =

 

 

 

E Q3 =

 

F

 

 

1

 

1

1

1

 

 

1

1

E

1

 

 

F

1

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

F

1

2

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

10

 

 

 

 

 

 

 

Строка C образует однострочное покрытие матрицы Q3. Включив ее

âрешение, получаем кратчайшее покрытие fA; B; C; Eg.

9)Запишем кратчайшую ДНФ по кратчайшему покрытию таблицы Квайна.

КратДНФ0 = a c _ b d _ a b c _ b c d: A B C E

10) Построим матрицу Грея по полученной кратчайшей ДНФ.

c

C d

?

E b 6

a ? ?

AB

99

Вывод. Матрицы Грея, из задач 1) и 10) совпали, значит, кратчай-

шая ДНФ из задачи 9) задает исходную функцию. Длины кратчайших ДНФ из задач 3) и 9) равны, значит, эти задачи решены верно.

10) Построим приближенную кратчайшую ДНФ по матрице Грея алгоритмом Закревского. На левой матрице показываем цены точек, на правой обозначаем точки.

 

 

 

 

 

 

c

 

 

 

 

 

 

 

 

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d

 

 

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

2

 

 

 

 

 

 

 

 

 

 

 

 

2

3

 

 

 

 

 

 

 

 

 

 

 

 

2

4

2

 

 

 

 

"

 

 

 

 

 

 

b

3

2

 

2

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

 

a

 

 

 

 

 

 

 

На следующих пяти матрицах показан ход решения. Последовательно выбираются неотмеченные точки , , " и и выделяются все содер-

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

 

 

2

c

 

 

 

c

 

I3

 

 

 

 

 

c

 

 

 

d

- I1

 

 

d

 

KAA

 

 

 

 

 

d

 

 

2

3

 

 

 

 

 

3

-

 

A

 

 

 

 

 

2 4

2

 

 

 

 

 

 

I2

 

A

 

 

 

 

 

 

 

 

 

 

 

2 4 2

 

 

 

"

 

 

 

 

 

 

3 2

 

2

 

 

 

3 2

2

 

 

 

 

 

 

 

 

 

 

 

3 2

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a b

 

 

 

 

 

 

a b

 

 

 

a b

 

 

 

 

 

 

c

 

 

 

c

 

I3

 

 

 

 

 

c

 

 

 

 

d

 

 

 

d

 

KAA

AA

 

 

d

- I1

 

 

 

 

 

 

 

 

 

-I2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

a

 

 

a

 

 

 

 

 

 

I4

 

 

 

 

I4

 

b

-

 

 

 

b

 

 

 

b

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ПриКратДНФ = a b c _ b d _ a c _ a b d:

 

 

 

 

 

 

 

 

 

 

 

 

K1

K2

K3

 

K4

 

 

 

 

Вывод. Так как приближенная кратчайшая ДНФ задает исходную функцию, и ее длина не меньше длин кратчайших ДНФ из задач 3) и 9), то приближенная кратчайшая ДНФ найдена верно.

100

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