热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

[离散数学]命题逻辑

这里是离散数学第一篇学习笔记qwq,也是我尝试使用Markdown记课上笔记的开始,离散数学是一门研究离散量的科学,是数据结构、算法设计的基础,这里不仅有有趣的逻辑与集合,还会有“

这里是离散数学第一篇学习笔记 qwq,也是我尝试使用 Markdown 记课上笔记的开始,离散数学是一门研究离散量的科学,是数据结构、算法设计的基础,这里不仅有有趣的逻辑与集合,还会有“超级好玩”的群论和图论等待你去探索。就让我们一起畅游这“魔法”的世界吧!

由于离散数学的知识较多,这里是数理逻辑部分的笔记 qwq。

本笔记采用在课上简记,课后完善的模式,有可能因时间不够停更,并且作者认为比较简单的证明和定义会简写甚至略去,并且几乎不会举例子。同时还总是希望尽量不全部按照书上写的定义而通过自己语言来叙述,虽然很多时候最后还是感觉自己表述的不清楚而写的书上的定义。

本学科为 28 课时讲课 + 4 课时实验 (office 315)

似乎没有找到可以显示出课本上所印刷的 “不可兼析取” 符号的 LaTeX 公式,所以使用 \oplus(即 \(\oplus\))来代替。


\[\newcommand{\l}{\leftarrow}

\newcommand{\r}{\rightarrow}

\newcommand{\u}{\uparrow}

\newcommand{\d}{\downarrow}

\newcommand{\L}{\Leftarrow}

\newcommand{\R}{\Rightarrow}

\newcommand{\lr}{\leftrightarrow}

\newcommand{\Lr}{\Leftrightarrow}

\newcommand{\xl}{\xleftarrow}

\newcommand{\xr}{\xrightarrow}

\rule{750px}{1px}

\]

首先给出命题的概念:能表达判断且有确切的真值陈述句。命题的真值只有两种即 True 和 False,但悖论这种自相矛盾的陈述句不是命题,因为它不可能有确切的真值。

我们可以根据命题的描述复杂程度将命题分为原子命题和复合命题,原子命题是一种不可分解为更简单语句的陈述句,复合命题是由若干原子命题通过联结词构成的命题。

为了便于数学的符号化表示,我们需要对联结词进行明确规定并给出其符号表示,下面是一些基本的联结词:(按照优先级排序)





































名称符号意义
否定\(\lnot\)取反
合取\(\and\)
析取\(\or\)可兼或
条件\(\r\)若…则…
双条件(同或)\(\lr\)当且仅当

对于条件句,我们总是遵循善意的推并,即当前件(前提)为假时,无论后件(结论)真值为何,我们总是认为条件句的真值为真。并且在条件句和双条件句中,我们并不要求它们的前件与后件有实际的联系。

有了以上的概念,我们就可以将现实生活中的一些可以被视为命题的陈述句翻译为我们的数学语言了,下文给出了翻译的大致方法:



  1. 找到原语句中包含的原子命题;



  2. 将原语句中的关联词翻译成适当的逻辑联结词;



  3. 将其用数学的符号写出。



值得注意的一点是,关联词 ”只有…才…“ 是条件句。A if B 为 \(B \r A\),A only if B 为 \(A \r B\),A if and only if B 为 \(A \lr B.\)

命题常量为表示确定命题的符号,命题变元为表示任意命题的符号,但其不是命题,原子变元为表示原子命题的命题变元,给命题变元指定值的操作叫做指派。

命题公式采用递归(下文中 1. 称为基础,2. 3. 称为归纳,4. 称为界限)的定义,规定为:



  1. 单个命题变元本身为命题公式;

  2. 如果 \(P\) 为合法的命题公式,则 \(\lnot P\) 也为合法的命题公式;

  3. 如果 \(P, Q\) 为合法的命题公式,则 \((P \and Q), (P \or Q), (P \r Q), (P \lr Q)\) 均为合法的命题公式。

  4. 当且仅当通过若干个命题变元和联结词通过法则 1. 2. 3. 进行有限次的拼接所形成的字符为命题公式。

对于一个命题公式中分量真值的各种指派所形成的各种组合所汇列成表,即为命题公式的真值表。

当给两个命题公式任意一组真值指派,它们的真值始终相等,则两个命题公式等价。我们如果想要证明两个问题中,两个命题公式是否等价,可以通过分别列出其真值表,而由 \(n\) 个命题变元所组成的命题有 \(2^n\) 种不同的真值指派,所以如果要依靠真值表证明,显然过于繁琐。我们可以通过一些法则来化简它们,在下文的推理理论部分会整合此类公式,所以这里先不列出公式。

子公式为一个命题公式的一部分,且这一部分本身是一个合法的命题公式。如果一个命题公式的子公式被其等价的命题公式置换,置换后得到的命题公式与原命题公式等价。

如果一个命题公式,无论对其分量做什么指派,其真值永为真,则称该命题公式为重言式(也称永真式)。如果存在一种对其分量的指派使得命题公式真值可以为真,则称命题公式为可满足的。显然重言式是特殊的可满足式。如果一个命题公式不可满足,则称其为矛盾式(或永假式)。如果 \(A \and B\) 为矛盾式,则称 \(A\)\(B\) 是不相容的。

容易注意到,当且仅当 \(P \lr Q\) 为重言式时,有 \(P \Lr Q\)

我们定义当 \(P \r Q\) 为重言式时,我们称 \(P\) 蕴含 \(Q\),记作 \(P \R Q\)。注意 \(P \r Q\)\(Q \r P\) 并不等价,通过真值表验证,我们有:


\[(P \rightarrow Q) \Leftrightarrow (\lnot Q \rightarrow \lnot P) \\

(Q \rightarrow P) \Leftrightarrow (\lnot P \rightarrow \lnot Q)

\]

其中对 \(P \r Q\) 来说,\(Q \r P\) 称为其逆换式,\(\lnot P \r \lnot Q\) 称为其反换式,\(\lnot Q \r \lnot P\) 称为其逆反式。

如果要证 \(P \R Q\),只需证当 \(P\) 为 1 时,\(Q\) 的真值为 1,或者当 \(Q\) 为 0 时,\(P\) 的真值为 1。这两种情况均可说明 \(P \R Q.\)

\(P \Lr Q\) 当且仅当 \(P \R Q\)\(Q \R P.\)

下面介绍对偶和范式的概念,对偶是指在给定的命题公式中将 \(\and\) 换成 \(\or\)\(\or\) 换成 \(\and\),将 \(\mathbf{T}\) 换为 \(\mathbf{F}\),则改变后的命题公式和原公式互为对偶。命题公式 \(A\) 的对偶式记为 \(A^*\)。我们容易发现,如果 \(A\) 是由 \(n\) 个命题变元 \(P_1, P_2, \cdots, P_n\) 组成(记作 \(A(P_1, P_2, \cdots, P_n)\)),则有:


\[\lnot A(P_1, P_2, \cdots, P_n) \Lr A^*(\lnot P_1, \lnot P_2, \cdots, \lnot P_n)

\]

根据上述结论,我们有一个推论:若 \(A \Lr B\),则 \(A^* \Lr B^*\)

合取范式是形如:


\[A_1 \and A_2 \and \cdots \and A_n \, ,(n \geq 1)

\]

其中 \(A_i \, (1 \leq i \leq n)\) 为由命题变元或其否定所组成的析取式。

析取范式的定义形式和合取范式类似,不再赘述。

容易发现与一个命题公式等价的析取范式有许多个,为了方便,我们希望找到一个较为规范的析取范式,使得每个命题公式只对应一个这样规范化的析取范式。考虑到对于几个等价的命题公式,它们的真值表一定是唯一的,所以我们就希望找到一种将真值表中的值 “翻译” 成命题公式的方法,于是就有了小项。

小项即指 \(n\) 个命题变元的合取式,其中每个命题变元或其否定在式中恰好出现一次,且不与其否定同时出现。显然对于 \(n\) 个命题变元的小项,其有以下性质:



  1. 一个小项的真值为真当且仅当命题变元的真值指派与小项中命题变元的出现形式一一对应;

这里的对应是指,例如对于 3 个命题变元,\(P, Q, R\),我们讨论的小项为 \(P \and \lnot Q \and R\),则当且仅当将 \(P, R\) 指派为 1,\(Q\) 指派为 0,此时该小项的真值才为 1。也就是说对应关系是指将在小项中出现其本身的命题变元指派为 1,出现其否定的命题变元指派为 0。所以我们也可以使用二进制来表示小项,如上文的小项记作 \(m_{101}.\)



  1. 任意两个不同小项的合取为矛盾式;

  2. 所有小项的析取为重言式;

  3. 小项的总数为 \(2^n\) 个。

主析取范式即为仅由小项的析取组成的命题公式,由小项的性质可知,其反映了命题公式的真值表。所以我们很容易得出,一个命题公式所有在真值表中为 \(\mathbf{T}\) 的指派所对应的小项组成的析取为该命题公式的主析取范式。我们同样可以通过逻辑推理将命题公式转化为主析取范式。

我们主要通过以下几步利用逻辑推理将命题公式转化为主析取范式:



  1. 求与命题公式等价的析取范式;

  2. 去除式中为矛盾式的子公式,合并相同的子公式;

  3. 使用同一律补项,结合律展开,使之变为小项的析取式,对小项去重后即得到主析取范式。

对于主析取范式,我们借助了小项的概念,而对于主合取范式,我们则要借助大项的概念。

大项即指 \(n\) 个命题变元的析取式,其中每个命题变元或其否定在式中恰好出现一次,且不与其否定同时出现。我们可以仿照小项的性质,发现大项的以下性质:



  1. 一个大项的真值为假当且仅当命题变元的真值指派与小项中命题变元的出现形式一一对应(对应形式与小项相反,如仍对于 3 个命题变元组成的一个大项 \(P \or \lnot Q \or R\),我们记为 \(M_{010}\));

  2. 任意两个不同大项的析取为重言式;

  3. 所有大项的合取为矛盾式;

  4. 大项的总数为 \(2^n\) 个。

同样我们也有:

主合取范式为仅由大项的合取组成的命题公式,由大项的性质可知,其反映了命题公式的真值表。所以我们很容易得出,一个命题公式所有在真值表中为 \(\mathbf{F}\) 的指派所对应的大项组成的合取为该命题公式的主合取范式。显然我们可以也仿照求主析取范式的方法求主合取范式,方法不再赘述。

我们发现,若全集 \(U = \{0, 1, \cdots, 2^n - 1\}\)\(S\) 为一个命题公式主析取范式中所有小项的下标所组成的集合,则主析取范式与主合取范式的关系为,(这里 \(\sum\) 为析取,\(\prod\) 为合取):


\[\sum_{i \in S} m_i \Leftrightarrow \prod_{i \in \overline{S}} M_i

\]

有了前面的各种铺垫,我们发现,我们当要通过一些已知的前提推理一些结论时,我们可以通过符号式的表达将结论推理出来。当然这里的推理仅是对命题中假设的真值和联结词的转化。为了方便,我们常常将前提的真值设为真。

我们对有效结论给出一个符号化的定义:如果 \(A, C\) 两个命题公式有 \(A \R C\),则称 \(C\)\(A\) 的有效结论,更普遍的如果 \(n\) 个命题公式 \(H_1, H_2, \cdots, H_n\) 满足 \(\prod_{i = 1}^n H_i \R C\),则称 \(C\) 为前提 \(H_1, H_2, \cdots, H_n\) 的有效结论。

我们判定有效结论的过程为论证的过程。我们会分别介绍几种证法:



  • 真值表法

直接将前提和结论中所有的命题变元列真值表,对应确定所有真值的可能性,看是否有 \(\prod_{i = 1}^n H_i \R C.\)



  • 直接证法

直接证法使用推理规则使用已知的等价公式或蕴含公式推出结论,其中有两个规则:

P 规则:前提在推导的过程中都可以引入推导过程。

T 规则:在推导过程中,如果有一个或多个公式与前提或已推导出的命题公式所蕴含或等价,则其可以引入推导过程。

我们在此列出一些常用的蕴含公式:





























































标号内容标号内容
$$I_1$$$$P \and Q \R P$$$$I_9$$$$P, Q \R P \and Q$$
$$I_2$$$$P \and Q \R Q$$$$I_{10}$$$$\lnot P, P \or Q \R Q$$
$$I_3$$$$P \R P \or Q$$$$I_{11}$$$$P, P \r Q \R Q$$
$$I_4$$$$Q \R P \or Q$$$$I_{12}$$$$\lnot Q, P \r Q \R \lnot P$$
$$I_5$$$$\lnot P \R P \r Q$$$$I_{13}$$$$P \r Q, Q \r R \R P \r R$$
$$I_6$$$$Q \R P \r Q$$$$I_{14}$$$$P \or Q, P \r R, Q \r R \R R$$
$$I_7$$$$\lnot (P \r Q) \R P$$$$I_{15}$$$$A \r B \R (A \or C) \r (B \or C)$$
$$I_8$$$$\lnot (P \r Q) \R \lnot Q$$$$I_{16}$$$$A \r B \R (A \and C) \r (B \and C)$$

一些常用的等价公式:















































































标号内容标号内容
$$E_1$$$$\lnot (\lnot P) \Lr P$$$$E_{12}$$$$R \or (P \and \lnot P) \Lr R$$
$$E_2$$$$P \and Q \Lr Q \and P$$$$E_{13}$$$$R \and (P \or \lnot P) \Lr R$$
$$E_3$$$$P \or Q \Lr Q \or P$$$$E_{14}$$$$R \or (P \or \lnot P) \Lr \mathbf{T}$$
$$E_4$$$$(P \and Q) \and R \Lr P \and (Q \and R)$$$$E_{15}$$$$R \and (P \and \lnot P) \Lr \mathbf{F}$$
$$E_5$$$$(P \or Q) \or R \Lr P \or (Q \or R)$$$$E_{16}$$$$P \r Q \Lr \lnot P \or Q$$
$$E_6$$$$P \and (Q \or R) \Lr (P \and Q) \or (P \and R)$$$$E_{17}$$$$\lnot (P \r Q) \Lr P \and \lnot Q$$
$$E_7$$$$P \or (Q \and R) \Lr (P \or Q) \and (P \or R)$$$$E_{18}$$$$P \r Q \Lr \lnot Q \r \lnot P$$
$$E_8$$$$\lnot (P \and Q) \Lr \lnot P \or \lnot Q$$$$E_{19}$$$$P \r (Q \r R) \Lr (P \and Q) \r R$$
$$E_9$$$$\lnot (P \or Q) \Lr \lnot P \or \lnot Q$$$$E_{20}$$$$P \lr Q \Lr (P \r Q) \and (Q \r P)$$
$$E_{10}$$$$P \or P \Lr P$$$$E_{21}$$$$P \lr Q \Lr (P \and Q) \or (\lnot P \and \lnot Q)$$
$$E_{11}$$$$P \and P \Lr P$$$$E_{22}$$$$\lnot (P \lr Q) \Lr P \lr \lnot Q$$


  • 间接证法(反证法,CP 规则)

有时候我们通过直接证法证明命题过于困难,我们可以将这个问题通过某种方式转化:

反证法,要证 \(\prod_{i = 1}^n H_i \R C\),设 \(S \Lr \prod_{i = 1}^n H_i\),则有 \(S \r C \Lr \lnot S \or C \Lr \mathbf{T}\),则 \(S \and \lnot C\) 为矛盾式,故只需证 \(\prod_{i = 1}^n H_i\)\(\lnot C\) 不相容。

CP 规则, 如果要证 \(\prod_{i = 1}^n H_i \R (R \r C)\),设 \(S \Lr \prod_{i = 1}^n H_i\),则有 \(S \r (R \r C) \Lr (S \and R) \r C \Lr \mathbf{T}\),故只需证 \(\prod_{i = 1}^n H_i \and R \R C.\)

我们下面再介绍一些联结词:不可兼析取(异或),条件否定,与非,或非。

我们定义联结词不可兼析取(异或)记作 \(\oplus\),我们直接使用之前定义过的命题公式定义它:\(P \oplus Q \Lr (P \and \lnot Q) \or (\lnot P \and Q)\),根据其真值表,我们可以将其视为不进位的二进制加法。除定义之外,其还有以下性质:


\[P \oplus Q \Lr Q \oplus P \\

(P \oplus Q) \oplus R \Lr P \oplus (Q \oplus R) \\

P \and (Q \oplus R) \Lr (P \and Q) \oplus (P \and R) \\

P \oplus Q \Lr \lnot (P \lr Q) \\

P \oplus P \Lr \mathbf{F}, \mathbf{F} \oplus P \Lr P, \textbf{T} \oplus P \Lr \lnot P

\]

我们定义联结词条件否定记作 \(\xr{c}\),与非记作 \(\u\),或非记作 \(\d\),我们仍然用之前的命题公式定义它们:


\[P \xr{c} Q \Lr \lnot (P \r Q) \\

P \u Q \Lr \lnot (P \and Q) \\

P \d Q \Lr \lnot (P \or Q)

\]

我们可以看到与非或非的一些性质:


\[P \u P \Lr \lnot P \\

(P \u Q) \u (P \u Q) \Lr P \and Q \\

(P \u P) \u (Q \u Q) \Lr P \or Q \\

P \d P \Lr \lnot P \\

(P \d Q) \d (P \d Q) \Lr P \or Q \\

(P \d P) \d (Q \d Q) \Lr P \and Q

\]

我们根据 \(P, Q\) 的真值表可能的真值情况(一共有 \(2^4 = 16\) 种),推断出不需要新的联结词。

而由等价公式可知,一些联结词总是可以被另外一些联结词的公式等价替换。我们有时希望命题公式中出现联结词的种类尽可能少,但又不可以太少,以至于我们不能表达所有命题公式。所以我们给出最小联结词组的概念:即对于一个由联结词组成的集合,如果任意命题公式都可以等价转化成只使用这个集合中联结词组成的命题公式,且这个集合的任意真子集不具有这个性质,那么就称这个集合为最小联结词组。



至此,本部分的知识已经更新完毕,感觉这一章充满了数学中逻辑的味道,终于明白了我们证明问题其实在描述什么。其中引出主析取范式的想法,即 “使用某种方法让命题公式可以直接描述真值表” 的想法着实让我眼前一亮。我个人比较喜欢证明和研究定义为何是良定义,大概也因为会时不时看到这种让我感觉到精彩的思路。

数学真的可以被称作是一门魔法,它就在我们身边,却又将看似不可能的东西联系起来。我也要尽快学习,成为一个有一定资质的魔法师 qwq!醒醒,你是计算机专业的(逃



推荐阅读
  • 本文详细探讨了KMP算法中next数组的构建及其应用,重点分析了未改良和改良后的next数组在字符串匹配中的作用。通过具体实例和代码实现,帮助读者更好地理解KMP算法的核心原理。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Søren Kierkegaard famously stated that life can only be understood in retrospect but must be lived moving forward. This perspective delves into the intricate relationship between our lived experiences and our reflections on them. ... [详细]
  • 计算机网络复习:第五章 网络层控制平面
    本文探讨了网络层的控制平面,包括转发和路由选择的基本原理。转发在数据平面上实现,通过配置路由器中的转发表完成;而路由选择则在控制平面上进行,涉及路由器中路由表的配置与更新。此外,文章还介绍了ICMP协议、两种控制平面的实现方法、路由选择算法及其分类等内容。 ... [详细]
  • 本文将介绍如何使用 Go 语言编写和运行一个简单的“Hello, World!”程序。内容涵盖开发环境配置、代码结构解析及执行步骤。 ... [详细]
  • 线性Kalman滤波器在多自由度车辆悬架主动控制中的应用研究
    本文探讨了线性Kalman滤波器(LKF)在不同自由度(2、4、7)的车辆悬架系统中进行主动控制的应用。通过详细的仿真分析,展示了LKF在提升悬架性能方面的潜力,并总结了调参过程中的关键要点。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • C++实现经典排序算法
    本文详细介绍了七种经典的排序算法及其性能分析。每种算法的平均、最坏和最好情况的时间复杂度、辅助空间需求以及稳定性都被列出,帮助读者全面了解这些排序方法的特点。 ... [详细]
  • 本文介绍如何利用动态规划算法解决经典的0-1背包问题。通过具体实例和代码实现,详细解释了在给定容量的背包中选择若干物品以最大化总价值的过程。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 探讨一个显示数字的故障计算器,它支持两种操作:将当前数字乘以2或减去1。本文将详细介绍如何用最少的操作次数将初始值X转换为目标值Y。 ... [详细]
author-avatar
缕足迹_124
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有