КНФ — различия между версиями
Строка 21: | Строка 21: | ||
|proof = | |proof = | ||
Поскольку инверсия функции <tex>\overline{f}(\vec x)</tex> равна единице на тех наборах, на которых <tex>f(\vec x)</tex> равна нулю, то СДНФ для <tex>\overline{f}(\vec x)</tex> можно записать следующим образом: | Поскольку инверсия функции <tex>\overline{f}(\vec x)</tex> равна единице на тех наборах, на которых <tex>f(\vec x)</tex> равна нулю, то СДНФ для <tex>\overline{f}(\vec x)</tex> можно записать следующим образом: | ||
− | <tex> \overline{f}(\vec x) = \bigvee\limits_{f(\sigma_{1}, \sigma_{2}, ... ,\sigma_{n}) = 0} (x_{1}^{\sigma_{1}} \wedge x_{2}^{\sigma_{2}} \wedge ... \wedge x_{n}^{\sigma_{n}}) </tex> | + | <tex> \overline{f}(\vec x) = \bigvee\limits_{f(x^{\sigma_{1}}, x^{\sigma_{2}}, ... ,x^{\sigma_{n}}) = 0} (x_{1}^{\sigma_{1}} \wedge x_{2}^{\sigma_{2}} \wedge ... \wedge x_{n}^{\sigma_{n}}) </tex>, где <tex> \sigma_{i} </tex> обозначает наличие или отсутствие отрицание при <tex> x_{i} </tex> |
Найдём инверсию левой и правой части выражения: | Найдём инверсию левой и правой части выражения: | ||
− | <tex> f(\vec x) = \overline{\bigvee\limits_{f(\sigma_{1}, \sigma_{2}, ... ,\sigma_{n}) = 0} (x_{1}^{\sigma_{1}} \wedge x_{2}^{\sigma_{2}} \wedge ... \wedge x_{n}^{\sigma_{n}})} </tex> | + | <tex> f(\vec x) = \overline{\bigvee\limits_{f(x^{\sigma_{1}}, x^{\sigma_{2}}, ... ,x^{\sigma_{n}}) = 0} (x_{1}^{\sigma_{1}} \wedge x_{2}^{\sigma_{2}} \wedge ... \wedge x_{n}^{\sigma_{n}})} </tex> |
Применяя дважды к полученному в правой части выражению правило де Моргана, получаем: | Применяя дважды к полученному в правой части выражению правило де Моргана, получаем: | ||
− | <tex> f(\vec x) = \bigwedge\limits_{f(\sigma_{1}, \sigma_{2}, ... ,\sigma_{n}) = 0} (x_{1}^{\overline{\sigma_{1}}} \vee x_{2}^{\overline{\sigma_{2}}} \vee ... \vee x_{n}^{\overline{\sigma_{n}}}) </tex> | + | <tex> f(\vec x) = \bigwedge\limits_{f(x^{\sigma_{1}}, x^{\sigma_{2}}, ... ,x^{\sigma_{n}}) = 0} (x_{1}^{\overline{\sigma_{1}}} \vee x_{2}^{\overline{\sigma_{2}}} \vee ... \vee x_{n}^{\overline{\sigma_{n}}}) </tex> |
Последнее выражение и является СКНФ. Так как СКНФ получена из СДНФ, которая может быть посторена для любой функции, то теорема доказана. | Последнее выражение и является СКНФ. Так как СКНФ получена из СДНФ, которая может быть посторена для любой функции, то теорема доказана. |
Версия 04:49, 17 декабря 2010
Определение: |
КНФ (Конъюнктивная Нормальная Форма) — нормальная форма, в которой булева функция имеет вид конъюнкции нескольких дизъюнктов. |
Пример КНФ:
Определение: |
СКНФ (Совершенная Конъюнктивная Нормальная Форма) — это такая КНФ, которая удовлетворяет условиям:
|
Пример СКНФ:
Теорема: |
Для любой булевой функции , не равной тождественной единице, существует СКНФ, ее задающая. |
Доказательство: |
Поскольку инверсия функции равна единице на тех наборах, на которых равна нулю, то СДНФ для можно записать следующим образом: , где обозначает наличие или отсутствие отрицание приНайдём инверсию левой и правой части выражения: Применяя дважды к полученному в правой части выражению правило де Моргана, получаем: Последнее выражение и является СКНФ. Так как СКНФ получена из СДНФ, которая может быть посторена для любой функции, то теорема доказана. |
Алгоритм построения СКНФ по таблице истинности
- В таблице отмечаем наборы переменных, которые приводят логическое выражение в состояние нуля.
- В дизъюнкцию записываем переменную без инверсии, если она в наборе равна 0, и с инверсией, если она равна 1.
- Полученные дизъюнкции связываем операциями конъюнкции
Примеры СКНФ для некоторых функций
Стрелка Пирса:
Медиана трёх: