YaChudo

Диз'юнктивна нормальна форма

Переглядів: 0. Оновлено 05.11.2026.

Диз'юнкти́вна норма́льна фо́рма (ДНФ) в булевій логіці — нормальна форма в якій булева формула має вид диз'юнкції декількох кон'юнктів (де кон'юнктами називаються кон'юнкції декількох пропозиційних символів або їх заперечень).

Приклади

Наступні формули записані в ДНФ:

A ∨ B {\displaystyle A\lor B}
A {\displaystyle A\!}
( A ∧ B ) ∨ ¬ A {\displaystyle (A\land B)\lor \neg A}
( A ∧ B ∧ ¬ C ) ∨ ( ¬ D ∧ E ∧ F ) ∨ ( C ∧ D ) ∨ B {\displaystyle (A\land B\land \neg C)\lor (\neg D\land E\land F)\lor (C\land D)\lor B}

Наступні формули не є в ДНФ:

¬ ( B ∧ C ) {\displaystyle \neg (B\land C)}
A ∨ ( B ∧ ( C ∨ D ) ) {\displaystyle A\lor (B\land (C\lor D))}

Проте ці формули еквівалентні наступним формулам записаним у диз'юнктивній нормальній формі:

¬ B ∨ ¬ C {\displaystyle \neg B\lor \neg C}
A ∨ ( B ∧ C ) ∨ ( B ∧ D ) . {\displaystyle A\lor (B\land C)\lor (B\land D).}

Приведення булевої формули до ДНФ

Довільна булева формула може бути приведена до ДНФ за допомогою наступного алгоритму:

Крок 1 : Усі логічні зв'язки виразити через кон'юнкцію, диз'юнкцію і заперечення.
Крок 2 : Скасувати всі подвійні заперечення і використати, де можливо, закони де Моргана. Тобто замінити:
¬ ¬ A {\displaystyle \lnot \lnot A} на A {\displaystyle A\;}
¬ ( A ∧ B ) {\displaystyle \lnot (A\land B)} на ( ¬ A ∨ ¬ B ) {\displaystyle (\lnot A\lor \lnot B)}
¬ ( A ∨ B ) {\displaystyle \lnot (A\lor B)} на ( ¬ A ∧ ¬ B ) {\displaystyle (\lnot A\land \lnot B)}
Крок 3 : Використати де можливо дистрибутивність кон'юнкції, тобто замінити:
( A ∧ ( B ∨ C ) ) {\displaystyle (A\land (B\lor C))} ( ( B ∨ C ) ∧ A ) {\displaystyle ((B\lor C)\land A)} на ( ( A ∧ B ) ∨ ( A ∧ C ) ) {\displaystyle ((A\land B)\lor (A\land C))}

Втім, при цьому розмір булевої формули може зрости експоненціально. Так, наприклад, щоб записати наступну формулу буде потрібно 2n кон'юнктів:

( X 1 ∨ Y 1 ) ∧ ( X 2 ∨ Y 2 ) ∧ ⋯ ∧ ( X n ∨ Y n ) {\displaystyle (X_{1}\lor Y_{1})\land (X_{2}\lor Y_{2})\land \dots \land (X_{n}\lor Y_{n})}

КНФ цієї формули має вигляд:

( X 1 ∨ ⋯ ∨ X n − 1 ∨ X n ) ∧ ( X 1 ∧ ⋯ ∧ X n − 1 ∧ Y n ) ∨ ⋯ ∨ ( Y 1 ∧ ⋯ ∧ Y n − 1 ∧ Y n ) . {\displaystyle (X_{1}\vee \cdots \vee X_{n-1}\vee X_{n})\wedge (X_{1}\land \cdots \land X_{n-1}\land Y_{n})\lor \cdots \lor (Y_{1}\land \cdots \land Y_{n-1}\land Y_{n}).}

Формальна граматика, що описує ДНФ

Наступна формальна граматика описує всі формули, приведені до ДНФ:

<ДНФ> → <кон'юнкт>
<ДНФ> → <ДНФ> ∨ <кон'юнкт>
<кон'юнкт> → <літерал>
<кон'юнкт> → (<кон'юнкт> ∧ <літерал>)
<літерал> → <терм>
<літерал> → ¬<терм>

де <терм> позначає довільну булеву змінну.

Див. також

Джерела

Джерело: стаття у Вікіпедії та історія редагувань (автори).