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)