Logic 连接范式的写作条件

Logic 连接范式的写作条件,logic,conditional-statements,boolean-logic,conjunctive-normal-form,Logic,Conditional Statements,Boolean Logic,Conjunctive Normal Form,合取范式(CNF)是命题公式的标准化表示法,它规定每个公式都应写成析取的合取。每个布尔公式都可以转换为CNF。例如: A |(B&C) 在CNF中有如下代表: (A | B)和(A | C) 在编程中,用CNF编写条件语句是最佳做法吗?不,这不是一个好主意。主要用于理论计算机科学。CNF中有求解公式的算法,并给出了时间复杂度和NP难度的证明 从实用的角度来看,您应该使用最“自然”地描述逻辑的布尔运算符编写代码。这意味着充分利用嵌套表达式、异或、否定等运算符。正如您举例说明的,CNF经常与“自然性

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

A |(B&C)

在CNF中有如下代表:

(A | B)和(A | C)


在编程中,用CNF编写条件语句是最佳做法吗?

不,这不是一个好主意。主要用于理论计算机科学。CNF中有求解公式的算法,并给出了时间复杂度和NP难度的证明

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

从理论上讲,在最坏的情况下,包含n个运算符的无限制布尔公式可以转换为长度为n的指数的CNF公式。因此,CNF可能会大量破坏一个公式。说明此行为的一系列示例:

  • (A&B)|(C&D)==
    (A | C)和(A | D)以及(B | C)和(B | D)
  • (A&B)|(C&D)|(E&F)==
    (A | C | E)&(A | C | F)&(A | D | E)&(A | D | F)&(B | C | E)&(B | C | F)&(B | D | E)&(B | D | F)
  • (A&B)|(C&D)|(E&F)|(G&H)=
    (A)A|CよCよCよCよCよCよC CよC C CよC C|C C|C C|C C|C C C| E G)G)和(A(A124政政音)C C124卡卡卡卡卡卡卡迪昂C|C C C C C C C C C124凯凯凯凯凯凯凯凯旋(C)G G G)G G)G)G)G)G)G和(A(A(A(A(A)C124卡卡卡卡卡卡卡卡卡卡卡卡卡卡卡卡卡迪迪迪迪迪迪迪迪昂)C(A)C124切切切切切切切切切切切切切切切切切切切切切切切切切切切切切(B | C | F | G)&(B | C | F | H)&(B | D | E | G)&(B | D | E | H)&(B | D | F | G)&(B | D | F | H)

您刚刚回答了自己的问题。CNF中的第二个表达式更大,因此计算效率更低,更难阅读。