Алгоритм Квайна – Мак-Клоски

Название это условное – алгоритм собран из разных кусков.

Склейка – это операция удаления переменной из ДНФ: если входящие в ДНФ ЭК имеют вид K1=xÙK и K2= ÙK, то их дизъюнкция: K1Ú K2=(x Ú )ÙK=K.

Поглощение – это тождество (равносильность) булевой алгебры: xÙKÚK=K. В результате применения операции поглощения остаётся ЭК, называемая импликантой.

Идея алгоритма – провести все возможные склейки ЭК, затем поглотить лишние ЭК и из остатков найти МДНФ. Очень простая идея алгоритма осложняется тем, что начиная с некоторого шага происходит размножение решений – появляются несколько т.н. тупиковых ДНФ, из которых выбирается МДНФ простым перебором.

1. Первый шаг – получение сокращенной ДНФ.

i) Все точки носителя функции (ЭК) записываются в столбик, сгруппировано по числу единиц (т.е. в антицепь, по слоям сети)

ii) Производятся всевозможные склейки ЭК (естественно, между разными группами). Результат каждой склейки заносится в соседний столбик, а ЭК, вошедшая в склейку, помечается.

iii) Из полученного столбика вычеркиваются повторяющиеся ЭК и добавляются непомеченные ЭК.

iv) Пункты ii) и iii) повторяются, возможно, несколько раз.

v) Результат – сокращенная ДНФ, содержащая импликанты исходной.

2. На втором шаге выделяются ядровые импликанты и тупиковые ДНФ

i) Составляется таблица, в левом столбце которой выписывают импликанты, а в верхней строке – исходные ЭК.

ii) Таблица заполняется следующим образом: на пересечении ставится «+», если соответствующая ЭК поглощается импликантой, в противном случае клетка оставляется пустой.

iii) Заполненная таблица просматривается: ищутся столбцы, содержащие только один «+». Соответствующе «+» импликанты – ядровые, они входят в МДНФ.

iv) Затем из таблицы вычеркиваются сначала строки, содержащие ядровые импликанты, затем столбцы, содержащие «+» от ядровых импликант.

v) Оставшаяся часть таблицы анализируется на предмет выделения тупиковых ДНФ. Принцип следующий: набор импликант каждой тупиковой ДНФ должен покрывать все оставшиеся «+» таблицы.

Из найденных тупиковых ДНФ тривиальным алгоритмом (перебором) выбираются минимальные (их может быть несколько). Дизъюнкции минимальных тупиковых ДНФ с ядровыми импликантами и являются МДНФ (их также может быть не одна).

Пример.

Nf ={0,2,3,6,7}={000,010,100,110,111}, Nf ={1,4,5}={001, 100,101}

*     0-0            
*   * 01- 0-0 + +      
*   * -10 -1-   + + + +
*   * -11 11-          
*   * 11- 01-          
        *   * * *

Обе получившиеся импликанты – ядровые. Следовательно, МДНФ =

Отступление: геометрический язык – дуальность.

Изобразим носитель функции из примера на булевом кубе размерности 3:

На первом шаге алгоритма склейками получены импликанты, написанные в третьем столбце, общим числом также 5. Они соответствуют соседним ребрам куба. Таким образом, геометрически склейка – это переход от точек куба к покрывающим их рёбрам. Далее, пара ребер также может быть склеена по несущественной переменной, что на геометрическом языке будет обозначать переход к покрытию 2-гранью. Формально это выглядит следующим образом:

Nf ={000}Ç{010}Ç{011}Ç{110}Ç{111}= N1 Ç N2; N1 ={000, 010}, N2 ={010,011,110,111}.

Таким образом, результат минимизации – нахождение покрытия носителя функции ребром и 2-гранью.

Взаимно-однозначное соответствие между точками куба и конституентами единицы очевидным образом продолжается до взаимно-однозначного соответствия между любой импликантой ранга r и гранью размерности n-r, задаваемое формулой:

Проще всего установить это соответствие, дополнив импликанту до полного числа переменных. Соответствующее множество конституент и составит грань куба.

Пример

Т = {(1,0,0), (1,1,0), (1,1,1), (0,1,1)}.

Теперь можно дать точную формулировку задаче минимизации булевой функции на геометрическом языке: для данного множества Nf найти его покрытие минимальным числом граней максимальной размерности: Nf = N1 Ç N2 Ç…

Так им образом, на геометрическом языке процедуре минимизации булевых функций соответствует нахождение минимального покрытия носителя функции. Минимального в смысле покрытия множества – носителя гранями максимальной размерности. Максимальной грани соответствуют простые импликанты. Теоретико-множественному объединению максимальных граней будет соответствовать дизъюнкция простых импликант, т.е., сокращённая ДНФ. Поиску ядровых и тупиковых ДНФ соответствует нахождение минимальных покрытий носителя функции.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  




Подборка статей по вашей теме: