我在处理布尔逻辑公式时所见到的大多数内容都首先说明了将其转换为CNF或DNF形式的过程。 Wikipedia说它“在自动定理证明中很有用”,但仅此而已。
想知道为什么必须执行此步骤,在哪个算法中利用了它的哪个方面,等等。在不了解更多信息的情况下,似乎某些标准算法会利用此功能,然后再进行所有后续操作论文会说这是一项要求。但这也许不是必需的。
答案 0 :(得分:2)
在许多字段中,如果先对输入进行标准化,则算法会更简单。
对于逻辑公式,主要问题是它们可以任意深度嵌套。因此,将它们展平并赋予它们规则的结构在直觉上是有意义的。
事实证明,转换为clauses(尤其是Horn clauses)是最有用的。它们是SDL resolution或DPLL之类的过程。这些是逻辑编程,自动定理证明,模型检查,计划等基础工具。