ДНФ — различия между версиями
Permenko (обсуждение | вклад) (→) |
Permenko (обсуждение | вклад) (→Алгоритм построения СДНФ по таблице истинности) |
||
Строка 40: | Строка 40: | ||
}} | }} | ||
− | == | + | == Пример построения СДНФ == |
− | + | 1. В таблице истинности отмечаем те наборы переменных, на которых значение функции равно 1. | |
− | + | ||
− | + | <center> | |
+ | {| class="wikitable" align="left" style="width:29cm" border=1 | ||
+ | |+ | ||
+ | |-align="center" bgcolor=#EEEEFF | ||
+ | ! x || y || z || <xyz> | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | | 0 || 0 || 0 || 0 | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | | 1 || 0 || 1 || 0 | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | | 0 || 1 || 0 || 0 | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | ! 0 || 1 || 1 || 1 | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | | 1 || 0 || 0 || 0 | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | ! 1 || 0 || 1 || 1 | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | ! 1 || 1 || 0 || 1 | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | ! 1 || 1 || 1 || 1 | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | 2. Для каждого отмеченного набора записываем конъюнкцию всех переменных по следующему правилу: если значение некоторой переменной есть 1, то в конъюнкцию включаем саму переменную, иначе ее отрицание. | ||
+ | |||
+ | <center> | ||
+ | {| class="wikitable" align="left" style="width:29cm" border=1 | ||
+ | |+ | ||
+ | |-align="center" bgcolor=#EEEEFF | ||
+ | ! x || y || z || <xyz> || | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | | 0 || 0 || 0 || 0 || | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | | 1 || 0 || 1 || 0 || | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | | 0 || 1 || 0 || 0 || | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | ! 0 || 1 || 1 || 1 || <tex>(\overline{x} \land y \land z)</tex> | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | | 1 || 0 || 0 || 0 || | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | ! 1 || 0 || 1 || 1 || <tex>(x \land \overline{y} \land z)</tex> | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | ! 1 || 1 || 0 || 1 || <tex>(x \land y \land \overline{z})</tex> | ||
+ | |-align="center" bgcolor=#F0F0F0 | ||
+ | ! 1 || 1 || 1 || 1 || <tex>(x \land y \land z)</tex> | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | 3. Все полученные конъюнкции связываем операциями дизъюнкции. | ||
+ | |||
+ | <tex>f(x,y,z) = (x \land y \land z) \lor (\overline{x} \land y \land z) \lor (x \land \overline{y} \land z) \lor (x \land y \land \overline{z})</tex> | ||
==Примеры СДНФ для некоторых функций== | ==Примеры СДНФ для некоторых функций== |
Версия 10:55, 15 октября 2011
Содержание
Определение
Определение: |
ДНФ (Дизъюнктивная Нормальная Форма) — нормальная форма, в которой булева функция имеет вид дизъюнкции нескольких конъюнктов. |
Пример ДНФ:
Определение: |
СДНФ (Совершенная Дизъюнктивная Нормальная Форма) — это такая ДНФ, которая удовлетворяет условиям:
|
Пример СДНФ:
Теорема: |
Для любой булевой функции , не равной тождественному нулю, существует СДНФ, ее задающая. |
Доказательство: |
Для любой булевой функции выполняется следующее соотношение, называемое разложением Шеннона.
Данное соотношение легко проверить подстановкой всевозможных значений ( и ). Эта формула позволяет выносить за знак функции. Последовательно вынося , ,.., за знак , получаем следующую формулу :
Т.к применение данного соотношения к каждой из переменных увеличивает количество дизъюнктивных членов в два раза, то для функции от переменных мы имеем дизъюнктивных членов. Каждый из них соответствует значению функции на одном из возможных наборов значений n переменных. Если на некотором наборе , то весь соответствующий дизъюнктивный член также равен нулю и из представления данной функции его можно исключить. Если же , то в соответствующем дизъюннктивном члене само значение функции можно опустить. В результате для произвольной функции была построена СДНФ. |
Пример построения СДНФ
1. В таблице истинности отмечаем те наборы переменных, на которых значение функции равно 1.
x | y | z | <xyz> |
---|---|---|---|
0 | 0 | 0 | 0 |
1 | 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 | <xyz> | |
---|---|---|---|---|
0 | 0 | 0 | 0 | |
1 | 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. Все полученные конъюнкции связываем операциями дизъюнкции.
Примеры СДНФ для некоторых функций
Стрелка Пирса:
Медиана трёх:
Ссылки
Пример построения СДНФ
x | y | z | <xyz> | |
---|---|---|---|---|
0 | 0 | 0 | 0 | |
1 | 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 |