【问题标题】:Boolean function, what is the purpose of DNF and CNF?布尔函数,DNF和CNF的目的是什么?
【发布时间】:2012-08-08 11:20:50
【问题描述】:

布尔函数可以用析取范式 (DNF) 或合取范式 (CNF) 表示。谁能解释为什么这些表格有用?

【问题讨论】:

  • 也许可以用 NAND 或 NOR 门电路实现逻辑!
  • 但逻辑可以用 NAND 和 NOR 实现,也可以是非标准形式

标签: boolean-logic boolean-expression conjunctive-normal-form


【解决方案1】:

CNF 很有用,因为这种形式直接描述了布尔 SAT 问题,虽然 NP 完全,但有许多不完全和启发式指数时间求解器。 CNF 已被进一步标准化为一种称为“DIMACS CNF file format”的文件格式,大多数求解器都可以使用该格式进行操作。因此,例如,芯片行业可以通过转换为 DIMACS CNF 并输入任何可用的求解器来验证其电路设计。 Tseitin Transformation 可以将电路转换为可满足的 CNF。

DNF 实际上并没有那么有用,但是将公式转换为 DNF 意味着可以看到满足该公式的可能分配列表。不幸的是,一般来说,将公式转换为 DNF 很困难,并且可能导致指数级爆炸(非常大的 DNF),这很明显,因为公式中可能有指数级数量的令人满意的分配。

虽然 CNF 与 DNF 相比可以更简洁,但有时很难解释,因为它在从电路转换时可能会丢失结构,因此另一种简洁的形式会很有用。 and-inverter graph 数据结构就是为此目的而设计的;它可以更紧密地模拟电路的结构,因此在某些类型的公式中更容易推理。但是,对其进行操作的求解器并不多。

其他形式包括:

【讨论】:

    【解决方案2】:

    它有助于以某种标准方式表达功能。这样,自动通过许多算法就更容易了。

    这两种形式都可以使用,例如,在自动定理求解中,即解析方法中的 CNF。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-29
      • 2016-04-03
      • 1970-01-01
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多