Уч.пособие-по-ОДМ-2012
.pdfВ полученной квадратной таблице каким-либо символом (например, 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