为什么布尔逻辑语句需要采用合取范式 (CNF)
Why a Boolean Logic Statement Needs to be in Conjunctive Normal Form (CNF)
我在处理布尔逻辑公式时看到的大多数内容都是先将其转换为 CNF 或 DNF 形式。 Wikipedia 说是 "useful in automated theorem proving",但仅此而已。
想知道为什么有必要执行此步骤,在哪个算法中利用了它的哪个方面等等。在不了解更多的情况下,似乎某些标准算法会利用此功能,然后随后的所有文件都会将其声明为一项要求。但也许没有必要。
在许多领域,如果先对输入进行归一化,算法会更简单。
在逻辑公式的情况下,主要问题是它们可以任意深度嵌套。因此,将它们展平并赋予它们规则的结构在直觉上是有意义的。
事实证明,转换成clauses, especially if they are Horn clauses, is the most useful. They are what procedures like SDL resolution or DPLL是可行的。这些是逻辑编程、自动定理证明、模型检查、规划等方面的基本工具。
我在处理布尔逻辑公式时看到的大多数内容都是先将其转换为 CNF 或 DNF 形式。 Wikipedia 说是 "useful in automated theorem proving",但仅此而已。
想知道为什么有必要执行此步骤,在哪个算法中利用了它的哪个方面等等。在不了解更多的情况下,似乎某些标准算法会利用此功能,然后随后的所有文件都会将其声明为一项要求。但也许没有必要。
在许多领域,如果先对输入进行归一化,算法会更简单。
在逻辑公式的情况下,主要问题是它们可以任意深度嵌套。因此,将它们展平并赋予它们规则的结构在直觉上是有意义的。
事实证明,转换成clauses, especially if they are Horn clauses, is the most useful. They are what procedures like SDL resolution or DPLL是可行的。这些是逻辑编程、自动定理证明、模型检查、规划等方面的基本工具。