首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结合范式的书写条件

结合范式的书写条件
EN

Stack Overflow用户
提问于 2016-04-01 14:17:26
回答 1查看 644关注 0票数 2

合合范式(CNF)是命题公式的一种标准化表示法,它规定每一个公式都应写成一个断点连词。每个布尔公式都可以转换为CNF。例如:

A | (B & C)

在CNF中有如下表示:

(A | B) & (A | C)

用CNF编写条件词是编程的最佳实践吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-03 17:57:22

不,这不是个好主意。合合范式主要用于理论计算机科学。在CNF中有求解公式的算法,并证明了算法的时间复杂度和NP-硬度.

从务实的角度来看,您应该使用布尔运算符编写代码,这些运算符最“自然”地描述逻辑。这意味着充分利用嵌套表达式、运算符(如XOR、否定句等)。正如你所举的例子,CNF经常与这个“自然”的目标相矛盾,因为这个表达是更长的,并且经常重复子表达式。

作为理论上的补充,在最坏的情况下,包含n个算子的无限制布尔公式可以转化为一个长度为n的CNF公式,因此CNF可以很大程度地炸掉一个公式。演示这种行为的一系列示例:

  • (A & B) \x{e76f} (C & D) == (A \x{e76f}\x{e76f} (A \x{e76f}\x{e76f}(
  • (A & B) \x{e76f}\x{e76f} (C & D) \x{e76f} (E & F) == (A \x{e76f}\x{e76f}(\x{e76f}\x{e76f}\x
  • (A & B) \x{e76f}\x{e76f} (G & H) == (A \x{e76f}\x{e76f}\x{e76f}(\x{e76f}\x{e76f}\x{e76f}(\x{e76f}\x{e76f}(B
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36358673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档