Дизъюнктивные и конъюнктивные нормальные формы

Теория

Любая формула вида х или х над стандартным базисом, где х - произвольное переменное, называется литералом. Таким образом, литерал есть обозначение либо самого переменного х, либо его отрицания. Часто используют такое обозначение: для σ ∈ {0, 1} пишут хσ, понимая под этим само переменное х, если σ = 1, и отрицание х, если σ = 0, т.е.

Подставляя в (6.8) 0 и 1 вместо х, получаем

Часто используют также обозначение х˜, понимая под этим любой из двух литералов - х или х.

Формула вида х˜1х˜2 ... х˜m (соответственно вида х˜1 ∨ х˜2 ∨ ... ∨ х˜m), где все фигурирующие в ней переменные попарно различны, называется элементарной конъюнкцией (соответственно элементарной дизъюнкцией).

Определение 6.4. Дизъюнктивная нормальная форма (ДНФ) от переменных х1, ... , xn - это формула вида К1 ∨ ... ∨ Кm, где Ki, i = 1,m, - элементарная конъюнкция, содержащая некоторые из литералов х1, ... , xn. В том случае, когда в каждую конъюнкцию Ki для каждого номера j = 1,n входит в точности один из литералов х˜j, ДНФ называется совершенной дизъюнктивной нормальной формой (СДНФ).

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

Теорема 6.2. Любая булева функция, отличная от константы 0 ( соответственно от константы 1) пред ставима в виде СДНФ (соответственно в виде СКНФ).

◀ Докажем первое из двух (взаимно двойственных) утверждений теоремы. Для функции f ∈ P2,n, не равной тождественно 0, рассмотрим множество С1f = {α˜: f(α˜) = 1}. Каждый набор из С1f называется конституентой единицы функции f. Так как по условию f ≠ 0 тождественно, то множество С1f не пусто. Каждому набору α˜ ∈ С1f поставим в соответствие элементарную конъюнкцию Кα˜ = xα11 xα22...xαnn, которую также называют конституентой единицы функции f. Ясно, что Кα˜ обращается в единицу только на наборе α˜. Тогда искомой СДНФ для функции f будет

Согласно принципу двойственности, СКИФ для той же функции будет иметь вид

где множество наборов C0f = {α˜: f(α˜) = 0}, и каждый набор α˜ из C0f называют конституентной нуля функции f; при этом элементарная дизъюнкция Dα˜ сопоставляется конституенте нуля α˜ по следующему правилу:

т.е. если в наборе i-я компонента равна 0, то в Dα˜ ставим само переменное xi, если иначе - отрицание переменногоxi (таким образом, дизъюнкция Dα˜ обращается в нуль только на наборе α˜). ▶

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

Рассмотрим в качестве примера построение СДНФ и СКНФ для мажоритарной функции (см. 6.1). Конституентами единицы для нее служат наборы: α˜1 = (0, 1, 1), α˜2 = (1, 0, 1), α˜3= (1, 1, 0) и α˜4 = (1, 1, 1). Им соответствуют элементарные конъюнкции: Кα˜1 = х1х2х3, Кα˜2 = х1х2х3, Кα˜3 = х1х2х3, Кα˜4 = х1х2х3. Тогда СДНФ, представляющая мажоритарную функцию, имеет вид

х1х2х3 ∨ х1х2х3 ∨ х1х2х3 ∨ х1х2х3    (6.9)

Для получения СКНФ для той же функции выпишем все конституенты нуля данной функции: (0, 0, 0), (0, 0, 1), (0, 1, 0), (1, 0, 0). Сопоставим им элементарные дизъюнкции: х1 ∨ х2 ∨ х3, х1 ∨ х2x3, х1x2 ∨ х3 и x1 ∨ х2 ∨ х3 соответственно.

В результате получим СКНФ для мажоритарной функции в виде

1 ∨ х2 ∨ x3) (х1 ∨ х2x 3) (х1x 2 ∨ x3) (x 1 ∨ х2 ∨ x3)     (6.10)

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