《离散数学》:逻辑

news2024/11/26 22:16:39

〇、前言

离散数学是数学的一个分支,研究离散对象离散结构的数学理论和方法。这学期学校开了离散数学的课程,我受益颇丰,感觉到了离散数学真正的魅力,也被开创离散数学各个分支的人的聪明与才智深深折服。与连续数学不同,离散数学关注的是离散的离散化的数学对象,而不是连续的数值或函数。离散数学关注更多的是研究对象之间的关系或者对象之间的组织结构,甚至结合线性代数来完成一系列计算。

我印象最深的一些内容是关于关系的研究,在研究关系时,里面大量应用了线性代数中矩阵的知识。究其原因,是因为矩阵运算与关系运算达到了很深的耦合,因此可以利用矩阵运算的结果来解释关系运算的结果。但是矩阵的其它性质,比如特征值、秩、特征向量、特征空间等,在关系运算中没有明确的意义,我想,这应该是可以继续深入研究的,并且一定会有某种结果。

离散数学中有大量的公式,但是在这篇博客中,我尽量使用最少的公式来发表自己的看法,因为不用公式能将某件事情说明是一件很爽的事情,这表明已经理解的差不多了。公式是对知识的抽象,更像是点睛之笔。因此,某些关键点上,我会用专业的工具编辑好一个完美的、漂亮的公式作为展示。

离散数学的研究领域包括但不限于以下几个方面:

  • 集合论:集合论是离散数学的基础,研究集合及其运算、关系和函数。它提供了一套严谨的描述和操作集合的方法,是离散数学的基础工具。集合的概念相对简单,但它是很基本的数学对象,在代数论、关系论、图论中都有非常重要的地位。

  • 图论:图论研究图及其性质和应用。图由节点(顶点)和边组成,研究它们之间的连接关系、路径、循环等。图论在计算机科学、网络分析、社交网络等领域有广泛的应用,我会给出一些案例来展示图论的威力。

  • 逻辑与命题演算:逻辑是研究推理和论证的学科。离散数学中的逻辑研究命题逻辑、谓词逻辑和命题演算等形式系统,研究命题之间的逻辑关系和推理规则。这里的核心思想是将自然语言抽象画,并且抽象成抽象的数学语言,在约定的系统中进行等值演算或者非等值演算,从而导出某种等价命题或者令人意想不到的结论。

  • 组合数学:组合数学研究离散对象的排列组合和计数问题。它包括排列、组合、图论中的组合问题等,以及应用于密码学、组合优化等领域。

  • 概率论与离散随机变量:概率论研究随机事件的概率和统计规律。在离散数学中,研究离散随机变量及其概率分布、期望、方差等离散概率模型。

离散数学在计算机科学、信息科学、密码学、运筹学、人工智能等领域具有重要的应用。它提供了分析和解决离散问题的数学工具和方法,为算法设计、数据结构、图像处理、网络分析等问题提供了理论基础。同时,离散数学的逻辑思维和证明技巧也对培养抽象思维和问题解决能力有很大帮助。

一、命题逻辑

(一)基本概念

命题逻辑是逻辑学的一个分支,研究的是命题和它们之间的逻辑关系。在命题逻辑中,命题是指可以判断为真或为假的陈述句,而不考虑其具体内容。

命题逻辑主要关注以下几个方面:

  • 命题:命题是命题逻辑的基本概念,它可以是简单的陈述句,也可以是由其他命题通过逻辑运算符组合而成的复合命题,但是该命题一定要有一个确定的真假。例如,"太阳是圆的"和"2加2等于5"都是命题,"1+1=10"就不是命题,因为在二进制计算下为真,在 5 进制或者 10 进制下为假。

  • 逻辑运算符:命题逻辑引入了几个逻辑运算符,用于组合和操作命题。常见的逻辑运算符包括否定(~)、合取(∧)、析取(∨)、条件(→)和双条件(↔)。通过逻辑运算符的组合,可以构造出更复杂的命题。

  • 真值表:真值表是用来表示命题和逻辑运算符的真值取值情况的表格。通过真值表,可以确定命题和逻辑表达式的真假情况。

  • 逻辑等价和蕴含:命题逻辑研究命题之间的逻辑等价关系和蕴含关系。两个命题在逻辑上等价意味着它们有相同的真值,而一个命题蕴含另一个命题表示前者的真值为真时,后者的真值也一定为真。

  • 推理和证明:命题逻辑研究推理和证明的规则和方法。通过逻辑的推理和证明,可以从已知命题推导出新的命题。

(二)符号化

这一章节最重要的是理解命题的符号化。因此就要深入思考,命题的符号化究竟做了什么样的事情。我的理解是,命题的符号化工作,简化了表达,且将人类语言的二义性彻底消除。消除之后,命题就是特定的,这样在此之上的讨论才是有意义的。此外,命题符号化将具体的语言表达抽象为符号形式,使得我们能够关注于命题的结构和逻辑关系,而不受具体语言表达的干扰。这使得我们能够研究和比较不同命题之间的共性和一般性规律。

总结一下就是如下:

  • 精确性和简洁性:自然语言中的句子通常存在歧义和模糊性,而命题符号化通过使用精确的逻辑符号和规则来消除歧义,使得命题的含义更加明确和精确。符号化后的命题更加简洁,减少了冗余信息,更便于逻辑分析和推理

  • 抽象和一般化:命题符号化将具体的语言表达抽象为符号形式,使得我们能够关注于命题的结构和逻辑关系,而不受具体语言表达的干扰。这使得我们能够研究和比较不同命题之间的共性和一般性规律。

  • 逻辑推理和证明:命题符号化提供了逻辑推理和证明的形式化基础。通过将命题转化为逻辑符号,我们可以应用逻辑规则和推理规则进行推理和证明。符号化使得推理过程更加形式化和系统化,减少了主观和语义的干扰。

  • 自动化处理:命题符号化为自动化处理提供了基础。在计算机科学和人工智能领域,通过将命题符号化,我们可以使用计算机程序进行自动化的逻辑推理、知识表示和问题求解。符号化使得命题可以在计算机系统中进行处理和操作。

(三)真值表和等价公式

接下来就要研究真值表了,此时我们已经不再满足于某个特定的命题的符号化了。我们设置了一组命题变元,然后用一系列连接词连接起来,形成一个公式。此时就可以进行各种真值指派,如果有 N 个命题变元,那么就一共有2^N种赋值,接着就形成了真值表。

有时候一个命题公式A 和一个命题公式 B 有相同的真值表,那么我就可以认为这两个命题公式看起来不一样,其实是等价的。如果我们每次都要写出两个命题的真值表才能看出来其是否等价,那么也太麻烦了!既然是公式,那么一定可以进行演算!所以第二种证明两个命题公式等价的手段就是等值演算,这里一定要用命题定律进行等值演算,这样才能算出等价的命题。否则是能算出它的必要条件!

课程中介绍了 13 种 命题定律,包括结合律、吸收律、逆否律等等。这里需要注意的是逆否律,比如 A->B,那么等价于非 B->非 A,但是 B 什么也蕴含不了,同理,非非 B 什么也蕴含不了。

(四)重言与蕴含

人们发现某个命题公式很神奇,就是无论进行什么样子的真值指派,它都为,这样的命题就是重言式或者永真式。同样,还有永假式或者矛盾式

因此对于任何一命题公式,都可以分为三类:

  • 重言式
  • 永假式
  • 偶然式子:可以为假,可以为真

还有可满足式:这是对上面的一些总结:当命题不是矛盾式时,就是可满足式。
用图示来解释就是:
在这里插入图片描述
判断一个命题到底属于哪一类,有两种方法:

  • 真值表
  • 等值演算法

(五)对偶与范式

关于对偶,是人们的经验总结,只有一些少得可怜的特定的性质。当一个命题公式 A 中仅含有连接词~、∧、∨时,可以将∧、∨、T、F分别换成对立面,就可以得到一个新的公式 B,B就是A 的对偶式。A和 B 的真值表可以不一样,因此它们没有特定的关系。有一个著名的对偶定理,就是 A等价于 B的话,那么 A 的对偶和 B 的对偶也等价。这也是目前接触到的唯一一个对偶定理。

注意:上面的讨论,对连接词进行了限制,仅含有~、∧、∨。

关于范式,课上讨论了析取范式、合取范式、主合取范式、主析取范式。核心思想就是用基本的元素构造出了一个公式,这个公式有特定的模式。实际上,任何一个命题都等价于且能通过通用方法找到一个主合取范式以及主析取范式。

(六)命题逻辑的推理

有时候,我们可以从命题公式 A 推出一个命题公式 B:

  • 如果是等价推出,B 就是等价式,即 A 和 B 能相互推出;
  • 如果不是等价推出,是必要推出,就是蕴含式,就是说,如果A为真,那么一定能推出 B 为真。

课程中一共给出了 22 个等价公式,16 个蕴含公式。

之后就可以利用这些公式,进行命题逻辑的推理了,比如会给出一组前提条件,然后证明结论 B,那么很容易想到,最简单的方法就是通过有限的步骤、利用前提条件进行一步步验算,一直推出 B 或者 B 的等价公式。

一共有两种证明方法:

  • 直接证明:可以利用 P、T 规则进行;
  • 间接证明:反证法(附加前提,推出矛盾)、CP 规则。

这都是很简单的概念,要想熟练掌握,就得多加练习。

二、谓词逻辑

谓词逻辑是逻辑学的一个分支,也被称为一阶逻辑或一阶谓词演算。它是对命题逻辑的扩展,引入了谓词量词的概念,可以用于描述关于个体对象和属性关系的陈述。

谓词逻辑主要关注以下几个方面:

  • 个体和谓词:谓词逻辑引入了谓词,它用来描述个体对象的性质、关系或状态。谓词可以是一元谓词(描述一个个体对象的性质)、二元谓词(描述两个个体对象之间的关系)或多元谓词(描述多个个体对象之间的关系,这个很少见)。

  • 量词:谓词逻辑引入了全称量词(∀)和存在量词(∃)。全称量词表示命题对所有个体都成立,存在量词表示命题对某个个体存在至少一个成立。全程量词和存在量词可以相互转化,这表明它们就有一定的相关性

  • 谓词符号化:谓词逻辑使用符号化表示,通过谓词符号、变量和量词来表示谓词逻辑表达式。谓词逻辑的符号化使得可以进行形式化的逻辑分析和推理。

  • 语义和模型论:谓词逻辑研究谓词逻辑表达式的语义解释和模型论基础。通过给定一个逻辑语言的模型,可以确定谓词逻辑表达式的真值。

  • 推理和证明:谓词逻辑提供了推理和证明的规则和方法。它包括逻辑公式的推导、一致性的判定、等价式的推导等。

谓词逻辑的提出,主要是为了解决前一节中必须要解决的问题:命题 A 无法被研究内部具体细节,因此需要将 A 分解。
例如,苏格拉底可能会使用以下的三段论形式:

  • 主题命题:人类都是有限的生命体。
  • 前提命题:苏格拉底是人类。
  • 结论命题:苏格拉底是有限的生命体。

事实上,这就不是一个证明过程,因此主题命题 A、前提命题 B、结论命题 C,这三者从形式上看,根本无法参与运算,但是把这些命题分解以后,就可以成功地推导出 C 了。
可见谓词逻辑解决的主要问题就是深入到命题内部、分解命题、证明命题

(一)谓词与量词

谓词就是描述对象的性质或者描述对象之间的关系,量词就是有多少对象,就是在讨论的对象的

至于命题函数,这个和我们对于函数的印象几乎一致。比如 "L(X):x是个动物。"就是一个命题函数,命题函数不是命题,当函数里面的 x 代表一个确定的对象时,命题函数才变成了一个命题。这样才能确定真假~

(二)谓词公式与翻译

这个谓词公式和前面的命题公式具有很高的相似性,命题公式的真值指派对应于谓词公式的个体变元的具体对象的带入。这里的重点在于是对自然语言的翻译,翻译成等价的谓词公式。

(三)变元的约束

当我们对于 x 进行限制时,比如用全程量词或者存在量词进行修饰时,它就是一个约束的变元 x,但是此时由于 x 还是一个非具体的对象,它只受到了部分限制,因此还是一个个体变元!如果x没有任何修饰,那么就是一个自由变元!

(四)谓词演算的等价式与蕴含式

谓词公式的解释:类似于命题逻辑中的对命题公式的真值指派行为,对谓词公式进行带入,就可以构成一个公式的解释或者赋值。

这个很好理解,就是带特定确定域上,带上特定的解释,结形成了谓词公式在 A 下的解释!
这时,很容易想到,如果一个公式 A 永真或者永假的意义就是,不管在哪种解释下,都为真或者都为假。这里就牵扯到了谓词公式的判定问题即是否存在一个通法,使得可以获知任意一个谓词公式的是否有效性

在命题公式中,任何一个命题变元只有两种指派,因此可以简单得进行各种真值指派,轻松得得到真值表。但是谓词公式失去了这样的性质,我们无法知道这个谓词公式 A 是否总是为真或者总是为假。这就是 Church—Turing定理:谓词公式是不可判定的。这句话不是在说,所有的谓词公式都是不可判定的,它只是说,不存在一个通法能够判定谓词公式。

但是我们仍然找到了一些方法,来判定部分谓词公式:
比如:代换实例概念的提出。比如命题公式 "A:p->q"中,它的一个代换实例是 “B:P(x)->Q(x)”。

这样就产生了一个极其重要的定理:命题公式中的重言式的代换实例都是逻辑有效式,在谓词公式中仍然可以称为重言式;命题公式中的矛盾式的代换实例全都是矛盾式

同样,有些谓词公式的表达形式不止一种,但是说得其实是一种东西,这就是谓词逻辑中的等价概念

有了等价概念以后,就可以完成对一个谓词公式各种转换:

  • 量词否定转化率
  • 量词辖域收缩或扩张
  • 量词分配
  • 两次交换律等等

(五)前束范式

与命题公式类似,谓词公式也有标准形式,即前束范式。前束范式的特点如下:

  • 量词前置:在前束范式中,所有的量词(全称量词∀和存在量词∃)都被移到逻辑表达式的最前面,并且量词的作用范围仅限于后面的一个子句。这样做的目的是清晰地标明量化变量的范围。
  • 谓词子句:在量词前面,前束范式通常包含一个或多个谓词子句。谓词子句由一个谓词和它的参数构成,表示一个具体的陈述。

转化为前束范式的过程通常包括以下步骤:

  • 否定深入;

  • 改名;

  • 量词前移。

同样也有前束合取范式、前束析取范式等。

(六)谓词演算的推理理论

因为我们没有谓词公式的等价公式也没有蕴含式,因此我们不能直接推理。要想推理,我们必须要对谓词公式命题化,这就是谓词演算的核心。

这里遵循了一些简单的规则:

  • 全程量词消去规则(US或 UI 规则);
  • 存在量词消去规则(ES或 EI 规则);
  • 全程量词产生规则(UG 规则);
  • 存在量词产生规则(EG 规则)。

有了这些转化规则,就可以进行谓词演算了!

以上就是关于《离散数学》中对“逻辑”的感悟,全文完,感谢阅读!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/647252.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Stopwatch工具类计时器探究

搬砖的我们 特别是Java开发的童鞋们, 经常需要通过记录开始时间和结束时间,然后通过计算差值,得到时间差,如下面的代码: long start System.currentTimeMillis(); long end System.currentTimeMillis(); System.out.println(…

【数字调制】数字调制技术FSK与PSK分析与研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

栈的数据结构完成表达式(5*10+2-7+5)/10+5的计算

栈(Stack)是一种线性数据结构,具有后进先出(LIFO)的特性。它可以理解为一种类似于抽屉的容器,只能在顶部进行插入和删除操作,其他位置不可访问。栈的基本操作包括入栈(push&#xff…

[数字图像处理]第五章 图像复原与重建

文章目录 第五章 图像复原与重建5.1图像退化复原过程的模型图像退化图像复原图像复原与图像增强图像退化的数学模型为什么采用线性位移不变系统模型来描述图像退化过程 5.2 噪声模型x5.2.1 噪声的空间和频率特性5.2.2 一些重要的噪声概率密度函数高斯噪声实验:采用高…

【微服务架构设计和实现】4.1 微服务架构概述和设计原则

往期回顾: 第一章:【云原生概念和技术】 第二章:【容器化应用程序设计和开发】 第三章:【基于容器的部署、管理和扩展】 4.1 微服务架构概述和设计原则 4.1 微服务架构概述和设计原则4.1.1 微服务架构的优点4.1.2 微服务架构遵…

在 ArcGIS Pro 中使用 H3 创建蜂窝六边形

在 ArcGIS Pro 中使用 H3 创建蜂窝六边形https://mp.weixin.qq.com/s/tGk7AT2jAcvsmNyp2bRvig 之前看了个有意思的ArcGIS博客:H3六边形,当然了这也不是个新鲜东西了。原文: https://www.esri.com/arcgis-blog/products/arcgis-pro/analytic…

为什么要学GIS开发

什么是地理信息系统技术? GIS技术使用专门的计算机系统来获取地理数据并将其集成到智能“超级”地图中。然后,这些数据可用于创建无穷无尽的“假设”场景,为以下应用程序提供强大的工具: 制图(地图制作)应…

【阅读随笔】Rewrite-Based Decomposition of Signal Temporal Logic Specifications

文章目录 Overview1 IntroLTL任务分解STL任务分解本文工作 Background and Problem DefinitionSTLAgent假设与问题方法 An STL Rewriting SystemRewriting SystemFormula Rewrite DAG Decomposing STL智能体编队任务分解最优分解 Exploring the Formula Rewrite DAGExperiments…

soci在windows下vs2010编译

需要下载 的资源 mysql connector c 因为其使用的的是mysql connector c的api,需要下载https://downloads.mysql.com/archives/c-c/ 分别对应32位和64位的 soci 4.0 从github上下载4.03分支 https://github.com/SOCI/soci/tree/v4.0.3 cmake 需要下载3.25版…

Java多线程快速入门

文章目录 Java多线程快速入门1、认识多线程2、多线程的实现2.1 继承Thread类2.2 实现Runnable接口2.3 利用Callable和Futrue接口2.4 三种方式的比较 3、Thread类常用API3.1 守护线程3.2 礼让线程3.3 插入线程3.4 线程的生命周期 5、线程安全问题5.1 synchronized5.2 Lock 6、等…

wsl安装ubuntu并设置gnome图形界面详细步骤(win11+ubuntu18)

0.前言 wsl确实是个好东西,不过之前配了好几次都没有成功,因为wsl本身确实是有bug。当时配的时候查到GitHub上的一个issue还没被修好。现在重新配一下。 我的环境是Windows11家庭版。区别于win10,win11安装完默认就是wsl2。 1.下载 首先打…

Linux之管理联网

目录 Linux之管理联网 rhel8与7的区别 NetworkManager 定义 NM能管理各种网络 使用方法 使用NM的原因 nmcli使用方法 nmcli的两个常用命令 nmcli connection 定义 两种状态 nmcli device 定义 四种状态 nmcli常用命令 查看ip(类似于ifconfig、ip addr&a…

每周练习学习(一)1.1--nc的使用与系统命令执行

1.test_your_nc ----nc的使用与系统命令执行1 平台:buuctf 之前在攻防开学来考核的时候,遇到过一个nc的题,但自己完全不知道nc是什么意思,所以现在为了增强一点自己的知识面(说的好听,也就是为了快期末…

4.8 Socket介绍 4.9字节序 4.10字节序转换函数

4.8 Socket介绍 所谓 socket(套接字),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上…

使用EasyCode自定义模板,自动生成代码

首先创建spring boot项目&#xff0c;导入相关依赖是必须的#### 导入依赖&#xff1a; pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001…

设计模式(十八):行为型之观察者模式

设计模式系列文章 设计模式(一)&#xff1a;创建型之单例模式 设计模式(二、三)&#xff1a;创建型之工厂方法和抽象工厂模式 设计模式(四)&#xff1a;创建型之原型模式 设计模式(五)&#xff1a;创建型之建造者模式 设计模式(六)&#xff1a;结构型之代理模式 设计模式…

【RabbitMQ教程】第六章 —— RabbitMQ - 延迟队列

&#x1f4a7; 【 R a b b i t M Q 教程】第六章—— R a b b i t M Q − 延迟队列 \color{#FF1493}{【RabbitMQ教程】第六章 —— RabbitMQ - 延迟队列} 【RabbitMQ教程】第六章——RabbitMQ−延迟队列&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人…

数据提取概述

数据提取概述 一、响应内容的分类 在发送请求获取响应之后&#xff0c;可能存在多种不同类型的响应内容&#xff1b;而且很多时候&#xff0c;我们只需要响应内容中的一部分数据 结构化的响应内容 json字符串 可以使用re、json等模块来提取特定数据json字符串的例子如下图 x…

一.《UE5夜鸦》被动技能名字CALL和描述CALL

被动技能名字描述CALL 搜索名字寻找名字库的名字对象 1.搜索我们找名字,肯定是需要用CE搜索名字拉,由于是韩文,我们用翻译器截图获取韩文字符串 2.开始截图获取 3.我们用CE搜索字符串,这里注意是UTF-16勾上,找到了4个完全一样的结果, 我们修改确认哪一个才是真正技能库的名字 4…

[读论文]Referring Camouflaged Object Detection

摘要 In this paper, we consider the problem of referring camouflaged object detection (Ref-COD), a new task that aims to segment specified camouflaged objects based on some form of reference, e.g. , image, text. We first assemble a large-scale dataset, ca…