Совершенная дизъюнктивная нормальная форма

Материал из testwiki
Перейти к навигации Перейти к поиску

Соверше́нная дизъюнкти́вная норма́льная фо́рма (СДНФ) — одна из форм представления функции алгебры логики (булевой функции) в виде логического выражения. Представляет собой частный случай ДНФ, удовлетворяющий следующим трём условиям[1]:

  • в ней нет одинаковых слагаемых (элементарных конъюнкций);
  • в каждом слагаемом нет повторяющихся переменных;
  • каждое слагаемое содержит все переменные, от которых зависит булева функция (каждая переменная может входить в слагаемое либо в прямой, либо в инверсной форме).

Любая булева формула, не являющаяся тождественно ложной, может быть приведена к СДНФ, причём единственным образом, то есть для любой выполнимой функции алгебры логики существует своя СДНФ, причём единственная[2].

Краткая теория

ДНФ представляет собой «сумму произведений», причём в качестве операции «умножения» выступает операция И (конъюнкция), а в качестве операции «сложения» — операция ИЛИ (дизъюнкция). Сомножителями являются различные переменные, причём они могут входить в произведение как в прямом, так и в инверсном виде.

Ниже приведён пример ДНФ:

F(A,B,C,D,E)=A¯B+AB¯E+BC¯D.

В составе ДНФ, вообще говоря, могут присутствовать повторяющиеся слагаемые, а в составе каждого слагаемого — повторяющиеся сомножители, например:

F(A,B,C,D,E)=A¯BB¯+AB¯EA+BC¯D+BC¯D.

С математической точки зрения такое клонирование бессмысленно, так как в булевой алгебре умножение любого выражения на само себя и сложение выражения с самим собой не меняет результата (x+x=x;xx=x), а сложение выражения с собственной инверсией и умножение на собственную инверсию даёт константы (x+x¯=1;xx¯=0). В последнем выражении можно удалить повторяющиеся слагаемые и сомножители следующим образом:

F(A,B,C,D,E)=A¯BB¯+AB¯EA+BC¯D+BC¯D=A¯(BB¯)+(AA)B¯E+BC¯D=A¯0+AB¯E+BC¯D=AB¯E+BC¯D.

По этой причине ДНФ с повторяющимися слагаемыми и сомножителями используются обычно только со вспомогательными целями, например, при аналитическом преобразовании выражений.

СДНФ является канонической формой представления булевой функции в виде ДНФ, в которой повторы слагаемых и сомножителей запрещены. Кроме того, в каждом слагаемом должны присутствовать все переменные (в прямой или инверсной форме).

Ниже приведён пример СДНФ:

F(A,B,C,D,E)=A¯BCDE+AB¯CD¯E+ABC¯DE¯.

Значение СДНФ состоит в том, что

  • для каждой конкретной функции её СДНФ единственна и однозначна;
  • СДНФ имеет однозначное соответствие с таблицей истинности функции. Каждое слагаемое СДНФ соответствует одной строке в таблице истинности, где функция равна единице. Таким образом, число слагаемых в СДНФ равно числу единичных значений, которые принимает булева функция в своей области определения;
  • СДНФ элементарно получается из таблицы истинноcти функции;
  • СДНФ удобна в качестве базового выражения для минимизации функции, в ней особенно просто находятся слагаемые, пригодные для «склейки».

Пример нахождения СДНФ

Для того, чтобы получить СДНФ функции, требуется составить её таблицу истинности. К примеру, возьмём одну из таблиц истинности:

x1 x2 x3 f(x1,x2,x3)
0 0 0 1
0 0 1 1
0 1 0 1
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 0

В ячейках результата f(x1,x2,x3) отмечаются лишь те комбинации, которые приводят логическое выражение в состояние единицы. Далее рассматриваются значения переменных, при которых функция равна 1. Если значение переменной равно 0, то она записывается с инверсией. Если значение переменной равно 1, то без инверсии.

Первая строка содержит 1 в указанном поле. Отмечаются значения всех трёх переменных, это:

  • x1=0
  • x2=0
  • x3=0

Нулевые значения — тут все переменные представлены нулями — записываются в конечном выражении инверсией этой переменной. Первый член СДНФ рассматриваемой функции выглядит так: x1x2x3

Переменные второго члена:

  • x1=0
  • x2=0
  • x3=1

x3 в этом случае будет представлен без инверсии: x1x2x3

Таким образом анализируются все ячейки f(x1,x2,x3). Совершенная ДНФ этой функции будет дизъюнкцией всех полученных членов (элементарных конъюнкций).

Совершенная ДНФ этой функции:

f(x1,x2,x3)=(x1x2x3)(x1x2x3)(x1x2x3)(x1x2x3)

См. также

Примечания

Шаблон:Reflist

Шаблон:Нет источников

  1. Ошибка цитирования Неверный тег <ref>; для сносок Vinogradoff не указан текст
  2. Ошибка цитирования Неверный тег <ref>; для сносок Metod не указан текст