КНФ — различия между версиями
Permenko (обсуждение | вклад) (→Алгоритм построения СКНФ по таблице истинности) |
Melnik (обсуждение | вклад) (→Определение) |
||
Строка 2: | Строка 2: | ||
{{Определение | {{Определение | ||
|definition = | |definition = | ||
− | КНФ (Конъюнктивная Нормальная Форма) — нормальная форма, в которой [[Определение булевой функции|булева функция]] имеет вид конъюнкции нескольких дизъюнктов. | + | Простой дизъюнкцией или дизъюнктом называется дизъюнкция одной или нескольких переменных или их отрицаний, причём каждая переменная входит в неё не более одного раза. |
+ | }} | ||
+ | |||
+ | {{Определение | ||
+ | |definition = | ||
+ | КНФ (Конъюнктивная Нормальная Форма) — нормальная форма, в которой [[Определение булевой функции|булева функция]] имеет вид конъюнкции нескольких простых дизъюнктов. | ||
}} | }} | ||
Пример КНФ: | Пример КНФ: | ||
<tex>f(x,y) = (x \lor y) \land (y \lor \overline{z})</tex> | <tex>f(x,y) = (x \lor y) \land (y \lor \overline{z})</tex> | ||
+ | |||
+ | КНФ может быть преобразована к эквивалентной ей ДНФ путём раскрытия скобок по правилу: <tex>a (b\lor c)\to a b\lor a c</tex>, которое выражает дистрибутивность конъюнкции относительно дизъюнкции. После этого необходимо в каждой конъюнкции удалить повторяющиеся переменные или их отрицания, а также выбросить из дизъюнкции все конъюнкции, в которых встречается переменная вместе со своим отрицанием. При этом результатом не обязательно будет СДНФ, даже если исходная КНФ была СКНФ. Точно также можно всегда перейти от ДНФ к КНФ. Для этого следует использовать правило <tex>a\lor b c\to (a \lor b)(a \lor c)</tex>, выражающее дистрибутивность дизъюнкции относительно конъюнкции. Результат нужно преобразовать описанным выше способом, заменив слово «конъюнкция» на «дизъюнкция» и наоборот. | ||
{{Определение | {{Определение | ||
Строка 32: | Строка 39: | ||
Последнее выражение и является СКНФ. Так как СКНФ получена из СДНФ, которая может быть посторена для любой функции, то теорема доказана. | Последнее выражение и является СКНФ. Так как СКНФ получена из СДНФ, которая может быть посторена для любой функции, то теорема доказана. | ||
}} | }} | ||
+ | |||
==Алгоритм построения СКНФ по таблице истинности== | ==Алгоритм построения СКНФ по таблице истинности== | ||
1. В таблице истинности отмечаем те наборы переменных, на которых значение функции равно 0. | 1. В таблице истинности отмечаем те наборы переменных, на которых значение функции равно 0. |
Версия 00:13, 16 октября 2011
Содержание
Определение
Определение: |
Простой дизъюнкцией или дизъюнктом называется дизъюнкция одной или нескольких переменных или их отрицаний, причём каждая переменная входит в неё не более одного раза. |
Определение: |
КНФ (Конъюнктивная Нормальная Форма) — нормальная форма, в которой булева функция имеет вид конъюнкции нескольких простых дизъюнктов. |
Пример КНФ:
КНФ может быть преобразована к эквивалентной ей ДНФ путём раскрытия скобок по правилу:
, которое выражает дистрибутивность конъюнкции относительно дизъюнкции. После этого необходимо в каждой конъюнкции удалить повторяющиеся переменные или их отрицания, а также выбросить из дизъюнкции все конъюнкции, в которых встречается переменная вместе со своим отрицанием. При этом результатом не обязательно будет СДНФ, даже если исходная КНФ была СКНФ. Точно также можно всегда перейти от ДНФ к КНФ. Для этого следует использовать правило , выражающее дистрибутивность дизъюнкции относительно конъюнкции. Результат нужно преобразовать описанным выше способом, заменив слово «конъюнкция» на «дизъюнкция» и наоборот.
Определение: |
СКНФ (Совершенная Конъюнктивная Нормальная Форма) — это такая КНФ, которая удовлетворяет условиям:
|
Пример СКНФ:
Теорема: |
Для любой булевой функции , не равной тождественной единице, существует СКНФ, ее задающая. |
Доказательство: |
Поскольку инверсия функции равна единице на тех наборах, на которых равна нулю, то СДНФ для можно записать следующим образом: , где обозначает наличие или отсутствие отрицание приНайдём инверсию левой и правой части выражения: Применяя дважды к полученному в правой части выражению правило де Моргана, получаем: Последнее выражение и является СКНФ. Так как СКНФ получена из СДНФ, которая может быть посторена для любой функции, то теорема доказана. |
Алгоритм построения СКНФ по таблице истинности
1. В таблице истинности отмечаем те наборы переменных, на которых значение функции равно 0.
x | y | z | <xyz> |
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 | <xyz> | |
---|---|---|---|---|
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. Все полученные дизъюнкции связываем операциями конъюнкции.
Примеры СКНФ для некоторых функций
Стрелка Пирса:
Медиана трёх: