
Лекция 5
§ 2.3. Минимизация дизъюнктивных нормальных форм
|
Элементарная конъюнкция, ранг элементарной конъюнкции. Дизъюнктивная нормальная форма (ДНФ), сложность ДНФ. Минимальная ДНФ. Импликанта, простая импликанта. Сокращенная ДНФ. Тупиковая ДНФ. Представление булевой функции в виде сокращенной, тупиковой и минимальной ДНФ. |
Базовые понятия и утверждения
1. Постановка задачи минимизации ДНФ.
Пусть задан алфавит переменных
.
Определение. Формулу вида
,
где для любого
равно 0 или 1
и все переменные разные (
,
если
),
называют элементарной конъюнкцией
ранга r над множеством
X.
Константу 1 считают элементарной конъюнкцией ранга 0.
Элементарные конъюнкции, отличающиеся порядком следования переменных, задают одну функцию, и мы их различать не будем.
Например, пусть
задан алфавит переменных
.
Тогда формула
- элементарная конъюнкция ранга 3,
а формула
- элементарная конъюнкция ранга 2
над множеством
.
Формула
,
напротив, элементарной конъюнкцией не
является, так как в этой формуле дважды
упоминается переменная
.
Пример 1.
Перечислить все элементарные
конъюнкции над множеством
:
1,
,
,
,
,
,
,
,
.
Вообще, используя алфавит из
переменных
,
можно составить
элементарных конъюнкций. Действительно,
произвольную элементарную конъюнкцию
можно составить за
этапов. На первом этапе принять решение
относительно переменной
(есть три возможности - включить ее в
конъюнкцию саму по себе, включить ее
отрицание или не включать ее вовсе), на
втором - принять решение относительно
переменной
(вновь имеем три возможности) и т.д.
Действуя описанным образом, мы составим
элементарных конъюнкций (в их число
входит и константа 1
- сопоставим ее случаю, когда ни одна из
переменных в конъюнкцию не включена).
Пример 2. Перечислить
все элементарные конъюнкции ранга 3
над множеством
,
обращающиеся в 1
на наборе
.
◄ Произвольная элементарная конъюнкция
равна 1 в том
и только в том случае, когда все
образующие ее
множители
одновременно
равны 1.
Значит, переменная
может войти в элементарную конъюнкцию,
обращающуюся в 1
на наборе
,
только без отрицания, а остальные
переменные - обязательно с отрицанием.
Таким образом, перебрав все варианты
выбора трех переменных из множества
,
получим четыре конъюнкции:
,
,
,
.
►
Определение. Формулу вида
(
при
),
где через
обозначены элементарные конъюнкции
над множеством X,
называют дизъюнктивной
нормальной формой над множеством X.
Дизъюнкции, отличающиеся только порядком следования конъюнкций, мы различать не будем.
Сумма рангов конъюнкций, входящих в ДНФ, называется сложностью ДНФ.
Например,
- ДНФ сложности 6;
- ДНФ сложности 4;
- ДНФ сложности 3 над множеством
.
Заметим, что формулы
равносильны и, следовательно, реализуют
одну и ту же функцию
.
Таким образом, одна и та же функция может
быть задана несколькими ДНФ, причем эти
ДНФ могут иметь различную сложность.
Определение. ДНФ, имеющая по сравнению с другими ДНФ, задающими данную функцию, наименьшую сложность, называется минимальной ДНФ данной функции.
Так, для функции
,
реализуемой рассмотренными выше ДНФ
,
,
,
дизъюнктивная нормальная форма
является минимальной.
Задача минимизации ДНФ формулируется
так: для всякой булевой функции
найти представление в виде минимальной
ДНФ.
Задачу минимизации ДНФ можно решить методом полного перебора, организовав его следующим образом.
1. Построить все ДНФ над множеством
.
Выше было показано, что число различных
элементарных конъюнкций над алфавитом
из
переменных равно
.
При построении произвольной ДНФ каждую
из этих конъюнкций можно в нее либо
включить, либо не включить. Значит, всего
можно составить
ДНФ (вычтя из
единицу, мы учли, что если не включить
в строящийся объект ни одну из элементарных
конъюнкций, то ДНФ не образуется).
2. Отобрать из построенных ДНФ те, которые
задают функцию
.
Заметим, что для всякой булевой функции
,
тождественно отличной от нуля, есть, по
крайней мере, одна представляющая ее
ДНФ - это СДНФ.
3. Для каждой отобранной ДНФ определить
сложность; ДНФ наименьшей сложности и
есть искомые минимальные ДНФ функции
.
В силу большого объема операций на практике искать минимальную ДНФ функции полным перебором неудобно. Разработано несколько более экономичных методов построения минимальных ДНФ. В этом параграфе мы познакомимся с одним из них.
2. Понятие о сокращенной и тупиковой ДНФ. Выбранный нами для изучения метод построения минимальной ДНФ оперирует с несколькими видами ДНФ, две из которых, совершенная и минимальная ДНФ, нам уже знакомы. Помимо них нам понадобятся так называемые сокращенная и тупиковая ДНФ. Перед тем, как их рассматривать введем ряд понятий.
Определение. Элементарная конъюнкция
называется импликантой функции
,
если на любом наборе
,
на котором эта элементарная конъюнкция
равна 1, функция
также обращается в 1.
Заметим, что любая элементарная конъюнкция, входящая в СДНФ функции, является импликантой этой функции.
Определение. Будем называть импликанту
функции
простой, если элементарная конъюнкция,
получающаяся из нее удалением любой из
букв, уже не является импликантой
.
Пример 3.
Перечислить все простые импликанты
функции
.
◄ Имеем девять элементарных конъюнкций
над переменными
:
1,
,
,
,
,
,
,
,
.
Относительно каждой из них выясним,
является ли она импликантой, и если это
так, то простая ли она.
Для удобства дальнейших рассуждений
перечислим значения функции
на всех наборах значений переменных:
,
,
,
.
1 импликантой
не является, так как обращается в 1
на всех наборах, в то время как
.
не является импликантой
,
так как на наборе
она обращается в 1, в то время как
.
обращается в 1
на наборах
,
,
и на каждом из этих наборов
также равна 1,
следовательно,
- импликанта
.
Эта импликанта простая, так как конъюнкция
1, полученная
из нее путем удаления
,
импликантой не является.
обращается в 1
на наборах
,
,
и на каждом из этих наборов
также равна 1,
следовательно,
- импликанта
.
Эта импликанта простая, так как конъюнкция
1, полученная
из нее путем удаления
,
импликантой не является.
обращается в 1
на наборах
и
,
а
,
следовательно,
не является импликантой
.
обращается в 1
на одном наборе
,
и
,
следовательно,
- импликанта
.
Однако простой эта импликанта не
является, так как конъюнкция
,
полученная из нее путем удаления буквы
,
является импликантой.
обращается в 1
на одном наборе
и
,
следовательно,
- импликанта
.
Однако простой эта импликанта не
является, поскольку конъюнкция
,
полученная из нее путем удаления буквы
,
является импликантой.
обращается в 1
на наборе
,
а
,
следовательно,
не является импликантой
.
обращается в 1
на наборе
,
,
следовательно,
импликанта
.
Однако простой эта импликанта не
является, так как конъюнкция
,
полученная из нее путем удаления
,
является импликантой.
Таким образом, функция
имеет две простые импликанты:
и
.
►
Определение. Дизъюнкция всех простых импликант функции называется сокращенной ДНФ функции.
Например, для
функции
(см. пример 3) сокращенная ДНФ имеет вид
.
Из определения сокращенной ДНФ непосредственно следует, что сокращенная ДНФ у функции единственна.
Справедливо следующее утверждение:
сокращенная ДНФ функции
задает функцию
(доказательство приведено во второй
части параграфа).
Более того, оказывается, что почти всегда можно реализовать функцию дизъюнкцией лишь некоторых (не всех!) простых импликант. В связи с этим уместно ввести понятие тупиковой ДНФ.
Определение. Тупиковой ДНФ функции называется такая реализующая ее дизъюнкция простых импликант, из которой нельзя удалить ни одну простую импликанту так, чтобы полученная после удаления ДНФ все еще задавала функцию.
Имеет место следующий теоретический факт: минимальная ДНФ функции является тупиковой ДНФ (доказательство приведено во второй части параграфа).
3. Построение минимальных ДНФ. Рассмотрим алгоритм построения минимальных ДНФ функции, исходя из СДНФ. Обоснование данного алгоритма можно найти в [1].
Алгоритм состоит из трех этапов: сначала получают сокращенную ДНФ, далее строят все тупиковые ДНФ и, наконец, из тупиковых ДНФ выделяют минимальные.
1-й этап: получение сокращенной ДНФ функции. Сокращенную ДНФ можно получить из СДНФ, используя алгоритм, называемый методом Квайна.
В алгоритме используются следующие равносильные преобразования:
а) операция неполного склеивания,
состоящая в замене выражения
на
;
б) операция поглощения, состоящая в
замене выражения
на
;
в) операция удаления дублируемых членов,
состоящая в замене выражения
на
.
0-й шаг. Выписываем СДНФ функции. К
каждой паре конъюнкций, образующих
СДНФ, применяем, если это окажется
возможным, операцию неполного склеивания
(
заменяем на
).
Затем с помощью операции поглощения
удаляем те конъюнкции ранга n,
которые возможно удалить таким образом.
Убираем дублируемые члены
.
Полученную в итоге ДНФ обозначаем
.
-й
шаг. К началу этого шага нами построена
ДНФ
.
К каждой паре конъюнкций ранга
этой ДНФ применяем операции неполного
склеивания и поглощения, после чего
убираем дублируемые члены. Полученную
в результате этой процедуры ДНФ обозначаем
.
Если
совпадает с
,
то
- искомая сокращенная ДНФ. В противном
случае, увеличив значение
на единицу, повторяем
-й
шаг.
В качестве примера
построим методом Квайна сокращенную
ДНФ функции
:
.
2-й этап: построение тупиковых ДНФ.
Напомним, что сокращенная ДНФ представляет собой дизъюнкцию всех простых импликант функции. Значит, если сокращенная ДНФ функции найдена, то найдена и совокупность всех простых импликант функции.
Имея в распоряжении набор всех простых импликант функции, можно построить ее тупиковую ДНФ. Для этого будем использовать следующий алгоритм.
Пусть
- произвольная булева функция. Назовем
носителем функции множество булевых
векторов, на которых функция
принимает значение 1.
Пусть булевы векторы
- элементы носителя функции
,
- совокупность простых импликант функции.
Составим таблицу, строки которой
соответствуют простым импликантам
функции, столбцы - элементам носителя,
а в ячейках на пересечении строки
и столбца
проставлено число
,
равное 1, если импликанта
на наборе
обращается в единицу, и равное 0 в
противном случае (табл. 2.20). Назовем эту
таблицу импликантной.
Таблица 2.20 |
|||||
|
|
... |
|
… |
|
|
|
… |
|
… |
|
… |
… |
… |
… |
… |
… |
|
|
… |
|
… |
|
… |
… |
… |
… |
… |
… |
|
|
… |
|
… |
|




Составленную таким образом формулу
преобразуем, используя законы
дистрибутивности, в ДНФ над алфавитом
переменных
.
Затем полученное выражение упростим,
применив, сколько возможно, операции
поглощения и удаления дублируемых
членов. В результате всех этих
преобразований получим дизъюнкцию
различных конъюнкций вида
.
По каждой такой конъюнкции выпишем
дизъюнкцию
.
Все полученные таким образом дизъюнкции
представляют собой тупиковые ДНФ функции
.
В качестве примера
найдем с помощью приведенного выше
алгоритма тупиковые ДНФ функции
.
Ранее мы нашли сокращенную ДНФ этой
функции, следовательно, можем выписать
совокупность всех простых импликант
функции:
,
,
,
.
Составим импликантную таблицу (табл.
2.21).
Таблица 2.21 |
|||||
|
000 |
011 |
100 |
110 |
111 |
|
1 |
0 |
1 |
0 |
0 |
|
0 |
1 |
0 |
0 |
1 |
|
0 |
0 |
1 |
1 |
0 |
|
0 |
0 |
0 |
1 |
1 |
Тогда
.
Имеем две тупиковые ДНФ, каждая из
которых задает функцию
и
.
3-й этап: построение минимальных ДНФ. Минимальные ДНФ функции являются тупиковыми ДНФ. Поэтому, чтобы их найти, достаточно вычислить сложность всех тупиковых ДНФ функции и отобрать из них ДНФ наименьшей сложности (таких ДНФ может оказаться несколько). Они и будут минимальными ДНФ.
Таблица 2.22 |
|||
|
|
|
|
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |

Пример 4. Построить минимальные ДНФ функции:
а)
;
б)
.
◄ а) Зададим функции таблицей (табл. 2.22).
1-й этап. Строим сокращенную ДНФ функции:
.
2-й и 3-й этапы
для данной функции можно опустить.
Действительно, нетрудно убедиться, что
при опускании любой буквы в сокращенной
ДНФ, получается формула, функцию
не представляющая. Следовательно,
сокращенная ДНФ
функции
является также тупиковой и минимальной.
Таблица 2.23 |
||||
|
|
|
|
|
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1-й этап. Построим сокращенную ДНФ функции:
.
Переход I: операция неполного склеивания применена к парам конъюнкций 1 и 2, 1 и 4, 2 и 5, 3 и 7, 4 и 5, 5 и 6, 6 и 7.
Переход II: применена операция поглощения - каждая из конъюнкций 4-го ранга поглощена какой-то из конъюнкций 3-го ранга.
Переход III: операция неполного склеивания применена к парам конъюнкций 8 и 12, 9 и 10.
Переход IV: применена операция поглощения и убраны дублирующие члены.
Итак, мы нашли сокращенную ДНФ функции:
.
2-й этап. Введем
обозначения для простых импликант
функции:
,
,
,
.
Составим импликантную таблицу (табл.
2.24).
Таблица 2.24 |
|||||||
|
0000 |
0100 |
0111 |
1000 |
1100 |
1110 |
1111 |
|
0 |
0 |
1 |
0 |
0 |
0 |
1 |
|
0 |
0 |
0 |
0 |
1 |
1 |
0 |
|
0 |
0 |
0 |
0 |
0 |
1 |
1 |
|
1 |
1 |
0 |
1 |
1 |
0 |
0 |
Тогда
.
Таким образом, имеем две тупиковые ДНФ,
реализующие функцию
:
и
.
3-й этап. Тупиковые
ДНФ функции
имеют одинаковую сложность (равную 8),
и, следовательно, обе являются минимальными.
►