Минимизация ДНФ методом Квайна

Каждая формула имеет конечное число вхождений переменных. Под вхождением переменной понимается место, которое переменная занимает в формуле. Задача заключается в том, чтобы для данной булевой функции f найти ДНФ, представляющую эту функцию и имеющую наименьшее число вхождений переменных.

Если х — логическая переменная, а σ∈{0,1}, то выражение

Xσ = { x если σ=1
¬x если σ=0

называется литерой. Конъюнктом называется конъюнкция литер. Например, формулы XY¬Z и XYX¬X являются конъюнктами. Элементарным произведением называется конъюнкт, в который любая переменная входит не более одного раза (либо сама, либо ее отрицание).

Формула f1 называется импликантой формулы f, если f1 — элементарное произведение и f1&f=f1, т. е. для соответствующих формулам функций справедливо неравенство f1≤f. Импликанта f1 формулы f называется простой, если после отбрасывания любой литеры из f1 не получается формула, являющаяся импликантой формулы f.

Пример. Найдем все импликанты и простые импликанты для формулы f=X→Y. Всего имеется 8 элементарных произведений с переменными X и Y. Ниже, для наглядности, приведены их таблицы истинности:

X Y X→Y XY ¬XY X¬Y XY ¬X ¬Y X Y
0 0 1 0 0 0 0 1 1 0 0
0 1 1 0 1 0 0 1 0 0 1
1 0 0 0 0 1 0 0 1 1 0
1 1 1 1 0 0 1 0 0 1 1

Из таблиц истинности заключаем, что формулы ¬X¬Y, ¬XY, XY, ¬X, Y — все импликанты формулы x→y, а из этих импликант простыми являются формулы X и Y (формула ¬X¬Y, например, не является простой импликантой, поскольку, отбрасывая литеру ¬Y, получаем импликанту ¬X).

Сокращенной ДНФ называется дизъюнкция всех простых импликант данной формулы (функции).

Теорема. Любая булева функция, не являющаяся константой 0, представима в виде сокращенной ДНФ.

В предыдущем примере функция, соответствующая формулe x>y представима формулой y x ? которая является ее сокращенной ДНФ.

Сокращенная ДНФ может содержать лишние импликанты, удаление которых не меняет таблицы истинности. Если из сокращенной ДНФ удалить все лишние импликанты, то получается ДНФ, называемая тупиковой.

Заметим, что представление функции в виде тупиковой ДНФ в общем случае неоднозначно. Выбор из всех тупиковых форм, формы с наименьшим числом вхождений переменных дает минимальную ДНФ (МДНФ).

Рассмотрим метод Квайна, для нахождения МДНФ, представляющей данную булеву функцию. Определим следующие три операции:

1. операция полного склеивания:

fXvF¬X=f(Xv¬X)=f

2. операция неполного склеивания:

fXvf¬X=f(Xv¬X)vfXvf¬X=fvfXvf¬X

3. операция элементарного поглощения:

fXσvf=f,   σ∈{0,1}

Теорема (теорема Квайна). Если исходя из СДНФ функции произвести все возможные операции неполного склеивания, а затем элементарного поглощения, то в результате получится сокращенная ДНФ, т. е. дизъюнкция всех простых импликант.

Пример. Пусть функция f(X,Y,Z) задана совершенной ДНФ ¬XY¬Zv¬XYZvX¬YZvXY¬ZvXYZ. Тогда, производя в два этапа все возможные операции неполного склеивания, а затем элементарного поглощения, имеем:

f = ¬XY(¬ZvZ)vY ¬Z(Xv¬X)vYZ(Xv¬X) vX¬Z(¬YvY)vXY(Zv¬Z)v

v¬XY¬Zv ¬XYZvX¬YZvXY ¬ZvXYZ =

= ¬XYvY¬ZvYZvX ¬ZvXYv¬XY¬Zv ¬XYZvX¬YZvXY ¬ZvXYZ =

= Y(¬XvX)vY(Zv¬Z)v ¬XYvY¬ZvYZvXZvXYv ¬XY¬Zv¬XYZvX ¬YZvXY¬ZvXYZ =

= Yv¬XYvY ¬ZvYZvXZvXYv¬XY ¬Zv¬XYZvX ¬YZvXY¬ZvXYZ = YvXZ

Таким образом, сокращенной ДНФ функции f является формула YvXZ.

На практике при выполнении операций неполного склеивания на каждом этапе можно не писать члены, участвующие в этих операциях, а писать только результаты всевозможных полных склеиваний и конъюнкты, не участвующие ни в одном склеивании.

Пример. Пусть функция f{X,Y,Z) задана совершенной ДНФ

f = ¬X¬Y¬Zv¬X¬YZvX¬YZvXYZ

Тогда, производя операции склеивания, а затем элементарного поглощения, имеем:

f = ¬X¬Y(¬ZvZ)v¬YZ(Xv¬X)vXZ(¬YvY) = ¬X¬Yv¬YZvXZ

Для получения минимальной ДНФ из сокращенной ДНФ используется матрица Квайна, которая строится следующим образом. В заголовках столбцов таблицы записываются конституенты единицы совершенной ДНФ, а в заголовках строк — простые импликанты из полученной сокращенной ДНФ. В таблице звездочками отмечаются те пересечения строк и столбцов, для которых конъюнкт, стоящий в заголовке строки, входит в конституенту единицы, являющейся заголовком столбца.

Для примера матрица Квайна имеет вид:

Импликанты ¬X¬Y¬Z ¬X¬YZ X¬YZ XYZ
¬X¬Y * *    
¬YZ   * *  
XZ     * *

В тупиковую ДНФ выбирается минимальное число простых импликант, дизъюнкция которых сохраняет все конституенты единицы, т. е. каждый столбец матрицы Квайна содержит звездочку, стоящую на пересечении со строкой, соответствующей одной из выбранных импликант. В качестве минимальной ДНФ выбирается тупиковая, которая имеет наименьшее число вхождений переменных.

В предыдущем примере по матрице Квайна находим, что минимальная ДНФ заданной функции есть ¬X¬YvXZ.

Замечание. Для построения минимальной КНФ функции f, достаточно построить минимальную ДНФ для функции f, а затем использовать f=¬(¬f) и законы де Моргана.