КНФ — различия между версиями
Permenko (обсуждение | вклад) (→Пример построения СКНФ) |
Permenko (обсуждение | вклад) (→Пример построения СКНФ) |
||
Строка 47: | Строка 47: | ||
# Для каждого отмеченного набора записываем конъюнкцию всех переменных по следующему правилу : если значение некоторой переменной есть 0, то в дизъюнкцию включаем саму переменную, иначе ее отрицание. | # Для каждого отмеченного набора записываем конъюнкцию всех переменных по следующему правилу : если значение некоторой переменной есть 0, то в дизъюнкцию включаем саму переменную, иначе ее отрицание. | ||
# Все полученные дизъюнкции связываем операциями конъюнкции. | # Все полученные дизъюнкции связываем операциями конъюнкции. | ||
− | == Пример построения СКНФ== | + | == Пример построения СКНФ == |
1. В таблице истинности отмечаем те наборы переменных, на которых значение функции равно 0. | 1. В таблице истинности отмечаем те наборы переменных, на которых значение функции равно 0. | ||
− | + | {| class="wikitable" style="width:10cm" border=1 | |
− | {| class="wikitable | ||
|+ | |+ | ||
|-align="center" bgcolor=#EEEEFF | |-align="center" bgcolor=#EEEEFF | ||
Строка 72: | Строка 71: | ||
| 1 || 1 || 1 || 1 | | 1 || 1 || 1 || 1 | ||
|} | |} | ||
− | |||
− | |||
− | |||
− | |||
2. Для каждого отмеченного набора записываем конъюнкцию всех переменных по следующему правилу : если значение некоторой переменной есть 0, то в дизъюнкцию включаем саму переменную, иначе ее отрицание. | 2. Для каждого отмеченного набора записываем конъюнкцию всех переменных по следующему правилу : если значение некоторой переменной есть 0, то в дизъюнкцию включаем саму переменную, иначе ее отрицание. | ||
− | + | {| class="wikitable" style="width:16cm" border=1 | |
− | {| class="wikitable" | ||
|+ | |+ | ||
|-align="center" bgcolor=#EEEEFF | |-align="center" bgcolor=#EEEEFF | ||
| x || y || z || <tex>med(x,y,z)</tex> || | | x || y || z || <tex>med(x,y,z)</tex> || | ||
|-align="center" bgcolor=#F0F0F0 | |-align="center" bgcolor=#F0F0F0 | ||
− | + | ! 0 || 0 || 0 || 0 || <tex>( x \lor y \lor z)</tex> | |
|-align="center" bgcolor=#F0F0F0 | |-align="center" bgcolor=#F0F0F0 | ||
− | + | ! 0 || 0 || 1 || 0 || <tex>( x \lor y \lor \overline{z})</tex> | |
|-align="center" bgcolor=#F0F0F0 | |-align="center" bgcolor=#F0F0F0 | ||
− | + | ! 0 || 1 || 0 || 0 || <tex>(x \lor \overline{y} \lor z)</tex> | |
|-align="center" bgcolor=#F0F0F0 | |-align="center" bgcolor=#F0F0F0 | ||
− | + | | 0 || 1 || 1 || 1 || | |
|-align="center" bgcolor=#F0F0F0 | |-align="center" bgcolor=#F0F0F0 | ||
− | + | ! 1 || 0 || 0 || 0 || <tex>(\overline{x} \lor y \lor z)</tex> | |
|-align="center" bgcolor=#F0F0F0 | |-align="center" bgcolor=#F0F0F0 | ||
− | + | | 1 || 0 || 1 || 1 || | |
|-align="center" bgcolor=#F0F0F0 | |-align="center" bgcolor=#F0F0F0 | ||
− | + | | 1 || 1 || 0 || 1 || | |
|-align="center" bgcolor=#F0F0F0 | |-align="center" bgcolor=#F0F0F0 | ||
− | + | | 1 || 1 || 1 || 1 || | |
|} | |} | ||
− | |||
3. Все полученные дизъюнкции связываем операциями конъюнкции. | 3. Все полученные дизъюнкции связываем операциями конъюнкции. |
Версия 08:11, 18 октября 2011
Содержание
КНФ
Определение: |
Простой дизъюнкцией или дизъюнктом называется дизъюнкция одной или нескольких переменных или их отрицаний, причём каждая переменная встречается не более одного раза. |
Элементарная дизъюнкция
- правильная, если в неё каждая переменная входит не более одного раза (включая отрицание);
- полная, если в неё каждая переменная (или её отрицание) входит ровно 1 раз;
- монотонная, если она не содержит отрицаний переменных.
Определение: |
КНФ (Конъюнктивная Нормальная Форма) — нормальная форма, в которой булева функция имеет вид конъюнкции нескольких простых дизъюнктов. |
Пример КНФ:
КНФ может быть преобразована к эквивалентной ей ДНФ путём раскрытия скобок по правилу:
, которое выражает дистрибутивность конъюнкции относительно дизъюнкции. После этого необходимо в каждой конъюнкции удалить повторяющиеся переменные или их отрицания, а также выбросить из дизъюнкции все конъюнкции, в которых встречается переменная вместе со своим отрицанием. При этом результатом не обязательно будет СДНФ, даже если исходная КНФ была СКНФ. Точно также можно всегда перейти от ДНФ к КНФ. Для этого следует использовать правило , выражающее дистрибутивность дизъюнкции относительно конъюнкции. Результат нужно преобразовать описанным выше способом, заменив слово «конъюнкция» на «дизъюнкция» и наоборот.СКНФ
Определение: |
СКНФ (Совершенная Конъюнктивная Нормальная Форма) — это такая КНФ, которая удовлетворяет условиям:
|
Пример СКНФ:
Теорема: |
Для любой булевой функции , не равной тождественной единице, существует СКНФ, ее задающая. |
Доказательство: |
Поскольку инверсия функции равна единице на тех наборах, на которых равна нулю, то СДНФ для можно записать следующим образом: , где обозначает наличие или отсутствие отрицание приНайдём инверсию левой и правой части выражения: Применяя дважды к полученному в правой части выражению правило де Моргана, получаем: Последнее выражение и является СКНФ. Так как СКНФ получена из СДНФ, которая может быть посторена для любой функции, то теорема доказана. |
Алгоритм построения СКНФ по таблице истинности
- В таблице истинности отмечаем те наборы переменных, на которых значение функции равно 0.
- Для каждого отмеченного набора записываем конъюнкцию всех переменных по следующему правилу : если значение некоторой переменной есть 0, то в дизъюнкцию включаем саму переменную, иначе ее отрицание.
- Все полученные дизъюнкции связываем операциями конъюнкции.
Пример построения СКНФ
1. В таблице истинности отмечаем те наборы переменных, на которых значение функции равно 0.
x | y | z | |
0 | 0 | 0 | 0 |
---|---|---|---|
0 | 0 | 1 | 0 |
0 | 1 | 0 | 0 |
0 | 1 | 1 | 1 |
1 | 0 | 0 | 0 |
1 | 0 | 1 | 1 |
1 | 1 | 0 | 1 |
1 | 1 | 1 | 1 |
2. Для каждого отмеченного набора записываем конъюнкцию всех переменных по следующему правилу : если значение некоторой переменной есть 0, то в дизъюнкцию включаем саму переменную, иначе ее отрицание.
x | y | z | ||
0 | 0 | 0 | 0 | |
---|---|---|---|---|
0 | 0 | 1 | 0 | |
0 | 1 | 0 | 0 | |
0 | 1 | 1 | 1 | |
1 | 0 | 0 | 0 | |
1 | 0 | 1 | 1 | |
1 | 1 | 0 | 1 | |
1 | 1 | 1 | 1 |
3. Все полученные дизъюнкции связываем операциями конъюнкции.
Примеры СКНФ для некоторых функций
Стрелка Пирса:
Исключающее или: