КНФ — различия между версиями
(→Алгоритм построения СКНФ по таблице истинности: исправление опечатки) |
Eadm (обсуждение | вклад) |
||
Строка 5: | Строка 5: | ||
}} | }} | ||
Простая дизъюнкция | Простая дизъюнкция | ||
− | * '''полная''', если в неё каждая переменная (или её отрицание) входит ровно | + | * '''полная''', если в неё каждая переменная (или её отрицание) входит ровно один раз; |
* '''монотонная''', если она не содержит отрицаний переменных. | * '''монотонная''', если она не содержит отрицаний переменных. | ||
{{Определение | {{Определение | ||
|definition = | |definition = | ||
− | КНФ ( | + | '''Конъюнктивная нормальная форма, КНФ''' (англ. ''conjunctive normal form, CNF'') {{---}} нормальная форма, в которой [[Определение булевой функции|булева функция]] имеет вид конъюнкции нескольких простых дизъюнктов. |
}} | }} | ||
Пример КНФ: | Пример КНФ: | ||
Строка 18: | Строка 18: | ||
{{Определение | {{Определение | ||
|definition = | |definition = | ||
− | СКНФ ( | + | '''Совершенная конъюнктивная нормальная форма, СКНФ''' (англ. ''perfect conjunctive normal form, PCNF'') — это такая КНФ, которая удовлетворяет условиям: |
* в ней нет одинаковых простых дизъюнкций | * в ней нет одинаковых простых дизъюнкций | ||
* каждая простая дизъюнкция полная | * каждая простая дизъюнкция полная | ||
Строка 24: | Строка 24: | ||
Пример СКНФ: | Пример СКНФ: | ||
<tex>f(x,y,z) = (x \lor \neg{y} \lor z) \land (x\lor y \lor \neg{z})</tex> | <tex>f(x,y,z) = (x \lor \neg{y} \lor z) \land (x\lor y \lor \neg{z})</tex> | ||
− | |||
Строка 44: | Строка 43: | ||
== Алгоритм построения СКНФ по таблице истинности == | == Алгоритм построения СКНФ по таблице истинности == | ||
− | # В таблице истинности отмечаем те наборы переменных, на которых значение функции равно 0. | + | # В таблице истинности отмечаем те наборы переменных, на которых значение функции равно <tex>0</tex>. |
− | # Для каждого отмеченного набора записываем дизъюнкцию всех переменных по следующему правилу: если значение некоторой переменной есть 0, то в дизъюнкцию включаем саму переменную, иначе ее отрицание. | + | # Для каждого отмеченного набора записываем дизъюнкцию всех переменных по следующему правилу: если значение некоторой переменной есть <tex>0</tex>, то в дизъюнкцию включаем саму переменную, иначе ее отрицание. |
# Все полученные дизъюнкции связываем операциями конъюнкции. | # Все полученные дизъюнкции связываем операциями конъюнкции. | ||
== Пример построения СКНФ для медианы== | == Пример построения СКНФ для медианы== | ||
− | 1. В таблице истинности отмечаем те наборы переменных, на которых значение функции равно 0. | + | 1. В таблице истинности отмечаем те наборы переменных, на которых значение функции равно <tex>0</tex>. |
{| class="wikitable" style="width:10cm" border=1 | {| class="wikitable" style="width:10cm" border=1 | ||
Строка 61: | Строка 60: | ||
|-align="center" bgcolor=#F0F0F0 | |-align="center" bgcolor=#F0F0F0 | ||
! 0 || 1 || 0 || 0 | ! 0 || 1 || 0 || 0 | ||
− | |-align="center" bgcolor=# | + | |-align="center" bgcolor=#FFF |
| 0 || 1 || 1 || 1 | | 0 || 1 || 1 || 1 | ||
|-align="center" bgcolor=#F0F0F0 | |-align="center" bgcolor=#F0F0F0 | ||
! 1 || 0 || 0 || 0 | ! 1 || 0 || 0 || 0 | ||
− | |-align="center" bgcolor=# | + | |-align="center" bgcolor=#FFF |
| 1 || 0 || 1 || 1 | | 1 || 0 || 1 || 1 | ||
− | |-align="center" bgcolor=# | + | |-align="center" bgcolor=#FFF |
| 1 || 1 || 0 || 1 | | 1 || 1 || 0 || 1 | ||
− | |-align="center" bgcolor=# | + | |-align="center" bgcolor=#FFF |
| 1 || 1 || 1 || 1 | | 1 || 1 || 1 || 1 | ||
|} | |} | ||
− | 2. Для каждого отмеченного набора записываем конъюнкцию всех переменных по следующему правилу : если значение некоторой переменной есть 0, то в дизъюнкцию включаем саму переменную, иначе ее отрицание. | + | 2. Для каждого отмеченного набора записываем конъюнкцию всех переменных по следующему правилу : если значение некоторой переменной есть <tex>0</tex>, то в дизъюнкцию включаем саму переменную, иначе ее отрицание. |
{| class="wikitable" style="width:16cm" border=1 | {| class="wikitable" style="width:16cm" border=1 | ||
Строка 85: | Строка 84: | ||
|-align="center" bgcolor=#F0F0F0 | |-align="center" bgcolor=#F0F0F0 | ||
! 0 || 1 || 0 || 0 || <tex>(x \lor \neg{y} \lor z)</tex> | ! 0 || 1 || 0 || 0 || <tex>(x \lor \neg{y} \lor z)</tex> | ||
− | |-align="center" bgcolor=# | + | |-align="center" bgcolor=#FFF |
| 0 || 1 || 1 || 1 || | | 0 || 1 || 1 || 1 || | ||
|-align="center" bgcolor=#F0F0F0 | |-align="center" bgcolor=#F0F0F0 | ||
! 1 || 0 || 0 || 0 || <tex>(\neg{x} \lor y \lor z)</tex> | ! 1 || 0 || 0 || 0 || <tex>(\neg{x} \lor y \lor z)</tex> | ||
− | |-align="center" bgcolor=# | + | |-align="center" bgcolor=#FFF |
| 1 || 0 || 1 || 1 || | | 1 || 0 || 1 || 1 || | ||
− | |-align="center" bgcolor=# | + | |-align="center" bgcolor=#FFF |
| 1 || 1 || 0 || 1 || | | 1 || 1 || 0 || 1 || | ||
− | |-align="center" bgcolor=# | + | |-align="center" bgcolor=#FFF |
| 1 || 1 || 1 || 1 || | | 1 || 1 || 1 || 1 || | ||
|} | |} | ||
Строка 106: | Строка 105: | ||
Исключающее или: <tex> x \oplus y \oplus z = (\neg {x} \lor \neg {y} \lor z) \land (\neg {x} \lor y \lor \neg {z}) \land (x \lor \neg {y} \lor \neg {z}) \land (x \lor y \lor z)</tex> | Исключающее или: <tex> x \oplus y \oplus z = (\neg {x} \lor \neg {y} \lor z) \land (\neg {x} \lor y \lor \neg {z}) \land (x \lor \neg {y} \lor \neg {z}) \land (x \lor y \lor z)</tex> | ||
− | == | + | == Источники информации == |
− | * [http://ru.wikipedia.org/wiki/%D0%A1%D0%9A%D0%9D%D0%A4 СКНФ | + | * [http://ru.wikipedia.org/wiki/%D0%A1%D0%9A%D0%9D%D0%A4 Википедия {{---}} СКНФ] |
− | * [http://dvo.sut.ru/libr/himath/w163rabk/index.htm Е.Л Рабкин, Ю.Б. Фарфоровская | + | * [http://dvo.sut.ru/libr/himath/w163rabk/index.htm Е.Л Рабкин, Ю.Б. Фарфоровская {{---}} Дискретная математика] |
[[Категория: Дискретная математика и алгоритмы]] | [[Категория: Дискретная математика и алгоритмы]] | ||
[[Категория: Булевы функции ]] | [[Категория: Булевы функции ]] |
Версия 20:56, 29 ноября 2014
Содержание
КНФ
Определение: |
Простой дизъюнкцией или дизъюнктом называется дизъюнкция одной или нескольких переменных или их отрицаний, причём каждая переменная встречается не более одного раза. |
Простая дизъюнкция
- полная, если в неё каждая переменная (или её отрицание) входит ровно один раз;
- монотонная, если она не содержит отрицаний переменных.
Определение: |
Конъюнктивная нормальная форма, КНФ (англ. conjunctive normal form, CNF) — нормальная форма, в которой булева функция имеет вид конъюнкции нескольких простых дизъюнктов. |
Пример КНФ:
СКНФ
Определение: |
Совершенная конъюнктивная нормальная форма, СКНФ (англ. perfect conjunctive normal form, PCNF) — это такая КНФ, которая удовлетворяет условиям:
|
Пример СКНФ:
Теорема: |
Для любой булевой функции , не равной тождественной единице, существует СКНФ, ее задающая. |
Доказательство: |
Поскольку инверсия функции равна единице на тех наборах, на которых равна нулю, то СДНФ для можно записать следующим образом: , где обозначает наличие или отсутствие отрицание приНайдём инверсию левой и правой части выражения: Применяя дважды к полученному в правой части выражению правило де Моргана, получаем: Последнее выражение и является СКНФ. Так как СКНФ получена из СДНФ, которая может быть посторена для любой функции, не равной тождественному нулю, то теорема доказана. |
Алгоритм построения СКНФ по таблице истинности
- В таблице истинности отмечаем те наборы переменных, на которых значение функции равно .
- Для каждого отмеченного набора записываем дизъюнкцию всех переменных по следующему правилу: если значение некоторой переменной есть , то в дизъюнкцию включаем саму переменную, иначе ее отрицание.
- Все полученные дизъюнкции связываем операциями конъюнкции.
Пример построения СКНФ для медианы
1. В таблице истинности отмечаем те наборы переменных, на которых значение функции равно
.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. Для каждого отмеченного набора записываем конъюнкцию всех переменных по следующему правилу : если значение некоторой переменной есть
, то в дизъюнкцию включаем саму переменную, иначе ее отрицание.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. Все полученные дизъюнкции связываем операциями конъюнкции.
Примеры СКНФ для некоторых функций
Стрелка Пирса:
Исключающее или: