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

Уч.пособие-по-ОДМ-2012

.pdf
Скачиваний:
54
Добавлен:
10.05.2015
Размер:
2.36 Mб
Скачать

В полученной квадратной таблице каким-либо символом (например, 1 или ) отмечают только вершины, принадлежащие носителю. Чтобы соответствие номеров наборов носителя и элементов карты Карно было взаимно однозначным, вектор значений функции размещают в таблице Карно следующим образом:

Первую четверку значений записывают в первую строку, поменяв местами пару последних значений в четверке. Аналогично поступают со второй четверкой. Это обусловлено переменой мест

значений 11 и 10 переменных x3 и x4.

.

 

Третью четверку вектора значений функцииПрасполагают в четвертой строке, а четвертую- в третьей, не забыв поменять местами 3 и 4 элемент в каждой четверке. Такое .расположение координат вектора значений функции связано с тем, что значения 11 и 10 у

переменных x1

и x2

в карте Карно поменяли местами.

 

 

В

.

Аналогичного результата можно добиться, записывая значения пере-

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

Пример 6.1. Изобразить с помощью карты Карно двоичную функ-

цию f = (1000 0101 1100 0111).

С

Решение.

 

 

 

e

 

 

 

 

1. В первых двух четверках вектора значений

xy

функции ( 1000 и 0101 ) меняем местами

1000 7→1000

последние две цифры и записываем их в

xy

 

Барашев

 

 

 

0101 7→0110

две первых строки карты Карно (указываем

только наборы носителя!):

 

 

2. Третью четверку (1100), поменяв местами

 

 

 

Унучек

 

xy

третий и четвертый элементы, помещаем

1100 7→1100

в четвертую строку таблицы.

 

 

 

 

МИРЭА

3. В четвертой четверке (0111) меняем местами

два последних значения и записываем её в

xy

0111 7→0111

третью строку карты Карно.

91

4. Получим следующую таблицу.

 

 

 

 

 

 

 

 

x3x4

 

00

 

01

 

11

 

10

 

 

 

 

 

 

 

@

 

 

 

 

 

 

 

 

 

x1x@2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00

 

1

 

 

 

 

 

 

 

 

01

 

 

 

1

 

1

 

 

 

 

11

 

 

 

1

 

1

 

1

 

 

10

 

1

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

.

5. Убедимся, что булева функция изображена верно. Для этого най-

дем носитель функции.

 

 

 

 

 

 

 

 

 

Nf =

 

 

 

 

 

В

 

 

 

 

 

 

 

= { (0000), (0101), (0111), (1000), (1001),.(1101)П, (1110), (1111) }.

Рассмотрим первый по порядку набор носителя ( (0000) ). Все че-

тыре переменные входят в этот набор с нулевыми значениями..

Это

означает, что символ "1\, соответствующий .данномуАнабору, находится на пересечении первой строки (эта строка соответствует нулевым значениям первых двух переменных)С и первого столбца (нулевые значения переменных x3 и x4).

Элемент карты Карно, соответствующий набору (0101), располо-

Барашев жен на пересеченииУнучеквторой строки и второго столбца, так как на

этом наборе x1x2 = x3xМИРЭА4 = 01.

Следующему по порядку набору носителя, (0111), соответствует символ "1\, который является пересечением второй строки (x1x2 = 01) и третьего столбца (x3x4 = 11).

Два следующих набора носителя ( (1000) и (1001) ) располагаем в четвертой строке, так как эта строка соответствует единичным значениям переменных x1 и x2, в первом (x3x4 = 00) и втором (x3x4 = 01) столбцах соответственно.

Остальные наборы помещаем в третью строку, так как переменные x1 и x2 на этих наборах входят со значениями, равными 1. Столбцы,на пересечении которых расположены данные элементы таблицы, соответствуют значениям переменных x3 и x4.

92

6.2Алгоритм Карно минимизации булевых функций

Алгоритм Карно рассмотрим на следующем примере.

Пример 6.2. Минимизировать с помощью карты Карно двоичную функцию fe= (1000 0101 1100 0111) из примера 6.1 .

Решение.

.

 

 

П

1. Изобразим булеву функцию с помощью карты Карно (см. при-

мер 6.1) .

 

2. Объединим вершины носителя в максимальные интервалы. Мак-

 

 

 

 

 

 

 

В

 

 

 

фигуры, по-

симальными интервалами являются прямоугольные.

крывающие 2n наборов, стоящих рядом, например:

.

Барашев10 &1 1 1

 

 

 

А

1 %

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 4 = 16 вершин, образующих квадрат 4 × 4 (весь булев куб

B )

 

 

 

 

 

 

 

 

 

.

 

 

 

x3x4

 

00

01

 

11

10

 

 

 

 

@

 

'1 1

 

 

 

С1

$

 

 

x1x@2

 

 

 

 

 

 

 

00

 

 

1

 

 

 

 

01

 

 

 

1

1

 

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

11

 

 

 

1

1

 

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

23 = 8 вершин, образующих 2 рядом стоящие строки или 2 столбца (напомним, соседними являются также 1 и 4 строки и столбцы)

 

Унучек

 

 

 

 

$

x3x4

00 01

МИРЭА'

10

11

10

 

x3x4

00

01

11

 

@

 

1

 

 

 

 

@

 

 

 

 

 

x1x@2

 

 

 

 

x1x@2

 

 

 

 

 

00

 

1

1

1

00

1

1

1

1

 

11

 

 

1

1

1

 

11

&

 

 

%

01

 

1

 

01

 

 

10

 

 

 

 

 

 

10

1

1

1

1

 

93

x3x4

00

01

 

11

10

 

x3x4

00

 

01

11

10

@

 

'1 1

$

 

@

 

 

 

 

$ '1

x1x@2

 

 

x1x@2

 

 

00

 

 

 

00

 

1

 

01

 

1

 

1

 

 

 

01

 

1

 

 

 

 

1

11

 

1

 

1

 

 

 

11

 

1

 

 

 

 

1

10

 

&1 1 %

 

 

10

 

1

 

% &1

22 = 4 вершины, образующих:

 

 

 

 

 

 

.

 

 

 

 

 

 

x3x4 00

01

 

11

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

 

 

@

 

 

 

 

 

П

 

 

 

 

 

 

 

x1x@2

1

 

 

.

 

 

 

 

 

 

 

 

 

00

 

1

 

 

1

 

1

 

а) строку

 

 

 

 

01

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

 

В .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

 

 

 

А

 

Барашев

 

 

 

 

 

 

 

 

 

 

 

 

 

x3x4

00

01

 

11

 

10

 

 

 

 

 

 

 

@

 

 

 

 

С

 

 

 

 

 

 

 

 

 

x1x@2

 

 

 

 

 

.

 

 

б)столбец

 

 

 

 

00

 

 

 

 

1

 

 

 

 

 

 

 

 

01

 

 

 

 

 

1

 

 

 

 

1

11 Унучек

11 1

 

 

 

 

 

 

 

 

 

11

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

1

 

 

 

в) квадрат 2 × 2

МИРЭА

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x3x4

00

01

 

11

10

 

 

x3x4

00

 

01

11

10

@

 

1

 

 

 

 

@

 

 

 

 

 

 

 

 

x1x@2

 

 

 

x1x@2

 

$ '

00

 

1

 

 

00

 

01

 

1

 

1

 

 

 

01

1

 

 

 

 

1

10

 

 

 

 

 

 

 

10

 

% &

94

x3x4

00

 

01 11 10

x3x4

00 01

11

10

@

 

 

 

 

 

 

@

 

 

 

 

 

x1x@2

 

 

 

 

 

x1x@2

 

 

01

 

1

01

1

00

1

 

 

00

 

 

 

1

11

11

 

 

10

1

 

1

 

10

1

 

 

 

1

21 = 2 вершины, стоящие рядом

 

.

 

 

 

 

00

01

11 10

 

00

 

10

x3x4

x3x4

01

11

 

@

 

 

 

 

 

 

@

 

 

 

1

00

 

 

 

 

 

 

00

 

 

 

x1x@2

 

1

 

 

 

x1x@2

 

 

 

 

11

 

 

1

11

 

01

 

 

 

 

 

 

01

 

 

 

 

1

 

 

 

В .

10

 

10

 

А

 

Барашев

 

 

 

x3x4

00

01

11 10

x3x4

00

01

11

 

10

@

 

 

 

 

 

 

@

 

 

 

 

 

x1x@2

 

 

 

 

 

 

x1x@2 .

 

 

1

01

 

 

 

 

 

01

1

 

 

 

00

 

 

 

 

 

1

00

 

 

 

 

 

11

 

 

 

 

 

 

11 С

 

 

 

10

Унучек

 

 

 

 

 

 

 

 

 

 

1

10

 

 

 

 

 

 

 

 

 

 

 

МИРЭА

 

 

20 = 1 вершина (точечный интервал)

 

 

 

 

 

 

 

x3x4

 

00 01 11

10

 

 

 

 

 

 

 

@

 

 

 

 

 

 

 

 

 

 

 

 

x1x@2

 

1

 

 

 

 

 

 

 

01

 

 

 

 

 

 

 

 

 

00

 

 

 

 

 

 

 

 

 

 

 

11

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

 

 

 

 

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

95

В нашем примере наборы носителя ни куб B4, ни пары соседних строк (столбцов) не образуют. Максимальный интервал, объединяющий 4 вершины, один - квадрат 2 × 2. Обозначим этот интервал I1. Еще 4 максимальных интервала I2, . . . , I5 образуют пары рядом стоящих вершин. Заметим, что наборы носителя (0000) и (1000) являются соседними, так как расположены в соседних 1 и 4 строках. Эта пара наборов образует интервал I5.

3. Так же, как и в предыдущих методах, выписываем простые им-

x3x4

00 01

11

10

 

 

 

@

 

 

 

I1 .

x1x@2

 

 

 

I5 00 - 1

 

01

1

1

10

@I

 

П

 

1 1

@

 

11

6 @ .

I2

 

1 1 1

 

 

 

I4

 

В

 

 

 

 

 

I3

 

 

.

Барашев(1111)

 

А

 

 

 

 

 

 

.

 

пликанты, соответствующие максимальным интервалам. Для задания набора, входящего в интервал, берем номер строки (значе-

Унучек

 

 

 

(значения 3 и 4

ния первых двух переменных) и номер столбцаС

переменных), на пересечении которых стоит "1".

 

 

 

МИРЭА

 

 

 

(0101)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

I

=

 

(0111)

 

K

= x

x

 

1

 

 

(1101)

 

1

2

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

I2

= {

(1111)

}

K2

= x1x2x3

(1110)

I3

= {

(1101)

}

K3

= x1

 

3x4

(1001)

x

I4

= {

(1000)

}

K4

= x1

 

2

 

3

(1001)

x

x

96

I5 = {

(0000)

}

K5 = x2x3x4

(1000)

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

ДНФсокр(f) = K1 K2 K3 K4 K5 =

= x2x4 x1x2x3 x1x3x4 x1x2x3 x2x3x4

5. Находим вершины, покрытые только одним максимальным. ин-

тервалом. Интервалы, покрывающие такие вершины, и соответ-

интервалом, отмечены символом "*". ТакихПнаборов 4: (0101),

ствующие им импликанты являются ядровыми, их дизъюнкция

.

 

- ядровой ДНФ. В нашем примере вершины, покрытые одним

В

.

(0111), (1110) и (0000). Первые 2 из этих наборов покрыты яд-

ровым интервалом I1

 

 

А

 

 

, вершина (1110)- ядровым интервалом I2, а

Барашев

. Импликанты K1

, K2, K5

-

набор (0000)- ядровым интервалом I5

ядровые.

 

.

 

 

 

 

С

 

 

 

Унучек

 

 

 

 

МИРЭА

 

 

97

x3x4

00 01

11

10

 

 

@

 

 

 

 

 

 

x1x@2

*1

*1

 

I1

01

I5 00 -*1

 

 

 

11

1 1 @I

 

 

 

1

1 *1

 

I2

10

 

 

 

 

 

@

 

 

 

 

6

@

 

 

 

 

I4

 

I3

 

 

 

 

 

 

 

 

. ДНФядр(f) = K1 K2 K5 = x2x4 Пx1x2x3 x2x3x4

6. По карте Карно выписываем функцию Патрика.. Как и в преды-

дущих методах, количество логических произведений (количество скобок) равно мощности носителя |NВf |, а число логических сла-

гаемых в каждом сомножителе равно числу интервалов,.покры-

вающих соответствующий набор носителя. ПорядокАперечисления .

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

P=

=(K5)(K1)(K1) (|K1 K3{z)(K1 K2})(K2) (|K4 {zK5})(K3 K4) =С

БарашевДНФядр(f) = K1 K2 K5

 

 

 

 

 

 

 

 

 

= x2x4 x1x2x3 x2x3x4.

 

 

Унучек

 

поглощ.K5

 

 

 

 

ДНФтуп1

поглощается K1

 

 

 

 

 

 

(f) = ДНФМИРЭАмин1 (f) = K1 K2 K3 K5 =

 

 

 

 

 

= K1K2K5(K3 K4) = K1K2K3K5 K1K2K4K5 .

 

| {z }

| {z1 } |

 

{z2

}

 

ядро

 

туп

туп

 

Конъюнкция перед скобками соответствует ядру функции

Ядровая ДНФ совпала с ядром, полученным с помощью карты Карно.

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

= x2x4 x1x2x3 x1x3x4 x2x3x4; r1 = 11;

98

ДНФтуп2 (f) = ДНФмин1 (f) = K1 K2 K4 K5 =

= x2x4 x1x2x3 x1x2x3 x2x3x4;

r2 = 11.

Пример 6.3. Найти сокращенную, ядровую, все тупиковые и все минимальные ДНФ для булевой функции fe = (1111 1111 1010 0101) методом Карно.

Решение.

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

П

 

1. Заполним карту Карно в соответствии с расположением наборов

на булевом торе (см. пункт 6.1).

 

 

В

 

 

 

xy

 

 

 

 

 

 

 

1111 7→1111 - первая строка карты Карно.

 

 

xy

 

 

 

 

 

 

 

А

1111 7→1111 - вторая строка карты Карно

 

.

Барашев

 

 

 

 

 

 

xy

 

 

 

 

 

 

 

 

 

1010 7→1001 - четвертая строка карты Карно

 

xy

 

 

 

 

 

С

 

 

0101 7→0110 - третья строка карты Карно.

 

Карта Карно заданной булевой функции имеет следующий вид:

Унучек

 

 

 

 

x3x4

00 01

11

 

10

 

 

 

 

@

МИРЭА

 

x1x@2

1 1

 

 

 

 

 

 

 

00

1

 

1

 

 

 

01

1 1

1

1

 

I1

 

 

 

 

 

 

I2

 

 

11

1

1

 

 

I3

 

 

10

1

 

 

1

 

 

 

 

 

Максимальный интервал I1 образован двумя соседними строками. Еще 2 максимальных интервала образуют квадраты из вершин, так как 4 вершины, расположенные в углах карты Карно, образуют один максимальный интервал (напомним, что крайние строки

и столбцы являются соседними).

2.Найдем простые импликанты и сокращенную ДНФ.

99

 

 

(0000)

 

 

 

 

 

 

 

 

 

 

 

 

 

(0001)

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

1 1

 

(0011)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(0010)

 

 

 

 

 

I =

 

(0100)

 

 

K =

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(0101)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(0111)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(0110)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(0000)

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

I

=

 

 

 

(0010)

 

 

K

=

 

 

 

 

x

x

 

2

 

 

 

 

(1000)

 

2

2

4

 

 

 

 

 

(1010)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= x x .

 

 

 

(0101)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

I

=

 

(0111)

 

 

K

Барашев01 *1 1 1

 

2

4

3

 

 

(1101)

 

В3

 

 

 

(1111)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ДНФсокр(f) =

K1 K2 K3

=Сx1 x2x4 x2x4

Унучек

 

3. Построим ядро функции.

 

 

 

 

 

МИРЭА

x3x4

00 01

11

10

 

 

@

1 *1

 

1

x1x@2

 

00

*1

 

 

 

*1

 

I1

11

 

*1

 

I2

*1

 

I3

10

*1

 

*1

 

 

Все максимальные интервалы содержат вершины, не покрываемые другими интервалами, и являются ядровыми.

ДНФядр(f) = ДНФсокр(f) = K1 K2 K3 = x1 x2x4 x2x4;

100