- •5. Не полностью определенные булевы функции
- •5.1. Не полностью определенные бф
- •5.2. Минимизация не полностью определенных булевых функций с помощью карт Карно-Вейча
- •5.3. Минимизация булевых функций методом Квайна - Мак-класки
- •5.4. Скобочные формы бф
- •5.5. Применение законов поглощения для упрощения формул бф и кс
5.3. Минимизация булевых функций методом Квайна - Мак-класки
Минимизация БФ от числа переменных больше четырех-пяти с помощью карт Карно-Вейча не совсем удобна, поэтому для минимизации таких функций используются другие алгоритмы. Одним из таких методов является метод Квайна - Мак-Класки. Применение этого метода возможно как для СДНФ, так и для СКНФ.
Основная идея этого метода состоит в следующем:
попарным склеиванием всех конституент единицы находятся конъюнкции, называемые импликантами. Импликанты, в свою очередь, подлежат склеиванию. Импликанты, которые уже не могут быть склеены ни с какими другими, называются простыми. Логическая сумма простых импликант образует сокращенную ДНФ;
сокращенная ДНФ является избыточной, поэтому определяются импликанты, являющиеся лишними, и образуется тупиковая ДНФ, причем их может быть несколько;
из всех возможных тупиковых БФ выбирается самая короткая.
Рассмотрим этот метод на примере БФ:
F=(3,6,8,9,11,13,17,19,23,24,25,29,31).
Все конституенты единицы записываются в столбец конституент в виде их n-разрядных двоичных номеров. При записи производится разбиение на группы, содержащие m единиц в двоичном коде каждой группы (m=0n). Количество единиц в коде m называют индексом группы (в группе, где m=0 может быть только один код 00000, в группе m=n один код 11111). Остальные группы содержат различное число кодов. Для заданной БФ разбиение конституент единицы на группы показано на рис. 5.3.
Рис. 5.3. Разбиение конституент единицы на группы
Образуется первый столбец остатков. Для этого попарно сравниваются двоичные номера всех кодов группы с индексом m с кодами группы с индексом m+1, начиная с группы с наименьшим индексом. Если сравниваемые коды различаются только в одном разряде, т. е. склеиваются, то в первый столбец остатков записываются десятичные номера склеенных конституент и двоичный код (сокращенный код) с прочерком в том разряде, где коды имеют отличие, при этом оба эти кода в столбце конституент отмечаются любым условным значком, например, «V». Значок V ставится только один раз, даже если набор участвует в нескольких операциях склеивания. Указанная операция повторяется для всех групп последовательно в порядке возрастания индекса m. Все неотмеченные в столбце конституент двоичные номера соответствуют простым импликантам (рис. 5.4, а, б). Из рисунка видно, что конституента единицы с номером 6 является простой импликантой, т. к. не склеивается ни с какой другой.
К первому столбцу остатков применяются те же самые правила, и формируется второй столбец остатков. В этом столбце склеиванию подлежат те сокращенные коды, у которых прочерки стоят в одном разряде и имеется отличие только в одном разряде. Таким образом, во втором столбце остатков прочерки будут находиться уже в двух разрядах (рис. 5.4, в).
Формирование следующих столбцов остатков и сокращенных кодов продолжается до тех пор, пока возможна операция склеивания. Каждый раз в операции склеивания участвуют коды, в которых прочерки стоят в одних и тех же разрядах.
Все неотмеченные импликанты являются простыми. Они во всех столбцах отмечаются последовательно буквами, причем одинаковые импликанты отмечаются одной и той же буквой.
Рис. 5.4. Получение столбцов остатков и
обозначение простых импликант
Чтобы составить тупиковые формы БФ из простых импликант и построить минимальную форму, используют импликантную таблицу, или по-другому ее называют таблицей покрытий. Ее строки соответствуют простым импликантам, отмеченным буквами, а столбцы – конституентам единицы. Если простая импликанта покрывает конституенту единицы, то на пересечении строки и столбца ставится знак “X” (рис. 5.5).
Рис. 5.5. Импликантная таблица (таблица покрытий)
Таблица покрытий просматривается по столбцам. Если в каком-либо столбце находится единственный Х, то импликанта, отмечающая строку, является существенной. Она обводится кружком, а этот столбец вычеркивается (на рис. 5.6 столбцы вычеркнуты сплошной линией). Также вычеркиваются все те столбцы, у которых на пересечении со строкой, отмеченной кружком, есть Х, (на рис. 5.6 столбцы вычеркнуты пунктирной линией). Множество существенных импликант образуют ядро функции. Для данной БФ ядро составляют импликанты A, M, N (рис. 5.6).
Рис. 5.6. Импликантная таблица с выделенными существенными
импликантами
Все остальные импликанты не входят в ядро тупиковой функции. К ним относятся импликанты B, C, D, E, F, G, K, L. Среди них нужно выбрать такие, которые покрывали бы оставшиеся непокрытыми конституенты единицы (3, 11, 17, 19, 23, 31) минимальным способом. Таких вариантов может быть несколько. Например, импликанты B, E, G, K покрывают все оставшиеся конституенты единицы. В другом варианте, импликанты C, D, F, К также покрывают их. При большом количестве строк и столбцов в импликантной таблице задача поиска минимального покрытия перебором вариантов покрытия может оказаться довольно громоздкой и требующей значительных затрат времени.
Существуют различные способы решения этой задачи. Один из них – алгебраический – предложен Петриком:
для каждой конституенты, не покрытой ядром функции, записывают дизъюнкцию импликант, покрывающих эту конституенту. Например, конституенту 00011 покрывают импликанты или В, или С, т. е. (В+С);
формируется произведение этих дизъюнкций, которое называется функцией покрытия ;
в полученной формуле раскрываются скобки по правилам алгебры логики;
из полученных конъюнкций выбирают самую короткую или, если их несколько, то любую из них;
импликанты, входящие в такую конъюнкцию, приписывают к ядру функции.
Так для данной функции:
Ψ=(B+C)(B+D)(E+F)(C+E+G)(G+K)(K+L)=
=(B+BD+CB+CD)(CE+CF+E+EF+EG+FG)(GK+GL+K+KL).
Для упрощения выражения в каждой скобке применим операцию поглощения. Тогда:
Ψ=(B+CD)(E+CF+FG)(K+GL)=
=(BE+BCF+BFG+CDE+CDF+CDFG) (K+GL)=
=BEK+BCFK+BFGK+CDEK+CDFK+CDFGK+BEGL+
+BCFGL+BFGL+CDEGL+CDFGL.
Среди всех полученных конъюнкций минимальной длиной обладает только одна, а именно BEK, т. е. оставшиеся непокрытыми конституенты могут быть покрыты импликантами В, Е и K. Если в импликантой таблице вычеркнуть столбцы, у которых в строках В, Е и К стоит знак Х, то, с учетом ядра функции, должны оказаться вычеркнутыми все столбцы, т. е. покрыться все конституенты единицы (рис. 5.7) (на рис. 5.7 импликанты В, Е, К обведены прямоугольником, а столбцы вычеркнуты двойной линией).
Рис. 5.7. Импликантная таблица с покрытием всех конституент
Тогда функция F имеет вид:
Все остальные варианты покрытия функции будут иметь большее количество конъюнкций, т. е. будут не минимальными.
Для сравнения минимизируем эту же функцию с помощью карты Карно (рис. 5.8).
Рис. 5.8. Минимизация функции F с помощью карты Карно
В соответствие с картой Карно функция будет иметь вид:
,
т. е. оба способа дают один результат.
При минимизации методом Квайна–Мак-Класки БФ, заданных СКНФ для получения минимальной конъюнктивной формы МКНФ, используется тот же самый алгоритм, но имеются следующие особенности:
склеиванию подлежат пары:
;
двоичные коды в столбцах конституент нуля и в столбцах остатков записываются в инверсной форме. Например, двоичный код числа 8 (1000) записывается как 0111. Индекс группы считается по количеству нулей в коде;
в конечной формуле БФ записывается как произведение дизъюнкций. Причем, если в двоичном коде импликанты на месте разряда стоит единица, то переменная записывается в прямом виде, а если ноль, то в инверсном.
Пусть задана БФ У=П(1,3,6,7,9,13,14,15) и требуется найти ее МКНФ. На рис. 5.9 приведены столбец конституент и столбцы остатков. На основе этих данных строится таблица покрытия функции У (рис. 5.10). Из нее видно, что только F является существенной импликантой и входит в ядро функции. Чтобы найти остальные существенные импликанты составляется функция покрытия Ψ.
Рис. 5.9. Получение простых импликант функции У
Функция покрытия составляется, как и в предыдущем случае:
Ψ=(A+B)(A+C)(B+D)(D+E)=
=(A+AC+AB+BC)(BD+BE+D+DE)=(A+BC)(BE+D)=
=ABE+AD+BCE+BCD.
Наиболее коротким является произведение AD, т. е. простые импликанты A и D нужно присоединить к ядру F функции.
Рис. 5.10. Импликантная таблица функции У
При записи функции следует помнить, что если переменная в импликанте обозначается 1, то переменная в функции записывается в прямом виде, в противоположном случае в инверсном:
Для проверки проведем минимизацию этой функции с помощью карты Карно. Функции, полученные обоими методами, совпадают.
Рис. 5.11. Карта Карно функции У и минимизированная функция
