Любую функцию, кроме констант 0 и 1, можно представить в виде как СДНФ, так и СКНФ.
Совершенной конъюнктивной нормальной формой (СКНФ) называется КНФ, в которой нет одинаковых элементарных дизъюнкций и все дизъюнкции состоят из одного и того же набора переменных, в который каждая переменная входит только один раз (возможно, с отрицанием).
Совершенной дизъюнктивной нормальной формой (СДНФ) называется ДНФ, в которой нет одинаковых элементарных конъюнкций и все конъюнкции состоят из одного и того же набора переменных, в который каждая переменная входит только один раз (возможно, с отрицанием).
Всякую конъюнкцию элементарных дизъюнкций назовем конъюнктивной нормальной формой (КНФ).
Всякую дизъюнкцию элементарных конъюнкций назовем дизъюнктивной нормальной формой (ДНФ).
Элементарной дизъюнкцией называется дизъюнкция нескольких переменных, взятых с отрицанием или без отрицания, причем среди переменных могут быть одинаковые.
Элементарной конъюнкцией называется конъюнкция нескольких переменных, взятых с отрицанием или без отрицания, причем среди переменных могут быть одинаковые.
СОВЕРШЕННАЯ ДИЗЪЮНКТИВНАЯ НОРМАЛЬНАЯ ФОРМА И СОВЕРШЕННАЯ КОНЪЮНКТИВНАЯ НОРМАЛЬНАЯ ФОРМА.
Известно два способа задания логических функций: с помощью формулы и с помощью таблицы истинности. По формуле легко составляется таблица. На практике при конструировании различных электронных устройств часто возникает обратная задача – от таблицы истинности перейти к формуле, чтобы на ее основе построить функциональную схему.
Введем следующие определения:
Приведем примеры формул, соответствующих и не соответствующих этим определениям:
| НАЗВАНИЕ ФОРМУЛЫ В ОПРЕДЕЛЕНИИ | Формула, соответствующая определению | ФОРМУЛА, НЕ СООТВЕТСТВУЮЩАЯ ОПРЕДЕЛЕНИЮ |
| Элементарная дизъюнкция |
|
|
| Элементарная конъюнкция |
|
|
| ДНФ |
| ДНФ можно построить для всякой формулы (путем преобразования) |
| КНФ |
| КНФ можно построить для всякой формулы (путем преобразования) |
| СДНФ |
|
|
| СКНФ |
|
|
Этот факт является теоремой алгебры логики. Из него следует, что любая формула (кроме констант 0 и 1) может быть преобразован к виду как СДНФ, так и СКНФ. Константа 0 может быть представлена только СКНФ (
), а константа 1 – только СДНФ (
). Из вышесказанного следует, что если надо построить формулу некоторой функции по таблице истинности этой функции, то всегда можно получить СКНФ или СДНФ этой функции.
Алгоритм получения СДНФ по таблице истинности:
- Отметить те строчки таблицы истинности, в последнем столбце которых стоят 1:
| X | Y | F(X,Y) |
| 0 | 0 | |
| 0 | 1 | 1* |
| 1 | 0 | 1* |
| 1 | 1 | 0 |
- Выписать для каждой отмеченной строки конъюнкцию всех переменных следующим образом: если значение некоторой переменной в данной строке равно 1, то в конъюнкцию включать саму эту переменную, если равно 0, то ее отрицание:
– для 2-й строки;
– для 3-й строки.
- Все полученные конъюнкции связать в дизъюнкцию:
.
Алгоритм получения СКНФ по таблице истинности:
- Отметить те строки таблицы истинности, в последнем столбце которых стоит 0:
| X | Y | F(X,Y) |
| 0 | 0* | |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0* |
- Выписать для каждой отмеченной строки дизъюнкцию всех переменных следующим образом: если значение некоторой переменной в данной строке равно 0, то в дизъюнкцию включать саму эту переменную, если равно 1, то ее отрицание:
– для 1-й строки;
– для 4-й строки.
- Все полученные дизъюнкции связать в конъюнкцию:
.
Покажем, что полученные по двум алгоритмам СДНФ и СКНФ эквивалентны. Преобразуем СКНФ по правилам алгебры логики:
.
Примечание: для нахождения формулы по таблице истинности рекомендуется использовать тот из двух алгоритмов, в котором в таблице помечается меньше строк.