КНФ — различия между версиями
Rybak (обсуждение | вклад) |
|||
Строка 4: | Строка 4: | ||
}} | }} | ||
Пример КНФ: | Пример КНФ: | ||
− | <tex>f(x,y) = (x \lor y) \land (y \lor \ | + | <tex>f(x,y) = (x \lor y) \land (y \lor \overline{z})</tex> |
{{Определение | {{Определение | ||
Строка 14: | Строка 14: | ||
}} | }} | ||
Пример СКНФ: | Пример СКНФ: | ||
− | <tex>f(x,y,z) = (x \lor \ | + | <tex>f(x,y,z) = (x \lor \overline{y} \lor z) \land (x\lor y \lor \overline{z})</tex> |
{{Теорема | {{Теорема | ||
Строка 20: | Строка 20: | ||
Для любой булевой функции <tex>f(\vec{x})</tex>, не равной тождественной единице, существует СКНФ, ее задающая. | Для любой булевой функции <tex>f(\vec{x})</tex>, не равной тождественной единице, существует СКНФ, ее задающая. | ||
|proof = | |proof = | ||
− | Поскольку инверсия функции <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> 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) = \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> | ||
+ | |||
+ | Последнее выражение и является СКНФ. Так как СКНФ получена из СДНФ, которая может быть посторена для любой функции, то теорема доказана. | ||
}} | }} | ||
==Алгоритм построения СКНФ по таблице истинности== | ==Алгоритм построения СКНФ по таблице истинности== | ||
Строка 29: | Строка 37: | ||
==Примеры СКНФ для некоторых функций== | ==Примеры СКНФ для некоторых функций== | ||
− | Стрелка Пирса: <tex> x \downarrow y = (\ | + | Стрелка Пирса: <tex> x \downarrow y = (\overline{x} \lor y) \land (x \lor \overline{y}) \land (\overline{x} \lor \overline{y})</tex> |
− | Медиана трёх: <tex>f(x,y,z) = ( x \lor y \lor z) \land (\ | + | Медиана трёх: <tex>f(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> |
Версия 04:41, 17 декабря 2010
Определение: |
КНФ (Конъюнктивная Нормальная Форма) — нормальная форма, в которой булева функция имеет вид конъюнкции нескольких дизъюнктов. |
Пример КНФ:
Определение: |
СКНФ (Совершенная Конъюнктивная Нормальная Форма) — это такая КНФ, которая удовлетворяет условиям:
|
Пример СКНФ:
Теорема: |
Для любой булевой функции , не равной тождественной единице, существует СКНФ, ее задающая. |
Доказательство: |
Поскольку инверсия функции равна единице на тех наборах, на которых равна нулю, то СДНФ для можно записать следующим образом:Найдём инверсию левой и правой части выражения: Применяя дважды к полученному в правой части выражению правило де Моргана, получаем: Последнее выражение и является СКНФ. Так как СКНФ получена из СДНФ, которая может быть посторена для любой функции, то теорема доказана. |
Алгоритм построения СКНФ по таблице истинности
- В таблице отмечаем наборы переменных, которые приводят логическое выражение в состояние нуля.
- В дизъюнкцию записываем переменную без инверсии, если она в наборе равна 0, и с инверсией, если она равна 1.
- Полученные дизъюнкции связываем операциями конъюнкции
Примеры СКНФ для некоторых функций
Стрелка Пирса:
Медиана трёх: