ДНФ — различия между версиями
Permenko (обсуждение | вклад) (→Определение) |
Permenko (обсуждение | вклад) |
||
Строка 52: | Строка 52: | ||
Т.к применение данного соотношения к каждой из переменных увеличивает количество дизъюнктивных членов в два раза, то для функции от <tex>n</tex> переменных мы имеем <tex>2^n</tex> дизъюнктивных членов. Каждый из них соответствует значению функции на одном из <tex>2^n</tex> возможных наборов значений n переменных. Если на некотором наборе <tex>f(\vec{x})=0</tex>, то весь соответствующий дизъюнктивный член также равен нулю и из представления данной функции его можно исключить. Если же <tex> f(\vec{x})=1</tex>, то в соответствующем дизъюннктивном члене само значение функции можно опустить. В результате для произвольной функции была построена СДНФ. | Т.к применение данного соотношения к каждой из переменных увеличивает количество дизъюнктивных членов в два раза, то для функции от <tex>n</tex> переменных мы имеем <tex>2^n</tex> дизъюнктивных членов. Каждый из них соответствует значению функции на одном из <tex>2^n</tex> возможных наборов значений n переменных. Если на некотором наборе <tex>f(\vec{x})=0</tex>, то весь соответствующий дизъюнктивный член также равен нулю и из представления данной функции его можно исключить. Если же <tex> f(\vec{x})=1</tex>, то в соответствующем дизъюннктивном члене само значение функции можно опустить. В результате для произвольной функции была построена СДНФ. | ||
}} | }} | ||
− | + | == Алгоритм построения СКНФ по таблице истинности == | |
+ | # В таблице истинности отмечаем те наборы переменных, на которых значение функции равно 1. | ||
+ | # Для каждого отмеченного набора записываем конъюнкцию всех переменных по следующему правилу: если значение некоторой переменной есть 1, то в конъюнкцию включаем саму переменную, иначе ее отрицание. | ||
+ | # Все полученные конъюнкции связываем операциями дизъюнкции. | ||
== Пример построения СДНФ == | == Пример построения СДНФ == | ||
1. В таблице истинности отмечаем те наборы переменных, на которых значение функции равно 1. | 1. В таблице истинности отмечаем те наборы переменных, на которых значение функции равно 1. | ||
Строка 60: | Строка 63: | ||
|+ | |+ | ||
|-align="center" bgcolor=#EEEEFF | |-align="center" bgcolor=#EEEEFF | ||
− | ! x || y || z || < | + | ! x || y || z || <tex>med(x,y,z)</tex> |
|-align="center" bgcolor=#F0F0F0 | |-align="center" bgcolor=#F0F0F0 | ||
| 0 || 0 || 0 || 0 | | 0 || 0 || 0 || 0 | ||
Строка 86: | Строка 89: | ||
|+ | |+ | ||
|-align="center" bgcolor=#EEEEFF | |-align="center" bgcolor=#EEEEFF | ||
− | + | | x || y || z || <tex>med(x,y,z)</tex> || | |
|-align="center" bgcolor=#F0F0F0 | |-align="center" bgcolor=#F0F0F0 | ||
| 0 || 0 || 0 || 0 || | | 0 || 0 || 0 || 0 || | ||
Строка 116: | Строка 119: | ||
== Ссылки == | == Ссылки == | ||
− | * [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 Е.Л Рабкин, Ю.Б. Фарфоровская — Дискретная математика] |
Версия 07:15, 17 октября 2011
Содержание
ДНФ
Определение: |
Простой конъюнкцией или конъюнктом называется конъюнкция одной или нескольких переменных или их отрицаний, причём каждая переменная встречается не более одного раза. |
Элементарная конъюнкция
- правильная, если в неё каждая переменная входит не более одного раза (включая отрицание);
- полная, если в неё каждая переменная (или её отрицание) входит ровно 1 раз;
- монотонная, если она не содержит отрицаний переменных.
Определение: |
ДНФ (Дизъюнктивная Нормальная Форма) — нормальная форма, в которой булева функция имеет вид дизъюнкции нескольких простых конъюнктов. |
Пример ДНФ:
ДНФ может быть преобразована к эквивалентной ей КНФ путём раскрытия скобок по правилу:
, которое выражает дистрибутивность дизъюнкции относительно конъюнкции. После этого необходимо в каждой дизъюнкции удалить повторяющиеся переменные или их отрицания, а также выбросить из конъюнкции все дизъюнкции, в которых встречается переменная вместе со своим отрицанием. При этом результатом не обязательно будет СКНФ, даже если исходная ДНФ была СДНФ. Точно также можно всегда перейти от КНФ к ДНФ. Для этого следует использовать правило , выражающее дистрибутивность конъюнкции относительно дизъюнкции. Результат нужно преобразовать описанным выше способом, заменив слово «дизъюнкция» на «конъюнкция» и наоборот.СДНФ
Определение: |
СДНФ (Совершенная Дизъюнктивная Нормальная Форма) — это такая ДНФ, которая удовлетворяет условиям:
|
Пример СДНФ:
Теорема: |
Для любой булевой функции , не равной тождественному нулю, существует СДНФ, ее задающая. |
Доказательство: |
Для любой булевой функции выполняется следующее соотношение, называемое разложением Шеннона.
Данное соотношение легко проверить подстановкой всевозможных значений ( и ). Эта формула позволяет выносить за знак функции. Последовательно вынося , ,.., за знак , получаем следующую формулу :
Т.к применение данного соотношения к каждой из переменных увеличивает количество дизъюнктивных членов в два раза, то для функции от переменных мы имеем дизъюнктивных членов. Каждый из них соответствует значению функции на одном из возможных наборов значений n переменных. Если на некотором наборе , то весь соответствующий дизъюнктивный член также равен нулю и из представления данной функции его можно исключить. Если же , то в соответствующем дизъюннктивном члене само значение функции можно опустить. В результате для произвольной функции была построена СДНФ. |
Алгоритм построения СКНФ по таблице истинности
- В таблице истинности отмечаем те наборы переменных, на которых значение функции равно 1.
- Для каждого отмеченного набора записываем конъюнкцию всех переменных по следующему правилу: если значение некоторой переменной есть 1, то в конъюнкцию включаем саму переменную, иначе ее отрицание.
- Все полученные конъюнкции связываем операциями дизъюнкции.
Пример построения СДНФ
1. В таблице истинности отмечаем те наборы переменных, на которых значение функции равно 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. Для каждого отмеченного набора записываем конъюнкцию всех переменных по следующему правилу: если значение некоторой переменной есть 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 |
3. Все полученные конъюнкции связываем операциями дизъюнкции.
Примеры СДНФ для некоторых функций
Стрелка Пирса:
Медиана трёх: