《计算机科学中的数学》学习笔记(03 逻辑公式)


书本信息:

作者: [美] Eric Lehman / [美] F. Thomson Leighton / [美] Albert R. Meyer
出版社: 电子工业出版社
出品方: 博文视点
副标题: 信息与智能时代的必修课
原作名: Mathematics for Computer Science

03 逻辑公式

1、命题的命题

在逻辑和数学中,“命题中的命题"或"从命题得到命题"是指通过逻辑运算符(如"和”(AND)、“或”(OR)、“非”(NOT)等)将一个或多个命题连接起来以形成新的命题。这是形式逻辑的基础,也是计算机科学中布尔逻辑的基础。

  1. 与(AND):如果 P 和 Q 都为真,则 “P AND Q” 为真。否则,“P AND Q” 为假。在数学表示法中,我们通常使用符号 “∧” 来表示 AND,即 “P ∧ Q”。
  2. 或(OR):如果 P 或 Q 至少有一个为真,则 “P OR Q” 为真。否则,“P OR Q” 为假。在数学表示法中,我们通常使用符号 “∨” 来表示 OR,即 “P ∨ Q”。
  3. 非(NOT):如果 P 为真,则 “NOT P” 为假。如果 P 为假,则 “NOT P” 为真。在数学表示法中,我们通常使用符号 “¬” 来表示 NOT,即 “¬P”。
  4. 异或(XOR,exclusive-or):如果 P 和 Q 中只有一个为真,那么 “P XOR Q” 就为真。如果 P 和 Q 都为真,或者都为假,那么 “P XOR Q” 就为假。在数学表示法中,我们通常使用符号 “⊕” 来表示 XOR,即 “P ⊕ Q”。
  5. 当且仅当(IFF,If and only if):如果 P 和 Q 都为真,或者 P 和 Q 都为假,则 “P IFF Q” 为真。否则,“P IFF Q” 为假。在数学表示法中,我们通常使用符号 “↔” 来表示 IFF,即 “P ↔ Q”。
    当且仅当(IFF,If and only if)在布尔逻辑中类似于同或(XNOR,exclusive-not-or),同或(XNOR)运算也可能被表示为 “P XNOR Q” 或 “P ⊙ Q”。
  6. 蕴含(IMPLIES):如果 P 为真且 Q 为假,则 “P IMPLIES Q” 为假。在其他所有情况下,“P IMPLIES Q” 都为真。在数学表示法中,我们通常使用符号 “→” 来表示 IMPLIES,即 “P → Q”。数学蕴含不考虑P与Q之间的因果联系。

本书3.1.3节中,以一个不切实际的说明书为例来说明应用蕴含(IMPLIES)的实际应用,这个例子实在是太烂了,如果C2和C5都为假,但系统却执行了动作2和动作5,即A2和A5为真,书中的式3.1依然为真,依然满足说明书规则!

2、计算机程序中的命题逻辑

真值总是相同的表达式是等价的(equivalent);
在程序中,简化的表达式可以使程序更易于阅读和理解。同时,简化的程序可能运行得更快,因为它们需要的操作更少。在硬件方面,简化表达式可以减少芯片上的逻辑门数量,因为数字电路可以由逻辑公式描述。最小化逻辑公式相当于减少了电路中的门数量。门的最小化的收益可能是巨大的:具有较少门的芯片更小,消耗的电力更少,缺陷率更低,且更便宜。

3、等价性和有效性

3.1 蕴含和逆否

蕴含(IMPLIES)的逆否命题(contrapositive)是指将原命题的前件和后件都取否定,并且交换它们的位置。对于"P IMPLIES Q",其逆否命题是 “NOT(Q) IMPLIES NOT§”。也可以表达为:“P → Q”,其逆否命题是 “¬Q → ¬P”。
蕴含等价于它的逆否命题。

3.2 永真性和可满足性

  1. 永真性(Valid Formula):一个公式如果在所有可能的解释(interpretations)下都为真,那么我们就称这个公式为有效公式或永真式。换句话说,无论你如何为公式中的变量赋值,只要这些赋值是合法的,那么这个公式都会得出真(True)的结果。例如,公式 “P ∨ ¬P” 即"P OR NOT§"就是一个永真式,因为无论 P 的值是真还是假,这个公式都会得出真的结果。等价是永真的一个特例,如果(F iffy G)是永真命题,那么F和G就是等价的。
  2. 可满足性(Satisfiable Formula):如果一个公式在某些解释下为真,那么我们就称这个公式为可满足的。换句话说,存在一种方式为公式中的变量赋值,使得这个公式得出真(True)的结果。这并不意味着所有的赋值都会使公式为真,只是存在至少一种赋值可以使其为真。例如,公式 “P ∧ Q” 是可满足的,因为当 P 和 Q 都为真时,这个公式就为真。

4、命题代数

命题代数是一种形式系统,它提供了一种方法来处理逻辑表达式,特别是关于它们的等价性和推理。

4.1 命题范式

命题范式(Propositions in Normal Form)是一种特定形式的命题逻辑表达式。最常见的两种形式是析取范式(Disjunctive Normal Form, DNF)和合取范式(Conjunctive Normal Form, CNF)。

  1. 析取范式(Disjunctive Normal Form, DNF):一个或多个合取子句的析取(OR)。换句话说,它是对AND取OR的形式。每个合取子句是一个或多个项的合取(AND),其中的项可以是“变量”也可以是“变量的非”。例如,以下是一个析取范式:

( P ∧ Q ) ∨ ( R ∧ ¬ S ) (P \land Q) \lor (R \land \neg S) (PQ)(R¬S)

即 “(P AND Q) OR (R AND NOT(S))”,它是两个合取子句 “(P AND Q)” 和 “(R AND NOT(S))” 的析取。

  1. 合取范式(Conjunctive Normal Form, CNF):一个或多个析取子句的合取(AND)。换句话说,它是对OR取AND的形式。每个析取子句是一个或多个项的析取(OR),其中的项可以是“变量”也可以是“变量的非”。例如,以下是一个合取范式:

( P ∨ Q ) ∧ ( R ∨ ¬ S ) (P \lor Q) \land (R \lor \neg S) (PQ)(R¬S)

即 “(P OR Q) AND (R OR NOT(S))”,它是两个析取子句 “(P OR Q)” 和 “(R OR NOT(S))” 的合取。

每个命题公式都等价于一个析取范式和一个合取范式。

4.2 等价性证明

等价性证明是形式逻辑中的一个重要概念。如果两个逻辑表达式在所有可能的情况下都有相同的真值,那么我们就说这两个表达式是等价的。

任何操作都等价于仅由AND、OR和NOT这三种操作符组成的简单公式,例如"A IMPLIES B"等价于"NOT(B) OR A"。

我们通常使用一些基本的等价公理来证明两个更复杂的表达式是等价的,常用等价公理如下:

交换律(Commutative):合取(AND)和析取(OR)运算符是可交换的。
P ∧ Q ≡ Q ∧ P P \land Q \equiv Q \land P PQQP
即 P AND Q ↔ Q AND P
P ∨ Q ≡ Q ∨ P P \lor Q \equiv Q \lor P PQQP
即 P OR Q ↔ Q OR P

结合律(Associative):合取(AND)和析取(OR)运算符是可结合的。
( P ∧ Q ) ∧ R ≡ P ∧ ( Q ∧ R ) (P \land Q) \land R \equiv P \land (Q \land R) (PQ)RP(QR)
即 (P AND Q) AND R ↔ P AND (Q AND R)
( P ∨ Q ) ∨ R ≡ P ∨ ( Q ∨ R ) (P \lor Q) \lor R \equiv P \lor (Q \lor R) (PQ)RP(QR)
即 (P OR Q) OR R ↔ P OR (Q OR R)

恒等(同一)律(Identity):一个命题与其自身的合取(AND)或析取(OR)等价于该命题本身。
T r u e ∧ P ≡ P {True} \land P \equiv P TruePP
即 True AND P ↔ P
False ∨ P ≡ P \text{False} \lor P \equiv P FalsePP
即 False OR P ↔ P

零率(Zero):一个命题与"假"的合取(AND)等价于"假"。
P ∧ False ≡ False P \land \text{False} \equiv \text{False} PFalseFalse
即 P AND False ↔ False

分配律(Distributive):合取(AND)运算符可以分配到析取(OR)运算符上,反之亦然。
P ∧ ( Q ∨ R ) ≡ ( P ∧ Q ) ∨ ( P ∧ R ) P \land (Q \lor R) \equiv (P \land Q) \lor (P \land R) P(QR)(PQ)(PR)
即P AND (Q OR R) ↔ (P AND Q) OR (P AND R)
P ∨ ( Q ∧ R ) ≡ ( P ∨ Q ) ∧ ( P ∨ R ) P \lor (Q \land R) \equiv (P \lor Q) \land (P \lor R) P(QR)(PQ)(PR)
即P OR (Q AND R) ↔ (P OR Q) AND (P OR R)

幂等律(Idempotence):一个命题与其自身的合取(AND)或析取(OR)等价于该命题本身。
P ∧ P ≡ P P \land P \equiv P PPP
即 P AND P ↔ P
P ∨ P ≡ P P \lor P \equiv P PPP
即 P OR P ↔ P

矛盾律(Contradiction):一个命题与它的否定的合取(AND)等价于"假"。
P ∧ ¬ P ≡ False P \land \neg P \equiv \text{False} P¬PFalse
即 P AND ¬P ↔ False

双重否定律(Double negation):一个命题的否定的否定等价于该命题本身。
¬ ( ¬ P ) ≡ P \neg (\neg P) \equiv P ¬(¬P)P
即 NOT(¬P) ↔ P

永真律(Validity):一个命题与"真"的析取(OR)等价于"真"。
P ∨ True ≡ True P \lor \text{True} \equiv \text{True} PTrueTrue
即 P OR True ↔ True

德摩根定律(De Morgan’s laws):否定一个合取(AND)命题等价于析取(OR)其否定的命题,反之亦然。
¬ ( P ∧ Q ) ≡ ¬ P ∨ ¬ Q \neg (P \land Q) \equiv \neg P \lor \neg Q ¬(PQ)¬P¬Q
即 NOT(P AND Q) ↔ ¬P OR ¬Q
¬ ( P ∨ Q ) ≡ ¬ P ∧ ¬ Q \neg (P \lor Q) \equiv \neg P \land \neg Q ¬(PQ)¬P¬Q
即 NOT(P OR Q) ↔ ¬P AND ¬Q)

5、SAT问题(命题的可满足性判定)

SAT问题,全称为"可满足性问题"(Satisfiability Problem),就是要找出是否存在一种变量赋值方式,使得给定的布尔逻辑公式的结果为真。如果存在这样的赋值方式,我们就说这个公式是"可满足的";如果不存在,我们就说这个公式是"不可满足的"。SAT问题在计算机科学中有很多应用,包括在硬件和软件验证、自动定理证明、人工智能等领域。

SAT问题是一个NP完全问题(本书中说SAT问题是一个 “P vs. NP问题”,使用“P vs. NP问题”或“P=NP问题”的说法都是可以的),NP完全问题是世界七大未解决的数学难题之一,被称为"千禧年大奖难题",任何能够解决这个问题的人都将获得一百万美元的奖金,前段时间有一部名剧叫《天才基本法》,就反复提及了“P=NP问题”。

5.1 NP完全问题(扩展)

“NP完全问题”(NP-Complete Problem)是计算机科学中的一个重要概念,它属于复杂性理论的一部分。复杂性理论是计算机科学的一个分支,研究的是问题解决的难易程度,以及解决问题所需的计算资源(如时间和空间)。

在复杂性理论中,问题被分为多个类别,其中两个重要的类别是P类和NP类。
P类问题(Polynomial Time Problems):即"多项式时间问题",这类问题可以在多项式时间(polynomial time)内由确定性图灵机(一种理论计算模型)找到解。换句话说,存在一个多项式时间的算法可以解决这些问题。
NP类问题(Nondeterministic Polynomial Time Problems):即"非确定性多项式时间问题",这类问题可以在多项式时间内由确定性图灵机验证解,或者可以在多项式时间内由非确定性图灵机(另一种理论计算模型)找到解。

"NP完全问题"是NP类问题中最难的问题。更具体地说,一个问题如果是NP完全的,那么它满足两个条件:

  1. 它自身是一个NP问题。
  2. 所有的NP问题都可以在多项式时间内归约到它。

"归约"在这里是指,我们可以在多项式时间内将任何NP问题转化为一个NP完全问题。这意味着,如果我们找到了一个能在多项式时间内解决任何NP完全问题的算法,那么我们就可以用这个算法在多项式时间内解决所有的NP问题。

然而,尽管科学家们已经找到了许多NP完全问题,但至今还没有人能确定是否存在一个多项式时间的算法可以解决所有的NP完全问题。

P vs. NP问题:P vs. NP问题问的是P类问题是否等同于NP类问题,也就是说,是否所有的NP问题都可以在多项式时间内由确定性图灵机解决。如果答案是肯定的,那么我们就有P=NP;如果答案是否定的,那么我们就有P≠NP。
P=NP问题:P=NP问题实际上就是P vs. NP问题的另一种说法。如果P=NP,那么这意味着存在一种能在多项式时间内解决所有NP问题(包括所有NP完全问题)的算法。这将对许多领域,包括密码学、运筹学、数据库理论等,产生深远的影响。然而,尽管许多研究者已经在这个问题上努力了几十年,但我们至今仍然不知道答案是什么。

5.2 图灵机(扩展)

图灵机是由英国数学家艾伦·图灵在1936年提出的,它是一种抽象的计算设备,用于模拟任何计算过程。

5.2.1 确定性图灵机

确定性图灵机是一种理论模型,由以下几个部分组成:

  1. 一个无限长的纸带(Tape):纸带被划分为一系列的单元格,每个单元格可以存储一个符号(通常是0或1,或者是一个空格)。纸带上的信息可以被读取和修改。
  2. 一个读写头(Head):读写头可以在纸带上移动,读取或写入纸带上的符号。
  3. 一套控制规则(Set of rules):这些规则决定了图灵机在给定的状态和当前读写头下的符号时,应该进行什么样的操作(写入什么符号,向哪个方向移动),以及下一个状态应该是什么。
  4. 一系列的状态(Set of states):其中包括一个初始状态和一个或多个接受状态。当图灵机达到接受状态时,它会停止运行。

在确定性图灵机中,对于任何给定的状态和当前读写头下的符号,控制规则都会明确指定一个唯一的操作和下一个状态。这就意味着,确定性图灵机的行为在任何时刻都是完全确定的,没有任何的随机性或不确定性。

确定性图灵机是理论计算机科学的基础,它为我们提供了一种理解和定义计算的方式。例如,我们通常说一个问题是可计算的,如果存在一个确定性图灵机可以解决这个问题。

5.2.2 非确定性图灵机

非确定性图灵机是确定性图灵机的一个扩展。在非确定性图灵机中,对于给定的状态和输入,可能有多个可能的下一个状态,而机器可以"一次性"探索所有这些可能的状态。

非确定性图灵机的一个关键特性是它的非确定性选择能力。在任何给定的步骤,机器都可以选择在多个可能的动作中进行一种。如果存在任何一种选择序列使得机器最终接受输入,那么我们就说机器接受这个输入。

非确定性图灵机在理论计算机科学中的主要用途是用来定义NP类问题。一个问题属于NP类,如果它的解可以在多项式时间内被一个非确定性图灵机验证。换句话说,如果存在一种方法,使得非确定性图灵机可以在多项式时间内检查一个潜在的解是否正确,那么这个问题就属于NP类。

然而,尽管非确定性图灵机在理论上是有用的,但在实际的计算机硬件中,我们通常只能实现确定性图灵机,因为实际的计算机在任何给定的步骤中只能执行一个操作。因此,非确定性图灵机更多的是作为一种理论工具,帮助我们理解和分类计算问题的复杂性。

5.3 多项式时间(扩展)

在计算机科学中,当我们谈论算法的时间复杂性或运行时间时,我们通常会使用大O符号(O)来描述算法处理输入的速度。这种表示法描述的是输入大小和算法运行时间之间的关系。

当我们说一个算法有"多项式时间(polynomial time)"的复杂性时,我们是指存在一个多项式p(n),使得对于足够大的输入n,算法的运行时间可以被p(n)所界定。换句话说,如果你将输入大小n画在x轴,将运行时间画在y轴,那么算法的运行时间将形成一个多项式曲线。

多项式时间的算法的复杂性通常表示为O(nk),其中n是输入的大小,k是一个常数。例如,如果一个算法的运行时间是输入大小的平方(即,如果你将输入大小加倍,算法的运行时间会增加四倍),那么我们就说这个算法的时间复杂性是O(n2),并且我们说这个算法在多项式时间内运行。

多项式时间算法被认为是"有效"或"可行"的,因为它们的运行时间随着输入大小的增加而增加,但增加的速度是有限的。然而,这并不意味着多项式时间算法总是快的。对于大的输入和高阶的多项式,多项式时间算法可能仍然需要很长的时间来运行。

6、谓词公式(Predicate Formulas)

谓词公式是命题逻辑的扩展,允许我们更精确地描述复杂的条件和关系。

6.1 量词(Quantifiers)

量词是谓词逻辑中的一个关键概念,它允许我们表达"所有"或"存在"的概念。有两种基本的量词:全称量词(universal quantifier)和存在量词(existential quantifier)。全称量词通常表示为 “∀”,读作 “for all”。存在量词通常表示为 “∃”,读作 “there exists”。

一个断言谓词总是为真的陈述被称为全称量化(universal quantification),这是一个动作或过程的描述,表示的是将全称量词应用到某个谓词或公式的过程。例如,如果我们有一个谓词 P(x),那么对它进行全称量化就意味着形成一个新的公式 “∀x P(x)”,这个新的公式表示 “对所有的 x,P(x) 都为真”。

一个断言谓词有时为真的陈述被称为存在量化(existential quantification),这是一个动作或过程的描述,表示的是将存在量词应用到某个谓词或公式的过程。例如,如果我们有一个谓词 P(x),那么对它进行存在量化就意味着形成一个新的公式 “∃x P(x)”,这个新的公式表示 “存在一个 x 使得 P(x) 为真”。

书中翻译不准确

6.2 混合量词(Mixing Quantifiers)

在谓词公式中,我们可以混合使用全称量词和存在量词。例如,公式 “∀x ∃y P(x, y)” 表示 “对所有的 x,都存在一个 y 使得 P(x, y) 为真”。

6.3 量词的顺序(Order of Quantifiers)

量词的顺序很重要,改变量词的顺序可能会改变公式的意义。例如,公式 “∀x ∃y P(x, y)” 和公式 “∃y ∀x P(x, y)” 表达的是两个完全不同的概念。前者表示 “对每个 x,都存在一个可能依赖于 x 的 y 使得 P(x, y) 为真”,而后者表示 “存在一个 y,对所有的 x,P(x, y) 都为真”。

6.4 变量与域(Variables Over One Domain)

在谓词公式中,当所有变量都被理解为从同一个非空集合D中取值时,通常会省略对D的提及。这个未命名的非空集合,即所有变量x和y的取值范围,被称为公式的论域(domain of discourse),或简称为公式的域(domain)。

6.5 否定量词(Negating Quantifiers)

否定量词的规则即量词的德摩根率(De Morgan’s Laws for Quantifiers),否定全称量词得到存在量词,否定存在量词得到全称量词。

  1. 对于全称量词,“¬∀x P(x)” 等价于 “∃x ¬P(x)”。这意味着 “不是所有的 x 都满足 P(x)” 等价于 “存在一个 x 不满足 P(x)”。
  2. 对于存在量词,“¬∃x P(x)” 等价于 “∀x ¬P(x)”。这意味着 “不存在一个 x 满足 P(x)” 等价于 “所有的 x 都不满足 P(x)”。

6.6 谓词公式的永真性(Validity for Predicate Formulas)

和命题逻辑一样,我们也可以讨论谓词公式的永真性。一个谓词公式如果在所有可能的解释和所有可能的变量赋值下都为真,那么我们就称这个公式为有效的或永真的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值