2016-04-01 4 views
2

Конъюнктивная нормальная форма (CNF) является стандартизированной нотной формулой для пропозициональных формул, которые диктуют, что каждая формула должна быть записана как конъюнкция дизъюнкций. Каждая булева формула может быть преобразована в CNF. Так, например:Условия записи в Конъюнктивной нормальной форме

A | (B & C)

Имеет представительство в КНФЕ, как это:

(A | B) & (A | C)

ли это лучшая практика в программировании, чтобы написать условные в КНФЕ?

+0

Вы только что ответили на свой вопрос. Второе выражение в CNF больше и поэтому менее эффективно оценивать и усложнять чтение. –

ответ

2

Нет, это не очень хорошая идея. Conjunctive normal form в основном используется в теоретической информатике. Существуют алгоритмы для решения формул в CNF, а также доказательства временной сложности и NP-твердости.

С прагматичной точки зрения, вы должны написать код с помощью булевых операторов, которые наиболее «естественно» описывают логику. Это означает полное использование вложенных выражений, операторов, таких как XOR, отрицание и т. Д. Как вы показали, CNF часто противоречит этой цели «естественности», потому что выражение длиннее и часто повторяет подвыражения.

В качестве теоретической стороне записки, в худшем случае, неограниченный булева формула, содержащая п операторы могут преобразовать в формулу CNF, длина которого экспоненциально п. Таким образом, CNF потенциально может взорвать формулу на очень большую сумму. Последовательность примеров, иллюстрирующих это поведение:

  • (A & B) | (C & D) ==
    (A | C) & (A | D) & (B | C) & (B | D).
  • (A & B) | (C & D) | (Е & F) ==
    (А | C | Е) & (А | C | F) & (А | D | Е) & (А | D | F) & (B | C | Е) & (B | C | F) & (B | D | E) & (B | D | F).
  • (A & B) | (C & D) | (E & F) | (G & Н) ==
    (А | C | E | G) & (А | C | Е | Н) & (А | C | F | G) & (А | С | Р | Н) & (A | D | E | G) & (A | D | E | H) & (A | D | F | G) & (A | D | F | H) & (B | C | E | G) & ((B | D | E | G) & (B | D | E | H) & (B | D | E | G) B | D | F | G) & (B | D | F | H).
Смежные вопросы