КНФ — различия между версиями
Permenko (обсуждение | вклад) |
Permenko (обсуждение | вклад) (→Алгоритм построения СКНФ по таблице истинности) |
||
Строка 32: | Строка 32: | ||
}} | }} | ||
==Алгоритм построения СКНФ по таблице истинности== | ==Алгоритм построения СКНФ по таблице истинности== | ||
− | + | 1. В таблице истинности отмечаем те наборы переменных, на которых значение функции равно 0. | |
− | + | ||
− | + | <center> | |
+ | {| class="wikitable" align="left" style="width:29cm" border=1 | ||
+ | |+ | ||
+ | |-align="center" bgcolor=#EEEEFF | ||
+ | | x || y || z || <xyz> | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | ! 0 || 0 || 0 || 0 | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | ! 0 || 0 || 1 || 0 | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | ! 0 || 1 || 0 || 0 | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | | 0 || 1 || 1 || 1 | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | ! 1 || 0 || 0 || 0 | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | | 1 || 0 || 1 || 1 | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | | 1 || 1 || 0 || 1 | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | | 1 || 1 || 1 || 1 | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | 2. Для каждого отмеченного набора записываем конъюнкцию всех переменных по следующему правилу : если значение некоторой переменной есть 0, то в дизъюнкцию включаем саму переменную, иначе ее отрицание. | ||
+ | |||
+ | <center> | ||
+ | {| class="wikitable" align="left" style="width:29cm" border=1 | ||
+ | |+ | ||
+ | |-align="center" bgcolor=#EEEEFF | ||
+ | ! x || y || z || <xyz> || | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | | 0 || 0 || 0 || 0 || ( x \lor y \lor z) | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | | 0 || 0 || 1 || 0 || ( x \lor y \lor \overline{z}) | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | | 0 || 1 || 0 || 0 || (x \lor \overline{y} \lor z) | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | ! 0 || 1 || 1 || 1 || | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | | 1 || 0 || 0 || 0 || (\overline{x} \lor y \lor z) | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | ! 1 || 0 || 1 || 1 || | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | ! 1 || 1 || 0 || 1 || | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | ! 1 || 1 || 1 || 1 || | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | 3. Все полученные дизъюнкции связываем операциями конъюнкции. | ||
+ | |||
+ | <tex>med(x,y,z) = ( x \lor y \lor z) \land (\overline{x} \lor y \lor z) \land (x \lor \overline{y} \lor z) \land ( x \lor y \lor \overline{z})</tex> | ||
+ | |||
==Примеры СКНФ для некоторых функций== | ==Примеры СКНФ для некоторых функций== | ||
Стрелка Пирса: <tex> x \downarrow y = (\overline{x} \lor y) \land (x \lor \overline{y}) \land (\overline{x} \lor \overline{y})</tex> | Стрелка Пирса: <tex> x \downarrow y = (\overline{x} \lor y) \land (x \lor \overline{y}) \land (\overline{x} \lor \overline{y})</tex> |
Версия 11:08, 15 октября 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 | ( x \lor y \lor z) |
0 | 0 | 1 | 0 | ( x \lor y \lor \overline{z}) |
0 | 1 | 0 | 0 | (x \lor \overline{y} \lor z) |
0 | 1 | 1 | 1 | |
1 | 0 | 0 | 0 | (\overline{x} \lor y \lor z) |
1 | 0 | 1 | 1 | |
1 | 1 | 0 | 1 | |
1 | 1 | 1 | 1 |
3. Все полученные дизъюнкции связываем операциями конъюнкции.
Примеры СКНФ для некоторых функций
Стрелка Пирса:
Медиана трёх: