5. Минимизация логических функций методом Квайна – Мак

advertisement
5. Минимизация логических функций методом Квайна –
Мак-Класки
Метод Карно позволяет минимизировать логические функции
с относительно малым числом переменных. Кроме того метод
является визуальным и сложным для алгоритмизации.
Метод минимизации Квайна – Мак-Класки (далее просто
Мак-Класки) является систематичным и его легко
алгоритмизировать. Кроме того в нем отсутствуют
ограничения на число переменных логической функции.
Метод Мак-Класки состоит из двух основных этапов:
1. Нахождение всех простых импликант логической
функции, используя правило склеивания
10. Законы склеивания:
a) (A & B)  (A &  B)  A
b) (A  B) & (A   B)  A
2. Минимизации полученного множества простых импликант
(задача нахождения оптимального покрытия)
Метод Мак-Класки. 1-ый этап.
• Разделить двоичные векторы области единиц логической
функции на секции в соответствии с их индексами.
Индекс двоичного вектора = число единиц, входящих в состав
этого вектора.
• Составить
таблицу
интервалов,
используя
правило
склеивания. Склеивать между собой только те двоичные
векторы, которые отличаются друг от друга только в одной
координате (ближайшие векторы). Склеивание происходит по
этой координате. Ближайшие векторы могут находится только в
соседних секциях таблицы.
• В конце первого этапа получают все простые импликанты
логической функции.
Метод Мак-Класки. 2-ой этап.
В ходе второго этапа полученное множество простых
импликант минимизируют, т.е. выбирают минимальное
количество простых импликант, которое позволяет покрыть
всю область единиц логической функции (типичная задача
нахождения оптимального покрытия).
Пример 5.1 пусть задана логическая функция
f (X1 , X2 , X3 , Х4 ) = (0,1,2,5,6,7,8,9,10,14)1
Найти МДНФ методом Мак-Класки.
Решение:
Выпишем двоичные векторы области единиц логической
функции и найдем их индексы
0
1
1
2
2
3
1
V1 (X1, X2, X3,Х4) ={(0000), (0001), (0010), (0101), (0110), (0111), (1000),
2
2
3
(1001), (1010), (1110),}.
1-ый этап – нахождение всех простых импликант логической
функции.
Разделим двоичные векторы на секции в соответствии с их
индексами, получим таблицу:
Таблица интервалов:
индекс интервал
0
0000
1
0001
0010
1000
2
0101
0110
1001
1010
3
0111
1110
Склеиваем между собой ближайшие векторы соседних секций
пока это возможно.
индекс интервал индекс интер- индекс
вал
0
0000
1
0001
00-0
0010
-000
1000
2
3
0-1
1-2
000-
0-01
0101
-001
0110
0-10
1001
-010
1010
100-
0111
10-0
1110
2-3
01-1
011-110
1-10
0-1-1-2
1-2-2-3
А1
интервал
обозн.
-00-
A4
-0-0
A5
--10
A6
Все оставшиеся не склеенными
интервалы образуют множество
всех простых импликант
логической функции.
А2
А3
2-ой этап – минимизация полученного множества простых
импликант логической функции.
Импликант
0000
0001
0010
0101
0110
0111
1000
1001
1010
1110
0
1
2
5
6
7
8
9
10
14
x
x
A1 0-01
x
x
A2 01-1
x
A3 011-
x
A4 -00-
x
A5 -0-0
x
A6 --10
x
x
x
x
x
x
x
x
x
Вся область единиц должна быть покрыта простыми импликантами (в
каждом столбце хотя бы один «х»), и их должно быть минимальное
количество.
x
Оптимальное покрытие: А2, А4, А6.
МДНФ:
А2  А4  А6 = X1&X2&X4  X2&X3  X3&X4.
Сходство методов Мак-Класки и Карно:
1. Векторы соседних клеток карты Карно = векторы
соседних секций таблицы склеивания метода МакКласки.
2. Объдинение в контуры на карте Карно = склеивание в
методе Мак-Класки.
3. Нахождение МДНФ и МКНФ методом Мак-Класки
отличаются между собой по таким же принципам как и в
методе Карно.
Пример Найти МКНФ логической функции
f(X1 ,X2 ,X3, X4 ) = (2,5,6,7,10,11,14)0
1-ый этап – нахождение множества всех простых импликант
индекс интервал индекс интервал обозн. индекс
1
0010
2
0101
0110
3
1-2
0-10
1-2-2-3
-010
2-3
интервал обозн.
--10
--10
01-1
A1
1010
011-
A2
0111
-110
1011
101-
1110
1-10
A3
A4
2-ой этап – минимизация полученного множества простых
импликант
0010
0101
0110
0111
1010
1011
1110
2
5
6
7
10
11
14
x
x
A1
x
A2
x
x
A3
A4
x
x
x
x
x
МКНФ  A1& A2 & A3 
= (X1  X2  X4) & (X1  X2  X3) & (X3  X4)
Download