Нормальные формы

Нормальные формы являются синтаксически однозначным способом записи формулы, реализующей заданную функцию.

Если х - логическая переменная, а σ∈{0,1} то выражение

Xσ = {x если σ=1
¬x если σ=0

или

Xσ = {1 если x=σ
0 если x≠σ

называется литерой. Литеры x и ¬x называются контрарными. Конъюнктом называется конъюнкция литер. Дизъюнктом называется дизъюнкция литер. Например, формулы XY¬Z и XYX¬X являются конъюнктами, формулы XvYv¬Z и XvYv¬X - дизъюнктами, а формула ¬Z является одновременно и конъюнктом и дизъюнктом.

Дизъюнктивной нормальной формой (ДНФ) называется дизъюнкция конечного числа конъюнктов.

Конъюнктивной нормальной формой (КНФ) называется конъюнкция конечного числа дизъюнктов.

Более просто: ДНФ - это сумма произведений, а КНФ - это произведение логических сумм.

Примеры.

1. XYvYZvX - это ДНФ (сумма произведений).

2. (Xv¬Yv¬Z)(XvY)Z - это КНФ (произведение сумм).

3. ¬XvYvZv¬W - это ДНФ и КНФ (одновременно).

4. ¬XY¬ZW - это ДНФ и КНФ (одновременно).

5. (XvXvY)(YvZvX)Z - это КНФ.

6. XY¬Z и XYX¬X - это ДНФ.

7. X(XvYZ)¬(X¬YZ) - это не нормальная форма (не ДНФ и не КНФ).

Пусть функция f записана в базисе S1. Данная функция приводится к нормальной форме следующим путем:

1) используем законы де Моргана, чтобы преобразовать формулу к виду, в котором знаки отрицания относятся только к отдельным переменным;

2) применяем правило снятия двойного отрицания: ¬(¬X)=X

3) далее использовать законы дистрибутивности, причем необходимо использовать первый закон дистрибутивности для приведения к ДНФ

H1&(H2vH3)=(H1&H2)v(H1&H3),

и второй закон дистрибутивности для приведения к КНФ.

H1v(H2&H3)=(H1vH2)&(H1vH3).

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

Пример: Для приведения к ДНФ используем 1-ый акон дистрибутивности.

X¬Y¬(XY¬vZ) = X¬Y(¬Xv¬Yv¬(¬Z))(YvZ) =

- это КНФ

=(0vX¬YvX¬YZ)(YvZ)=(X¬YvX¬YZ)(YvZ)=

- это другая КНФ

=X¬YYvX¬YZYvX¬YZvX¬YZZ = 0v0vX¬YZvX¬YZ = X¬YZvX¬YZ

- это ДНФ

Пример: Для приведения к КНФ необходимо использовать второй закон дистрибутивности.

XvY¬(XYv¬Z) = XvY(¬(XY)¬(¬Z)) = XvY(¬Xv¬Y)Z = XvYZ(¬Xv¬Y) = (XvYZ)(Xv¬Xv¬Y) =

=(XvY)(XvZ)(1v¬Y) = (XvY)(XvZ) - это КНФ