
- •Курс лекций по математике элементы дискретной математики Лекция 3 Построение минимальных днф с помощью карт Карно. Алгоритм Квайна- Мак-Клоски
- •3.1 Минимальные днф
- •3.2 Алгоритм Квайна – Мак-Клоски
- •3.2.1 Склейка
- •3.2.2 Определение ядра
- •3.2.3 Перечисление тупиковых днф
- •3.2.4 Отыскание среди тупиковых днф кратчайших и
- •3.3 Метод Блейка. Таблицы Квайна
3.2.4 Отыскание среди тупиковых днф кратчайших и
минимальных
Перейдем к последнему шагу алгоритма Квайна – Мак-Клоски. Среди найденных тупиковых ДНФ найдем кратчайшие и минимальные. Можно легко показать, что минимальная ДНФ всегда является кратчайшей, но обратное неверно. Так, х1х2 + ¬х2 = х1 + ¬х2 и первая ДНФ кратчайшая, но не минимальная. Вторая ДНФ минимальна, следовательно, представляемую ею функцию нельзя представить ДНФ, содержащей менее двух элементарных конъюнкций. Но в первой ДНФ три литерала, а во второй – два.
Из пяти тупиковых ДНФ, соответствующих функции Патрика (**) предыдущего пункта, кратчайшими являются две. Каждая из них минимальна, так как обе они имеют одинаковое число литералов.
Пример: Рассмотрим карту Карно на рисунке 3.10.
Рисунок 3.10
В результате проведения склейки получим следующую сокращенную ДНФ:
¬x1¬x3 + ¬x1¬x2 + ¬x2¬x4 + ¬x2¬x3 + ¬x3x4 + x1x2x4 + x1x2x3 + x1x3¬x4.
Ядро составляют склейки ¬x1¬x3, ¬x1¬x2.
Шесть клеток, содержащих 1, на карте Карно остаются непокрытыми ядровыми склейками. Обозначим неядровые склейки К1, …, К6 и составим для них функцию Патрика:
(К3 + К4)(К4 + К5)(К5 + К6)(К1 + К2)(К2 + К3)(К1 + К6).
Преобразуя ее, получаем
К1К3К5 + К2К4К6 + К2К3К5К6 + К1К2К4К5 + К1К3К4К6.
Имеем, следовательно, пять тупиковых ДНФ. Запишем их для наглядности так:
Из этих пяти тупиковых ДНФ кратчайшими являются первая и вторая. Из них, в свою очередь, минимальной является первая, так как она содержит на один литерал меньше.
В итоге получаем минимальную ДНФ в виде:
¬х1¬х3 + ¬х1¬х2 + ¬х2¬х4 + ¬х3х4 + х1х2х3.
В данном случае минимальная ДНФ оказалась единственной, хотя, как мы видели в ранее разобранных примерах, в общем случае могут существовать несколько минимальных ДНФ.
3.3 Метод Блейка. Таблицы Квайна
Техника карт Карно является удобным и наглядным способом реализации алгоритма Квайна – Мак-Клоски. Но существуют и другие способы проведения склейки, т.е. получения сокращенной ДНФ для исходной функции. Одним из таких способов является чисто алгебраический метод Блейка, состоящий в том, что к любой ДНФ, представляющей функцию, применяются следующие тождества:
хК1 + ¬хК2 = хК1 + ¬хК2 + К1К2,
К1 + К1К2 = К1.
Первое из этих тождеств называют тождеством обобщенного склеивания, а второе – тождеством поглощения.
Технология применения метода Блейка такова: применяют тождество обобщенного склеивания до тех пор, пока не перестанут появляться новые элементарные конъюнкции вида К1К2. После этого применяют тождество поглощения.
Как только сокращенная ДНФ тем или иным способом найдена, приступают к нахождению ядра. Ядро можно определить и без использования карты Карно с помощью так называемой таблицы Квайна. Столбцы этой таблицы соответствуют элементарным конъюнкциям исходной СДНФ, а строки – склейкам сокращенной ДНФ. На пересечении строки и столбца ставится знак "+", если склейка данной строки покрывает элементарную конъюнкцию данного столбца. Ядро вычисляется так: отмечаем столбцы с единственным знаком "+", тогда склейки только тех строк, в которые попал этот знак, образуют ядро.
Для предыдущего примера (рисунок 3.10) получим таблицу Квайна (таблица 3.1).
Таблица 3.1
|
0001 |
0011 |
0010 |
0101 |
0111 |
0110 |
1100 |
1000 |
1010 |
0хх1 |
+ |
+ |
|
+ |
+ |
|
|
|
|
0х1х |
|
+ |
+ |
|
+ |
+ |
|
|
|
10х0 |
|
|
|
|
|
|
|
+ |
+ |
х010 |
|
|
+ |
|
|
|
|
|
+ |
1х00 |
|
|
|
|
|
|
+ |
+ |
|
|
* |
|
|
* |
|
* |
* |
|
|
В целях экономии места элементарные конъюнкции в таблице заменены цифровыми обозначениями соответствующих вершин и граней булева куба – точно также как при обозначении прямоугольников на карте Карно. Ядровые склейки выделены жирным шрифтом.
По таблице Квайна можно составить и функцию Патрика для перечисления тупиковых ДНФ. Для этого нужно отметить все столбцы таблицы, в которых на пересечении со строками, соответствующими ядровым склейкам, не стоит знак "+". Для рассматриваемого примера таким является только последний столбец. Чтобы покрыть соответствующую элементарную конъюнкцию СДНФ, можно выбрать одну из двух простых склеек: х1¬х2¬х4 или ¬х2х3¬х4.