Второй метод получения минимальных КНФ
Этот метод полностью опирается на преобразования дизъюнктивных форм переключательных функций. Алгоритм заключается в следующем.
1. Записывают дизъюнкцию всех конституент единицы, которые не входят в СДНФ заданной функции.
Если функция задана таблицей, то в эту форму войдут конституенты единицы, соответствующие наборам аргументов, на которых функция равна нулю. Если функция задана аналитически, то вначале находят ее совершенную ДНФ, а затем записывают дизъюнкцию всех конституент, которые не вошли в эту функцию. Можно показать, что полученная таким образом форма будет совершенной дизъюнктивной нормальной формой заданной функции, взятой с отрицанием.
2. Находят минимальные ДНФ по рассмотренным алгоритмам.
3. От полученных минимальных форм берут отрицания, и после преобразований по формулам де Моргана получают конъюнктивные формы, которые будут минимальными.
Для обоснования приведенного алгоритма получения минимальной КНФ достаточно доказать два положения.
1. Дизъюнкция всех конституент единицы, не входящих в совершенную дизъюнктивную нормальную форму данной функции f(x1, x2, …, xn), является отрицанием данной функции .
2. Преобразования по формулам де Моргана минимальной дизъюнктивной нормальной формы функции приводят к получению минимальной конъюнктивной нормальной формы функции f(x1, x2, …, xn).
Прежде всего заметим, что дизъюнкция всех конституент единицы тождественно равна единице. Действительно, для любого набора аргументов в такой дизъюнкции найдется конституента, равная на этом наборе единице. Но если одно логическое слагаемое ДНФ равно единице, то равна единице и вся дизъюнктивная форма. Поэтому справедливы такие, например, соотношения:
,
.
В общем виде
, (2.5)
где n – число аргументов.
Рассмотрим некоторую ПФ, заданную в СДНФ:
, (2.6)
где m – число наборов, на которых ПФ равна единице.
Обозначим конституенты единицы, не входящие в последнее выражение, через , где p = 2n – m – число наборов, на которых функция равна нулю. Тогда на основании соотношения (2.5)
.
Учитывая (2.6), получим
.
Сравнивая последнее соотношение с тождеством х1Ú = 1, которое можно записать в форме
,
получим
,
что и требовалось доказать.
Преобразования по формулам де Моргана не изменяют число букв в выражении для ПФ. Поэтому если взять отрицание от минимальной ДНФ функции , то полученная после преобразования по формулам де Моргана конъюнктивная форма также будет минимальной, но уже для функции .
Если предположить, что эта форма не является минимальной, то существует другая конъюнктивная форма, содержащая меньшее число букв. Тогда, взяв от нее отрицание и применив формулы де Моргана, получим дизъюнктивную форму с меньшим числом букв, чем в минимальной. Это противоречит определению минимальной формы и, следовательно, предположение о том, что полученная конъюнктивная форма не является минимальной, не верно.
Пример 2.9. Найти минимальную конъюнктивную форму ПФ, заданной таблицей истинности (табл. 2.4).
Таблица 2.4.
Таблица истинности
Номер набора | ||||||||
x1 | ||||||||
x2 | ||||||||
x3 | ||||||||
f(x1, x2, x3) |
1. Запишем дизъюнкцию конституент единицы, соответствующих наборам, на которых функция равна нулю:
.
2. Выполним операции неполного склеивания и поглощения, после чего получим сокращенную ДНФ функции :
.
3. Испытывая импликанты, обнаружим, что вторую импликанту можно исключить (при x2 = 1, x3 = 0, выражение º 1), т.е. минимальная ДНФ функции имеет вид
.
Использовав формулу де Моргана, получим минимальную КНФ заданной функции:
.
Пример 2.10. Найти минимальную конъюнктивную нормальную форму функции
.
1. Находим СДНФ:
.
2. Записав дизъюнкцию конституент единицы, не вошедших в предыдущее выражение, получим СДНФ функции :
.
3. Сокращенная ДНФ имеет вид
.
4. Находим минимальные формы функции , построив импликантную матрицу (табл.2.5).
Таблица 2.5
Импликантная матрица
Импли- канта | Конституента | ||||
x1x2 x3 | x1x2 x3 | x1x2 x3 | x1x2 x3 | x1x2 x3 | |
x1 x3 | * | * | |||
x1 x2 | * | * | |||
x2 x3 | * | * | |||
x1 x3 | * | * |
1) .
2)
Воспользовавшись формулой де Моргана, получим две минимальные КНФ:
f(x1, x2, x3) = (x1Ú x3)( x2Ú x3)( x1Ú x3).
f(x1, x2, x3) = (x1Ú x3)( x1Ú x2)( x1Ú x3).