ДНФ — различия между версиями
Max 27 (обсуждение | вклад) м (Добавил англ. терминов; поправил аббревиатуры; убрал скобки в формулировке теоремы; выделил жирным шрифтом в определениях то, что нужно.) |
Max 27 (обсуждение | вклад) м (Исправил замечания) |
||
Строка 5: | Строка 5: | ||
}} | }} | ||
Простая конъюнкция | Простая конъюнкция | ||
− | * '''полная''', если в неё каждая переменная (или её отрицание) входит ровно 1 раз; | + | * '''полная''', если в неё каждая переменная (или её отрицание) входит ровно <tex> 1 </tex> раз; |
* '''монотонная''', если она не содержит отрицаний переменных. | * '''монотонная''', если она не содержит отрицаний переменных. | ||
Строка 13: | Строка 13: | ||
}} | }} | ||
Пример ДНФ: | Пример ДНФ: | ||
− | <tex>f(x,y,z) = (x \land y) \lor (y \land \neg {z})</tex> | + | <tex>f(x,y,z) = (x \land y) \lor (y \land \neg {z})</tex>. |
== СДНФ == | == СДНФ == | ||
{{Определение | {{Определение | ||
|definition = | |definition = | ||
− | '''Совершенная дизъюнктивная нормальная форма, СДНФ''' (англ. ''perfect disjunctive normal form, PDNF'') — это | + | '''Совершенная дизъюнктивная нормальная форма, СДНФ''' (англ. ''perfect disjunctive normal form, PDNF'') — это ДНФ, удовлетворяющая условиям: |
− | * в ней нет одинаковых простых конъюнкций | + | * в ней нет одинаковых простых конъюнкций, |
− | * каждая простая конъюнкция полная | + | * каждая простая конъюнкция полная. |
}} | }} | ||
Пример СДНФ: | Пример СДНФ: | ||
− | <tex>f(x,y,z) = (x \land \neg {y} \land z) \lor (x \land y \land \neg {z})</tex> | + | <tex>f(x,y,z) = (x \land \neg {y} \land z) \lor (x \land y \land \neg {z})</tex>. |
Строка 30: | Строка 30: | ||
Для любой булевой функции <tex>f(\vec {x})</tex>, не равной тождественному нулю, существует СДНФ, ее задающая. | Для любой булевой функции <tex>f(\vec {x})</tex>, не равной тождественному нулю, существует СДНФ, ее задающая. | ||
|proof = | |proof = | ||
− | Для любой булевой функции выполняется следующее соотношение, называемое '''разложением Шеннона''' | + | Для любой булевой функции выполняется следующее соотношение, называемое '''разложением Шеннона''': |
<tex>f(\vec{x}) = \neg x_i \wedge f(x_1, \dots ,x_{i-1},0,x_{i+1}, \dots ,x_n) \vee | <tex>f(\vec{x}) = \neg x_i \wedge f(x_1, \dots ,x_{i-1},0,x_{i+1}, \dots ,x_n) \vee | ||
− | x_i \wedge f(x_1, \dots ,x_{i-1},1,x_{i+1}, \dots ,x_n)</tex> | + | x_i \wedge f(x_1, \dots ,x_{i-1},1,x_{i+1}, \dots ,x_n)</tex>. |
− | Данное соотношение легко проверить подстановкой возможных значений <tex>x_i</tex> (<tex>0</tex> и <tex>1</tex>). Эта формула позволяет выносить <tex>x_i</tex> за знак функции. Последовательно вынося <tex>x_1</tex>, <tex>x_2</tex>,.., <tex>x_n</tex> за знак <tex>f(\vec{x})</tex>, получаем следующую формулу : | + | Данное соотношение легко проверить подстановкой возможных значений <tex>x_i</tex> (<tex>0</tex> и <tex>1</tex>). Эта формула позволяет выносить <tex>x_i</tex> за знак функции. Последовательно вынося <tex>x_1</tex>, <tex>x_2</tex>,.., <tex>x_n</tex> за знак <tex>f(\vec{x})</tex>, получаем следующую формулу: |
<tex> f(\vec{x}) = \neg x_1 \wedge \neg x_2 \wedge ...\wedge \neg x_{n-1} \wedge \neg x_n \wedge f(0,0,...,0,0)~\vee~</tex> | <tex> f(\vec{x}) = \neg x_1 \wedge \neg x_2 \wedge ...\wedge \neg x_{n-1} \wedge \neg x_n \wedge f(0,0,...,0,0)~\vee~</tex> | ||
Строка 47: | Строка 47: | ||
== Алгоритм построения СДНФ по таблице истинности == | == Алгоритм построения СДНФ по таблице истинности == | ||
− | # В таблице истинности отмечаем те наборы переменных, на которых значение функции равно 1. | + | # В таблице истинности отмечаем те наборы переменных, на которых значение функции равно <tex> 1 </tex>. |
− | # Для каждого отмеченного набора записываем конъюнкцию всех переменных по следующему правилу: если значение некоторой переменной есть 1, то в конъюнкцию включаем саму переменную, иначе ее отрицание. | + | # Для каждого отмеченного набора записываем конъюнкцию всех переменных по следующему правилу: если значение некоторой переменной есть <tex> 1 </tex>, то в конъюнкцию включаем саму переменную, иначе ее отрицание. |
# Все полученные конъюнкции связываем операциями дизъюнкции. | # Все полученные конъюнкции связываем операциями дизъюнкции. | ||
== Пример построения СДНФ для медианы== | == Пример построения СДНФ для медианы== | ||
− | 1. В таблице истинности отмечаем те наборы переменных, на которых значение функции равно 1. | + | 1. В таблице истинности отмечаем те наборы переменных, на которых значение функции равно <tex> 1 </tex>. |
{| class="wikitable" style="width:10cm" border=1 | {| class="wikitable" style="width:10cm" border=1 | ||
|+ | |+ | ||
|-align="center" bgcolor=#EEEEFF | |-align="center" bgcolor=#EEEEFF | ||
− | | x || y || z || <tex> \langle x,y,z \rangle </tex> | + | |<tex> x </tex>||<tex> y </tex>||<tex> z </tex>|| <tex> \langle x,y,z \rangle </tex> |
|-align="center" bgcolor=#FFFFFF | |-align="center" bgcolor=#FFFFFF | ||
| 0 || 0 || 0 || 0 | | 0 || 0 || 0 || 0 | ||
Строка 76: | Строка 76: | ||
|} | |} | ||
− | 2. Для каждого отмеченного набора записываем конъюнкцию всех переменных по следующему правилу: если значение некоторой переменной есть 1, то в конъюнкцию включаем саму переменную, иначе ее отрицание. | + | 2. Для каждого отмеченного набора записываем конъюнкцию всех переменных по следующему правилу: если значение некоторой переменной есть <tex> 1 </tex>, то в конъюнкцию включаем саму переменную, иначе ее отрицание. |
{| class="wikitable" style="width:16cm" border=1 | {| class="wikitable" style="width:16cm" border=1 | ||
|+ | |+ | ||
|-align="center" bgcolor=#EEEEFF | |-align="center" bgcolor=#EEEEFF | ||
− | | x || y || z || <tex> \langle x,y,z \rangle </tex> || | + | |<tex> x </tex>||<tex> y </tex>||<tex> z </tex>|| <tex> \langle x,y,z \rangle </tex> || |
|-align="center" bgcolor=#FFFFFF | |-align="center" bgcolor=#FFFFFF | ||
| 0 || 0 || 0 || 0 || | | 0 || 0 || 0 || 0 || | ||
Строка 100: | Строка 100: | ||
|} | |} | ||
− | 3. Все полученные конъюнкции связываем операциями дизъюнкции | + | 3. Все полученные конъюнкции связываем операциями дизъюнкции: |
− | <tex> \langle x,y,z \rangle = (x \land y \land z) \lor (\neg {x} \land y \land z) \lor (x \land \neg {y} \land z) \lor (x \land y \land \neg {z})</tex> | + | <tex> \langle x,y,z \rangle = (x \land y \land z) \lor (\neg {x} \land y \land z) \lor (x \land \neg {y} \land z) \lor (x \land y \land \neg {z})</tex>. |
==Примеры СДНФ для некоторых функций== | ==Примеры СДНФ для некоторых функций== | ||
− | Стрелка Пирса: <tex> x \downarrow y = (\neg {x} \land \neg {y})</tex> | + | Стрелка Пирса: <tex> x \downarrow y = (\neg {x} \land \neg {y})</tex>. |
− | Исключающее или: <tex> x \oplus y \oplus z = (\overline{x} \land \overline{y} \land z) \lor (\overline{x} \land y \land \overline{z}) \lor (x \land \overline{y} \land \overline{z}) \lor (x \land y \land z)</tex> | + | Исключающее или: <tex> x \oplus y \oplus z = (\overline{x} \land \overline{y} \land z) \lor (\overline{x} \land y \land \overline{z}) \lor (x \land \overline{y} \land \overline{z}) \lor (x \land y \land z)</tex>. |
+ | == См. также == | ||
− | == | + | * [[Сокращенная и минимальная ДНФ]] |
+ | * [[КНФ]] | ||
+ | |||
+ | ==Источники информации == | ||
* [http://ru.wikipedia.org/wiki/%D0%A1%D0%94%D0%9D%D0%A4 СДНФ — Википедия] | * [http://ru.wikipedia.org/wiki/%D0%A1%D0%94%D0%9D%D0%A4 СДНФ — Википедия] | ||
* [http://dvo.sut.ru/libr/himath/w163rabk/index.htm Е.Л Рабкин, Ю.Б. Фарфоровская — Дискретная математика] | * [http://dvo.sut.ru/libr/himath/w163rabk/index.htm Е.Л Рабкин, Ю.Б. Фарфоровская — Дискретная математика] |
Версия 19:43, 6 января 2017
Содержание
ДНФ
Определение: |
Простой конъюнкцией (англ. inclusive conjunction) или конъюнктом (англ. conjunct) называется конъюнкция одной или нескольких переменных или их отрицаний, причём каждая переменная встречается не более одного раза. |
Простая конъюнкция
- полная, если в неё каждая переменная (или её отрицание) входит ровно раз;
- монотонная, если она не содержит отрицаний переменных.
Определение: |
Дизъюнктивная нормальная форма, ДНФ (англ. disjunctive normal form, DNF) — нормальная форма, в которой булева функция имеет вид дизъюнкции нескольких простых конъюнктов. |
Пример ДНФ:
.СДНФ
Определение: |
Совершенная дизъюнктивная нормальная форма, СДНФ (англ. perfect disjunctive normal form, PDNF) — это ДНФ, удовлетворяющая условиям:
|
Пример СДНФ:
.
Теорема: |
Для любой булевой функции , не равной тождественному нулю, существует СДНФ, ее задающая. |
Доказательство: |
Для любой булевой функции выполняется следующее соотношение, называемое разложением Шеннона: . Данное соотношение легко проверить подстановкой возможных значений ( и ). Эта формула позволяет выносить за знак функции. Последовательно вынося , ,.., за знак , получаем следующую формулу:Так как применение данного соотношения к каждой из переменных увеличивает количество конъюнктов в два раза, то для функции от переменных мы имеем конъюнктов. Каждый из них соответствует значению функции на одном из возможных наборов значений переменных. Если на некотором наборе , то весь соответствующий конъюнкт также равен нулю и из представления данной функции его можно исключить. Если же , то в соответствующем конъюнкте само значение функции можно опустить. В результате для произвольной функции была построена СДНФ. |
Алгоритм построения СДНФ по таблице истинности
- В таблице истинности отмечаем те наборы переменных, на которых значение функции равно .
- Для каждого отмеченного набора записываем конъюнкцию всех переменных по следующему правилу: если значение некоторой переменной есть , то в конъюнкцию включаем саму переменную, иначе ее отрицание.
- Все полученные конъюнкции связываем операциями дизъюнкции.
Пример построения СДНФ для медианы
1. В таблице истинности отмечаем те наборы переменных, на которых значение функции равно
.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 | 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. Все полученные конъюнкции связываем операциями дизъюнкции:
.
Примеры СДНФ для некоторых функций
Стрелка Пирса:
.Исключающее или:
.