
2.2.3. Как преобразовать формулу в сднф
СДНФ легко строится по таблице истинности, но если функция заданна формулой, ее СДНФ можно получить, преобразуя формулу, без построения таблицы истинности.
Построение СДНФ осуществляется в два этапа. Сначала строится ДНФ. А затем ДНФ превращается в СДНФ. Чтобы превратить формулу в ДНФ, нужно выполнить следующие действия.
1. Преобразовать
формулу так, чтобы в ней остались только
операции
причем
отрицания должны стоять только над
отдельными аргументами. Для этого нужно
воспользоваться законами де Моргана и
равносильностями
,
которые доказываются по таблицам
истинности.
2. Раскрыть скобки и привести подобные, пользуясь законами дистрибутивности и другими равносильностями, а затем упростить формулу. В результате будет построена ДНФ.
3. Преобразовать
ДНФ в СДНФ. Все ПЭК нужно превратить в
полные ПЭК, для чего поступить так. Если
в ПЭК не входит, например, переменная
y,
нужно домножить эту ПЭК на скобку
и раскрыть скобки. Повторить операцию
столько раз, сколько нужно, чтобы все
ПЭК стали полными. Если появятся
одинаковые конъюнкции, нужно убрать
повторения, ведь
.
Пример.
Построить СДНФ формулы
Сначала построим таблицу истинности этой формулы (табл. 3), а затем преобразуем формулу в СДНФ
Таблица 3
x |
y |
z |
|
|
|
|
|
|
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
Эта функция равна 1 на шести наборах значений переменных, ее СДНФ содержит шесть слагаемых и такова
.
Преобразуем формулу
;
;
;
.
Преобразуем ДНФ в СДНФ
;
;
.
2.2.4. Как преобразовать формулу в скнф
СКНФ строится по таблице истинности, но если таблица задана формулой, ее СКНФ можно получить, преобразуя формулу, без построения таблицы истинности.
Построение СКНФ осуществляется в два этапа. Сначала строится КНФ, затем КНФ превращается в СКНФ.
Чтобы превратить формулу в КНФ, нужно выполнить следующие действия.
1. Преобразовать формулу так, чтобы в ней остались только операции причем отрицания должны стоять только над отдельными аргументами.
2. Воспользоваться
законом дистрибутивности
и превратить формулу в КНФ.
3. Упростить получившуюся КНФ.
4. Преобразовать КНФ в СКНФ.
Все ПЭД нужно
превратить в полные ПЭД, для чего
поступить так. Если в ПЭД не входит,
например, переменная y,
нужно прибавить логически к этой ПЭД
выражение
и воспользоваться законом дистрибутивности
.
Повторить операцию столько раз, сколько
нужно, чтобы все ПЭД стали полными. Если
появятся одинаковые ППЭД, нужно убрать
повторения, так как
.
Пример.
Построим СКНФ формулы из параграфа 2.3.
СКНФ этой формулы такова:
,
так как функция равна 0 на двух наборах
(0,0,0) и (0,1,1).
Преобразуем формулу. Как уже было показано
.
Тогда
.