离散数学
离散数学
前言:我自认为离散数学可能是我自高考过后最有难度的一门数学课了,在学习离散之前我学习了线性代数,高等数学,其实都抽象,但绝没有达到离散数学此般程度。为了应付考试,也为了重新复习巩固知识点,同时也为了以后的不时的查阅,特此重新学习一遍离散数学,并在此记录下所有的知识点,希望共勉。😺😺😺
2021-6-16 21:37
Mushroom
参考书籍:
《离散数学 (第2版)》 曲婉玲
《离散数学及其应用》
第一部分 数理逻辑#
第1章 命题逻辑的基本概念#
1.1 命题与联结词#
定义:
命题: 非真即假的陈述句,真值为真为真命题,真值为假为假命题。
悖论: 真假矛盾的命题。如
我说的话都是假话
原子命题: 不可以再被拆分的为原子命题。 如
2 大于 3
联结词:通过已有命题构造出新命题的一种方法。(或者你可以把联结词理解为C语言里面的那些位运算)
非联结词:¬p¬p表示当pp成立时,¬p¬p不成立,当pp不成立时,¬p¬p成立。
合取联结词:使用符号∧∧, 理解为高中学过的且,只有双方同时为真时才为真。
析取联结词:使用符号∨∨, 理解为高中的或, 只有当双方全为假时才为假。
蕴含联结词:使用符号→→, 只有当后件为假,前件为真时才为假,其余的全部为真。
等价联结词:使用符号↔↔, 同真同假时才为真,其余为假。
根据以上的定义推出以下定义
复合命题: 原子命题通过各种联结词连接起来的命题称为复合命题。
相容或: 析取双方可以同时为真的命题为相容或,
张三英语考100或者数学考100
排斥或: 析取双方不可以同时为真 , 如
张三是湖北人或湖南人
1.2 命题公式及其赋值#
定义:
命题常元:真值
确定
,等价的理解为上一章的命题完全没有问题。命题变元:真值可取
0或者1
, 真值不确定,不是命题!!!合式公式:没有特别准确的定义,只有一个比较完备的递归定义.
单个命题变元是合式公式,称为原子命题公式
若AA是合式公式,那么¬A¬A也是合式公式.
若AA和BB都是合式公式, 那么AA与BB之间进行的所有上述的联结词运算之后,仍然是合式公式。
依次使用1,2,3得到的公式仍然是合式公式。
赋值:对一个合式公式的所有命题变元赋上一个确定的真值,此为合式公式的赋值。使得合式公式成真的赋值为成真赋值,反之为成假赋值。
根据以上的定义额外增加以下三个定义方便叙述
子公式: AA为合式公式,BB为AA的一部分那么称BB为AA的子公式。 (说人话:B在A里面)
对象语言:描述具体的合式公式的语言。如p→q∧sp→q∧s, (记忆方法:你的对象是独一无二的吧,这里的对象语言表述法也可以独一无二的描述一个合式公式。)
元语言:与对象语言相反,元语言可以描述泛指的合式公式,如上面定义中AA其实就是一个合式公式,是使用元语言写的。可以所有的合式公式。因此说元语言是泛指的。(说人话,你对象是人,我对象也是人,可以使用人这个元语言来描述这人类)
命题公式的层数:递归定义法
- 单个命题变元层数为0, 为0层公式。
- 合式公式AA, 其层数为nn, 那么¬A¬A的层数为n+1n+1
- 合式公式B,CB,C,. BB与CC之间发生的合式公式的定义规则三,所得的合式公式的层数为 max(B,C)+1max(B,C)+1
真值表:
- 把合式公式按照递归书写,最终得到合式公式。构成真值表的所有待求真值的列
- 左侧写上命题变元的所有赋值,一般从上之下以二进制从小到大的排列[0,2n−1][0,2n−1],nn为命题变元的个数。
pp rr ¬p¬p ¬r¬r ¬p∧q¬p∧q (¬p∧q)→¬r(¬p∧q)→¬r 0 0 0 1 1 0 1 0 0 1 1 0 0 1 0 1 0 1 1 1 1 0 1 1 1 0 1 0 1 0 0 0 1 0 1 1 0 1 0 0 0 1 1 1 0 0 1 0 1 1 1 1 0 0 0 1
这里是正在码字的Mushroom,到此时我才理解真值表的构成逻辑,使用合式公式的层作为基础,这样就可以在上一层的基础上继续确定下一层的真值,这是确实一套行之有效的算法。(大家不要学我,上课的时候就应该好好听讲!)
针对于合式公式真值的定义:
- 重言式或者永真式:说人话,合式公式里面不是有很多命题变元吗,如果我不论怎么去给命题变元赋值,这个合式公式为真总是成立的。
- 矛盾式或者永假式:和上面的重言式式对立的,不论如何取值合式公式的真值总为假。
- 可满足式:存在使得合式公式为真的赋值,实际上式矛盾式的反面(如果说一个合式公式AA是矛盾式,那么其反面¬A¬A一定就是可满足式了)。
思考一个这样的环境,AA和BB一共具有的不同的命题变元为M={p1,p2,...,pn}M={p1,p2,...,pn}
但是AA和BB不一定拥有所有上述说的M={p1,p2,...,pn}M={p1,p2,...,pn}命题变元。
但是在讨论AA和BB是否拥有相同真值表的时候,记得吗,真值表的左侧有所有的变元取值情况。
而对于AA所没有的变元不会对AA的真值产生影响。那么我们把这些在MM中,却又不在AA中的称为AA的哑元。
(本质上是为了解决实际问题而定义的。)
第2章 命题逻辑等值演算#
2.1 等值式#
定义:
等值: 现在有两个合式公式AA, BB,若A↔BA↔B是重言式,那么就说 A⇔BA⇔B, AA与BB等价.
(悄咪咪告诉你另外一种定义,使用上一章最后我们讨论的哑元,哑元作用是用来讨论两个命题公式的真值表是否相同, 只需在把两个公式的带有哑元的真值表画出来,若作后一列的值全都相等,那么自然而然的就说明两个公式等价了。)
定理:(从定义逻辑推理得出的一套方法论。)
2.1.1 判断两个合式公式等值的方法:
- 判断A↔BA↔B是否为重言式
- 使用带有哑元的真值表,判断最后一列是否完全相同,同则等价。
推论:(运用已知的定理,定义推导出来的结论)
16个基本等价式
名称 表达式 双重否定 A⇔¬¬AA⇔¬¬A 幂等律 A⇔A∨A,A⇔A∧AA⇔A∨A,A⇔A∧A 交换律 A∨B⇔B∨A,A∧B⇔B∧AA∨B⇔B∨A,A∧B⇔B∧A 结合律 A∨(B∨C)⇔(A∨B)∨CA∧(B∧C)⇔(A∧B)∧CA∨(B∨C)⇔(A∨B)∨CA∧(B∧C)⇔(A∧B)∧C 分配律 A∨(B∧C)⇔(A∨B)∧(A∨C)A∧(B∨C)⇔(A∧B)∨(A∧C)A∨(B∧C)⇔(A∨B)∧(A∨C)A∧(B∨C)⇔(A∧B)∨(A∧C) 德摩根律 ¬(A∧B)⇔¬A∨¬B¬(A∨B)⇔¬A∧¬B¬(A∧B)⇔¬A∨¬B¬(A∨B)⇔¬A∧¬B 吸收律 A∧(A∨B)⇔AA∨(A∧B)⇔AA∧(A∨B)⇔AA∨(A∧B)⇔A 零律 A∨False⇔AA∧False=FalseA∨False⇔AA∧False=False 同一律 A∨True⇔TrueA∧True⇔AA∨True⇔TrueA∧True⇔A 排中律 A∨¬A⇔TrueA∨¬A⇔True 矛盾律 A∧¬A⇔FalseA∧¬A⇔False 蕴涵等价式 A→B⇔¬A∨BA→B⇔¬A∨B 等价等价式 A↔B⇔(A→B)∧(B→A)A↔B⇔(A→B)∧(B→A) 假言异位 A→B⇔¬B→¬AA→B⇔¬B→¬A 等价否定等价式 A↔B⇔¬A↔¬BA↔B⇔¬A↔¬B 归谬论 (A→B)∧(A→¬B)⇔¬A(A→B)∧(A→¬B)⇔¬A 注:上述加粗的是使用频率相当高的一组等价式,需要重点掌握,同时这些结论实际上都是通过定理证明出来的结论,使用这些结论可以更加有效的帮助我们证明命题公式是否等价。(注意这些公式的形态,或者说思想将会一直伴随着我们离散数学的学习!)
上述的16组基础等价式是使用元语言书写的,那也就是说我们可以把各个对象语言实例带入,以求出具体环境的解。
2.2 析取范式和合取范式#
定义:
文字:命题变元或者命题变元的否定都是文字。
简单析取式:由有限个文字析取得到的合式公式。∨∨
简单合取式:由有限个文字合取得到的合式公式。∧∧
合取范式:由有限个简单析取式合取得到的合式公式为合取范式。
析取范式:由有限个简单合取式析取得到的合式公式为析取范式。
范式:合取范式与析取范式的统称。
(注意: 上述所说的各种式子都是建立在文字的基础定义上的,而文字式描述命题变元的,所以这些式子都是对象语言,而非元语言!!!)
极小项:(这里使用我自己的理解)析取范式是由简单合取式析取而来的,如果每一个简单的简单合取式的命题变元刚刚好就是析取范式所使用的命题变元(这里把命题变元的否定与原命题变元看作是同一个东西),并且,每一个简单合取式的命题变元(名称)的排列都是按照一个固定的顺序(如a,b,c,d,e,f,g...a,b,c,d,e,f,g...),那么我们说这个简单析取式就是一个极小项。(越析取越小,所以极小项。值是为了方便记忆)
极大项:合取范式中的析取合取式。 也是按照上述极小项的规则。
(相关细节记忆: 极小项是简单合取式,我们求成真赋值, 极大项式简单析取式我们求成假赋值。对于极小项,非为0,正为1)
主析取范式:所有的简单合取项都是极小项。
主析合取式:所有的简单析取项都是极大项。
定理:
2.2.1: (根据简单合取式和析取式的定义,我们有以下定理)
- 简单析取式为假,当且仅当所有的命题变元都为假。
- 简单合取式为真,当且仅当所有的命题变元都为真。
2.2.2:(根据范式的定义,我们有以下结论)
- 合取范式为真,当且仅当所有的简单析取式全部为真。(要求每个简单析取式中至少有一个文字为真)
- 析取范式为假,当且仅当所有的简单合取式全部为假。(要求每个简单合取式中至少有一个文字为假)
2.2.3:(范式存在定理)这里给出的是一套操作流程,而非完整证明。
- 消去→,↔→,↔ 联结词
- 双重否定,德摩根定理内移¬¬
- 使用分配律∧对∨,∨对∧∧对∨,∨对∧
2.2.4:设mimi与MiMi是命题变元,含有p1,p2,...pnp1,p2,...pn的极小项,极大项,则
¬mi⇔Mi,¬Mi⇔mi¬mi⇔Mi,¬Mi⇔mi可以只记忆析取范式是由简单合取式(极小项)构成,且¬¬表示0,原为1,如此使用定理2.2.4就可以得出极大项排列
2.2.5:(主范式存在性)
这里做一个说明,上面定义范式的时候,比如说简单合取式构成析取范式,但是简单合取式里面的文字未必一定与全体析取范式的相同,也就是说,如果把一个析取范式中的不同的简单合取式拿来比较的话,会发现存在哑元,此时在缺失哑元的简单合取式旁合取上p∨¬pp∨¬p结果很为TrueTrue所以不会对析取范式的结果产生影响。再使用分配律,展开为两个简单合取式,且二者之间以∨∨连接,如此把所有的缺失哑元的简单合取式全部扩张最后就得到了主合取范式。
插一嘴,现在可以明显的发现,定义是人定的,但是也需要人类的一定逻辑思维基础,随后在定义的基础上推导出定理,推论。这是离散数学,或者说数学最基础的一种研究方式,后面的章节也都是按照此逻辑来进行研究讨论的。加油!!
2.3 联结词的完备性#
正式讨论前先思考下一个问题,为什么要使用∧∨¬构成范式呢?为什么只用这三个呢?这两个问题导出了这节讨论的问题。先说答案,{∧∨¬}构成了一个完备联结词集合。
定义:
n元真值函数:F:{0,1}n→{0,1}F:{0,1}n→{0,1}(为了说明完备性而定义)
解释: n元就是说有几个变元,对应到范式里面就是有几个命题变元。命题变元共同可以构成2n2n个赋值(取0或者1)而真值函数说白了就是输出真值的函数,也就是说值域为0或者1,那么对于上述的2n2n个赋值每个赋值首先都必须满足这个函数的定义域,其次,函数对于此赋值的值也只能为0或者10或者1, 如此可以得出n元真值函数有22n22n个。
联结词完备:SS为一个联结词集合,若任何的真值函数FF都可以,仅使用SS中的联结词表示出来,那么说这个联结词集合是完备的。
由上一节可知{∨,∧,¬}{∨,∧,¬}是完备集,这是由于每一个n元真值函数都可以与一个主析取范式(或者主合取范式)等值。那么说{∨,∧,¬}{∨,∧,¬}是完备集。那么范式包含{∨,∧,¬}{∨,∧,¬}都是完备的联结词集合
所以在证明联结词是否完备的时候,可以试着把欲证的联结词集合转化为上述{∨,∧,¬}{∨,∧,¬},或者是否包含{∨,∧,¬}{∨,∧,¬}如此证毕。
2.4 可满足性问题与消解法#
前排提醒: 消解法可能会有一点难懂,但是确实是一种非常优雅的,简洁的,判断合式公式是否为可满足性的方法。加油,认真看,肯定可以弄懂的。😄😄
由于所有的合式公式都可以转化为与之对应的合取范式,
故可满足性证明可以转化为证明合取范式的可满足性
规定:
上述合取范式的简单析取式中不存在文字pp和文字¬p¬p同时存在的情况,因为此时,此简单析取式恒为真可以从合取范式中删去,也不会影响合取范式的真值。同一律
设ll是一个文字(命题变元), 则
lc={¬p若l=pp若l=¬plc={¬p若l=pp若l=¬plclc为ll的补
空文字λλ,是永远不可满足的,因为没有任何赋值可以使其为真。
定义:
消解式或者消解结果:现在有两个简单析取式,C1,C2C1,C2,C1C1中有文字ll, C2C2中有文字ll的补lclc,那么从C1,C2C1,C2中分别消去l,lcl,lc,得到C′1,C′2C′1,C′2,把二者析取,此为C1,C2C1,C2的消解结果,记作Res(C1,C2)Res(C1,C2)
消解序列:回到合取范式,合取范式是多个简单析取式合取而来的,此时把所有的简单析取式放到一个序列里面(假设有mm个简单析取式)N={C1,C2,…Cm}N={C1,C2,…Cm}, 此时把可以消解(如Ci=Res(Cj,Ck)Ci=Res(Cj,Ck))的消解结果CiCi插入到插入到此集合,且1≤j≤k<i1≤j≤k<i, 最终得到的序列记作S={C1,C2,…,Cn}S={C1,C2,…,Cn}, (为了更好理解,这里再补充一点,最终序列的每一个简单析取式CiCi的前面的所有简单析取式都无法再消解了,也就是说,CnCn前面的所有简单析取式都无法消解了,可以把CnCn理解为最终的消解结果!),若最终消解项CnCn为空文字,那么说这个消解项就是序列S的一个否定.
定理:
2.4.1:(根据上面消解式的定义)得出:C1∧C2≈Res(C1,C2)C1∧C2≈Res(C1,C2)(表示约等号两侧的可满足性一致)
证明:
首先声明,C1,C2C1,C2都是简单析取式, 且若可以消解,则C1,C2C1,C2必然都各自有文ll字,以及文字的补lclc
先证明从左到右,若C1∧C2C1∧C2为可满足的式子,那么说C1,C2C1,C2内都各自至少存在一个文字为成真赋值。若这两个文字都不是l,或者lcl,或者lc, 那么经过ResRes,消解之后,也必然成正。若C1C1存在一个文字为ll为真(另外为lclc的情况与这里的情况是一致的),那么对应的C2C2中有lclc为假,而C1∧C2C1∧C2为真,那么C2C2内必然有一个不是lclc的文字为真,由消解法知道,这个为真的文字不会被消解掉,必然在消解后留下来了,而正是这个文字使得Res(C1,C2)Res(C1,C2)为真,所以若C1∧C2C1∧C2可满足, 那么Res(C1,C2)Res(C1,C2)也一定可以满足!
反之,若Res(C1,C2)Res(C1,C2)为可满足式,那么必然至少存在一个赋值为真的文字,如果是l′l′, 那么在反消解的时候,可以导出两种情况, 一种是两侧一侧有l′,lcl′,lc,另外一侧有ll, 第二种情况是一侧为l′,ll′,l, 另外一侧为lclc, 那么对于第一种情况,假设(α(l)=Trueα(l)=True)得出的C1∧C2C1∧C2必为可满足式(这相当显然),若为第二种情况其实是一个道理,我们只需要令α(lc)=Trueα(lc)=True, 那么得出来和情况一一致的结论,所以,若Res(C1,C2)Res(C1,C2)可以满足,那么C1∧C2C1∧C2必定可以满足。
2.4.2:若合取范式SS不可满足,那么SS有否证。(证明太麻烦了,当作结论记住,要证明的话使用数学归纳法)
推论:
由定理2.4.1知:若给定的一个合取范式,那么我们可以使用此定理一直消解,最后形成一个简单析取式,由于可满足性相同,那么最后只需要证明简单析取式,就等价的证明了原来的合取范式,若最后消解出来一个空文字λλ, 那么这个合取范式就是不可满足的。
若合取范式的消解序列有否定,那么合取范式不可满足。(经过上面的论述,应该很好理解了!)
由推论一和定理2.4.2推出: 若合取范式为不可满足式,当且仅当其消解序列有否证。
消解法结题步骤:
第3章 命题逻辑的推理理论#
导读, 前面2章讲述的大体与等价关系有很大联系,比如说公式的可满足性,16个基本等价式化简合式公式。
本章侧重点则放在了蕴涵关系。
3.1 推理的形式结构#
老规矩:先看定义
定义:
推理:从前提推出结论的思想过程
前提:已知命题公式的集合
结论:从前提出发,应用推理规则得出的新的命题公式。
有效结论:(书上给出的定义太过专业,这里转述一下)现有若干有限前提(已知的命题公式)组成集合S={A1,A2,…,An}S={A1,A2,…,An}, 有一个待证的命题公式BB,若对于命题公式A1∧A2∧⋯∧AnA1∧A2∧⋯∧An的所有成正赋值都可以使得BB为真,那么说BB是由前提S={A1,A2,…,An}S={A1,A2,…,An},推出的有效结论.记由SS推理出BB为S⊢BS⊢B, 若推理正确则记作S⊨BS⊨B, 否则记作S⊭BS⊭B.(一条横线表示过程,两条横线表示结果)
定理:
3.1.1:(由定义有效结论):
命题公式A1,A2,…,AnA1,A2,…,An推出BB的推理正确,当且仅当
A1∧A2∧⋯∧An→BA1∧A2∧⋯∧An→B为重言式。
推论:
9个推理定律
名称 推理式 附加律 A⇒(A∨B)A⇒(A∨B) 化简律 A∧B⇒AA∧B⇒A 假言推理 A∧(A→B)⇒BA∧(A→B)⇒B 拒取式 (A→B)∧¬B⇒¬A(A→B)∧¬B⇒¬A 析取三段论(消解) (A∨B)∧¬B⇒A(A∨B)∧¬B⇒A 假言三段论 (A→B)∧(B→C)⇒(A→C)(A→B)∧(B→C)⇒(A→C) 等价三段论 (A↔B)∧(B↔C)⇒(A↔C)(A↔B)∧(B↔C)⇒(A↔C) 构造性二难 (A→B)∧(C→D)∧(A∨C)⇒(B∨D)(A→B)∧(C→D)∧(A∨C)⇒(B∨D) 破坏性二难 (A→B)∧(C→D)∧(¬B∨¬D)⇒(¬A∨¬C)(A→B)∧(C→D)∧(¬B∨¬D)⇒(¬A∨¬C)
3.2 自然推理系统 P#
定义:
形式系统I
- 非空的字母表A(I)A(I)
- A(I)A(I)中的字符构造的合式公式集E(I)E(I)
- E(I)E(I)中一些特殊的公式组成的公理集AX(I)AX(I)
- 推理规则集R(I)R(I)
将II记作4元组<A(I),E(I),AX(I),R(I)><A(I),E(I),AX(I),R(I)>
<A(I),E(I)><A(I),E(I)>为II的形式语言系统
<AX(I),R(I)><AX(I),R(I)>为II的形式演算系统
自然推理系统P
- 字母表:
- 命题变元符号:p,q,r,…,pi,qi,ri,…(i≥1)p,q,r,…,pi,qi,ri,…(i≥1)
- 联结词符号:¬,∨,∧,→,↔¬,∨,∧,→,↔
- 括号与逗号:( , )
- 合式公式
- 推理规则:
- 前提引入: 在证明的任意步骤都可以引入前提
- 结论引入: 在证明的任何阶段得到的中间结论都可以作为前提引入
- 置换规则: 任何公式的子公式可以使用等值的公式进行替换,得到公式序列中的有一个公式
- 九条推理规则
定理:
3.2.1:附加前提的证明法:
当推理的形式为
(A1∧A2∧⋯∧Ak)→(A→B)(A1∧A2∧⋯∧Ak)→(A→B)可以转化为证明
(A1∧A2∧⋯∧Ak∧A)→B(A1∧A2∧⋯∧Ak∧A)→B使用基本等价式的转换就可以发现上下两式实际上是完全等价的。
3.2.2:归谬法
当推理的形式为
(A1∧A2∧⋯∧Ak)→B(A1∧A2∧⋯∧Ak)→B可以证明
(A1∧A2∧⋯∧¬B)→False(A1∧A2∧⋯∧¬B)→False若可以证明,则可以推出BB, 否则无法得出BB
3.2.3:消解法:
消解法证明实际上是利用的消解法和归谬法综合出来的一个证明方法
- 先把所有前提,结论的否定都转化为简单析取式的形式。
- 然后利用消解Res(C1,C2)Res(C1,C2)逐渐消解
- 若最后得到了空文字,则说明可以得出目标结论,否则不可以。
这里是正在码字的Mushroom,其实我越是学数理逻辑这一块,就越是觉得其中蕴涵了很大的哲学观点,让我感觉非常奇妙,下一章上升到了谓词逻辑,这是语义的进一步泛化,期待。
第4章 一阶逻辑基本概念#
命题逻辑的局限性, 命题逻辑的泛化性实际山很差,一个命题只能描述一件事物的真假,不可以描述一类事物(对象语言),此时我们学习的谓词逻辑将把泛化性提升,更有助于定理的数学化表示。
4.1 一阶逻辑命题的符号化#
老规矩,先看定义!!!!!!😄
定义:
个体词: 表示研究对象中可以独立存在的具体的或者抽象的客体。(凡客观事物都可以作为个体词,比如说水壶,手表,剃须刀...)
个体常元,个体变元: 命题逻辑里面也存在变元与常元,这里的个体常元与个体变元分别指的是抽象的,具体的,个体常元是具体的事物,个体变元是抽象事物。
个体域:个体域是个体变元的取值范围(又叫做论域)。
全总个体域:所有个体变元都可以使用的一个个体域。(包含一切!!!!)
谓词:刻画个体词与个体词之间关系的词,使用F,G,HF,G,H表示。
谓词常项,谓词变项:前者表示具体的关系或者性质,可以说出来的,描述出来的,后者表示抽象的性质与关系。
n元谓词:含有nn个个体变项的谓词为nn元谓词
0元谓词: 不带任何个体变项的谓词,当谓词为谓词常项时,为命题。
量词: 刻画个体常项或者个体变项之间的数量关系的词。
- 全称量词, 表示所有∀∀, 如 ∀xF(x)∀xF(x), 表示在个体域中所有的xx都有F(x)F(x)性质.
- 存在量词, 表示存在∃∃, 如∃xF(x)∃xF(x),表示在个体域中存在有一个xx拥有性质F(x)F(x)
一上来定义有点多,但相信我,定义多就像是数学题的条件多,那么解起来自然顺手,所以不要慌!!
4.2 一阶逻辑公式及其解释#
定义:
一阶语言:用于一阶逻辑的形式语言, 而一阶逻辑是建立在一阶语言上的逻辑体系。
非逻辑符号:不表示逻辑关系的符号, 如个体常项,函数符号,谓词符号。
逻辑符号:个体变项符号,量词符号,联结词符号,括号与逗号都为逻辑符号。
字母表:一阶语言BB的字母表包括以下符号
非逻辑符号(1)L中的个体常项符号,常用a,b,c,⋯或者ai,bi,ci,…,(i≥1)表示(2)L中的函数的符号,常用小写字母f,g,h,…,或者,fi,gi,hi,…(i≥1)表示(3)L中的谓词符号,常用F,G,H,…,或者Fi,Gi,Hi,…,(i≥1)表示逻辑符号(4)个体变项符号:x,y,z,…,xi,yi,zi,…(i≥1).(5)量词符号:∀,∃(6)联结词符号:∨,∧,¬,→,↔(7)括号与逗号:(),非逻辑符号(1)L中的个体常项符号,常用a,b,c,⋯或者ai,bi,ci,…,(i≥1)表示(2)L中的函数的符号,常用小写字母f,g,h,…,或者,fi,gi,hi,…(i≥1)表示(3)L中的谓词符号,常用F,G,H,…,或者Fi,Gi,Hi,…,(i≥1)表示逻辑符号(4)个体变项符号:x,y,z,…,xi,yi,zi,…(i≥1).(5)量词符号:∀,∃(6)联结词符号:∨,∧,¬,→,↔(7)括号与逗号:(),(1)(2)(3)(4)(5)(6)(7)(8)(9)项的定义:
B的项的定义如下:(1)个体常项符号和个体变项符号(个体词)都是项。(2)若φ(x1,x2,…,xn)是n元函数符号,t1,t2,…,tn是n个项,则φ(t1,t2,…,tn)是项。(3)所有的项都是有序使用(1)(2)得到的。B的项的定义如下:(1)个体常项符号和个体变项符号(个体词)都是项。(2)若φ(x1,x2,…,xn)是n元函数符号,t1,t2,…,tn是n个项,则φ(t1,t2,…,tn)是项。(3)所有的项都是有序使用(1)(2)得到的。(10)(11)(12)(13)原子公式:设R(x1,x2,…,xn)是B的n元谓词符号,t1,t2,…,tn是B的n个项,则称R(t1,t2,…,tn)为B的原子公式R(x1,x2,…,xn)是B的n元谓词符号,t1,t2,…,tn是B的n个项,则称R(t1,t2,…,tn)为B的原子公式
理解:可以如此理解,本章实际上把上三章的命题拆分了,拆出了三大部分,个体词,谓词,量词,如此描述的更加细致了。就算是原子命题也可以拆分成为上述的三项。
合式公式:
B的合式公式的定义:(1)原子公式是合式公式(2)若A是合式公式,¬A也是合式公式(3)若A,B是合式公式,则二者之间的逻辑元算也是合式公式(∨,∧,∀,∃)(4)若A为合式公式,那么加上量词仍然是合式公式。(5)所有的合式公式,重复(1)到(4)都可以得到B的合式公式的定义:(1)原子公式是合式公式(2)若A是合式公式,¬A也是合式公式(3)若A,B是合式公式,则二者之间的逻辑元算也是合式公式(∨,∧,∀,∃)(4)若A为合式公式,那么加上量词仍然是合式公式。(5)所有的合式公式,重复(1)到(4)都可以得到(14)(15)(16)(17)(18)(19)指导变元与辖域: 在公式∀xA,∃xA∀xA,∃xA中,xx为指导变元,后为其量词的辖域,(注意!区分谓词与辖域,可以把辖域当作一种特殊的谓词,谓词可以不带连词,但是一旦说辖域,就一定存在量词的使用!!!)约束出现:xx的所有出现都是约束出现,而之外的其他变元则为自由出现.
闭式:不含自由出现的个体变项的公式为闭式,所有的个体变项都是约束出现的。
解释:(类比与元语言与对象语言)解释实际上是把原本抽象的合式公式的各个部分进行具象化赋值。
永真式,矛盾式,可满足式:区别于命题逻辑的赋值,这里变成了解释!!若对于所有的解释都是真,那么永真式。若对于所有的解释都是假那么为矛盾式,存在成真解释则为可满足式(矛盾式的反面!)。
代换实例:把谓词公式整体代换命题公式里的一个命题变元。(emmm, 感觉已经开始重复了!)
你看!这两小节都没啥定理,其实在做一件事,在命题逻辑的基础上逐渐起谓词逻辑的大厦,比方说优化了命题逻辑的底层,原子公式仍然可以再细分为三部分。上层可以使用谓词公式替换命题变项。也就是说谓词逻辑可以包含命题逻辑。如此,我们在下一节学习一阶逻辑等价运算也会更加好理解了。
第5章 一阶逻辑等值演算与推理#
5.1 一阶逻辑等值式与置换规则#
等值: 现在有两个合式公式AA, BB,若A↔BA↔B是重言式,那么就说 A⇔BA⇔B, AA与BB等价.(这和命题逻辑里面的定义位完全一致)
一阶逻辑基本等值式
记得吗,上一章的代换规则告诉我们,谓词公式与命题变项之间可以互相替换!那么适用于命题公式的16个基本等值式在一阶逻辑里面仍然适用。
名称 表达式 双重否定 A⇔¬¬AA⇔¬¬A 幂等律 A⇔A∨A,A⇔A∧AA⇔A∨A,A⇔A∧A 交换律 A∨B⇔B∨A,A∧B⇔B∧AA∨B⇔B∨A,A∧B⇔B∧A 结合律 A∨(B∨C)⇔(A∨B)∨CA∧(B∧C)⇔(A∧B)∧CA∨(B∨C)⇔(A∨B)∨CA∧(B∧C)⇔(A∧B)∧C 分配律 A∨(B∧C)⇔(A∨B)∧(A∨C)A∧(B∨C)⇔(A∧B)∨(A∧C)A∨(B∧C)⇔(A∨B)∧(A∨C)A∧(B∨C)⇔(A∧B)∨(A∧C) 德摩根律 ¬(A∧B)⇔¬A∨¬B¬(A∨B)⇔¬A∧¬B¬(A∧B)⇔¬A∨¬B¬(A∨B)⇔¬A∧¬B 吸收律 A∧(A∨B)⇔AA∨(A∧B)⇔AA∧(A∨B)⇔AA∨(A∧B)⇔A 零律 A∨False⇔AA∧False=FalseA∨False⇔AA∧False=False 同一律 A∨True⇔TrueA∧True⇔AA∨True⇔TrueA∧True⇔A 排中律 A∨¬A⇔TrueA∨¬A⇔True 矛盾律 A∧¬A⇔FalseA∧¬A⇔False 蕴涵等价式 A→B⇔¬A∨BA→B⇔¬A∨B 等价等价式 A↔B⇔(A→B)∧(B→A)A↔B⇔(A→B)∧(B→A) 假言异位 A→B⇔¬B→¬AA→B⇔¬B→¬A 等价否定等价式 A↔B⇔¬A↔¬BA↔B⇔¬A↔¬B 归谬论 (A→B)∧(A→¬B)⇔¬A(A→B)∧(A→¬B)⇔¬A 此外还有一阶逻辑中独有的部分
名称 公式 量词否定等值式 (1)¬∀xA(x)⇔∃x¬A(x) (2)¬∃xA(x)⇔∀x¬A(x)(1)¬∀xA(x)⇔∃x¬A(x) (2)¬∃xA(x)⇔∀x¬A(x)(20) 量词辖域收缩扩张等值式 (1)∀x(A(x)∨B)⇔∀xA(x)∨B ∀x(A(x)∧B)⇔∀xA(x)∧B ∀x(A(x)→B)⇔∃xA(x)→B ∀x(B→A(x))⇔B→∀xA(x)\(2)∃x(A(x)∨B)⇔∃xA(x)∨B&∃x(A(x)∧B)⇔∃xA(x)∧B ∃x(A(x)→B)⇔∀xA(x)→B ∃x(B→A(x))⇔B→∃xA(x)(1)∀x(A(x)∨B)⇔∀xA(x)∨B ∀x(A(x)∧B)⇔∀xA(x)∧B ∀x(A(x)→B)⇔∃xA(x)→B ∀x(B→A(x))⇔B→∀xA(x)\(2)∃x(A(x)∨B)⇔∃xA(x)∨B&∃x(A(x)∧B)⇔∃xA(x)∧B ∃x(A(x)→B)⇔∀xA(x)→B ∃x(B→A(x))⇔B→∃xA(x)(21) 量词分配等值式 (1)∀x(A(x)∧B(x))⇔∀xA(x)∧∀xB(x) (2)∃x(A(x)∨B(x))⇔∃xA(x)∨∃xB(x)(1)∀x(A(x)∧B(x))⇔∀xA(x)∧∀xB(x) (2)∃x(A(x)∨B(x))⇔∃xA(x)∨∃xB(x)(22) 上述的证明式子其实都是量词在作怪,要证明的化,我们需要了解到,全称量词实际上式所有辖域内个体常项产生的谓词公式的合取, 存在量词式所有辖域内个体常项产生的谓词公式的析取,然后在借助上述的16个基本等值式就可以完成证明!!
两条规则
- 置换规则: 与命题逻辑中的置换规则完全一致。
- 换名规则: 将量词辖域中的所有指导变元换成完全没有出现过的。∀xF(x,y,z)⇔∀tF(t,y,z)∀xF(x,y,z)⇔∀tF(t,y,z)
注意区别:代换规则, 置换规则, 换名规则
代换规则: 命题变项与谓词公式的代换
置换规则: 谓词公式之间的互换
换命规则: 切换指导变元的名称
5.2 一阶逻辑前束范式#
命题逻辑中存在范式是为了让大家写出来的公式有一个统一的标准,对于一阶逻辑同样需要有一个统一的标准,不然的化各自有各自的写法,也就不方便讨论了。
定义: (依然是定义)
前束范式:量词排在最前面,所有的谓词放在后面。(这里不是标准定义。)
定理:
前束范式存在定理:由于存在量词的分配,还有继承自命题逻辑的等值式,前束范式一定可以得到。
关于解题:
首先先换名, 每一个辖域的指导变元都给一个独一无二的名称。
使用量词分配,以及16个基本等值式,以及收缩扩张量词收束。
(着重记住收缩量词的两个特殊的点, 特性谓词在前的情况)
5.3 一阶逻辑的推理理论#
继承于命题逻辑的自然推理系统
额外多了4个规则,基于量词的规则。(不得不说量词真的是开创性的想法!)
- 全称量词的消去规则(∀−∀−)
∀xA(x)∴A(y)或∀xA(x)∴A(x)∀xA(x)∴A(y)或∀xA(x)∴A(x)
- 全称量词的引入规则(∀+∀+)
A(y)∴∀xA(x)A(y)∴∀xA(x)emmm, 关于全称量词的引入规则有一个强制的条件,那就是这个这个变元xx必须在所有前提条件中约束出现!!!!!(个人理解:也就是说对于x来说所有的前提条件都是闭式,所有的x都有前提条件给出的那些性质,那么我们只需要证明一组成立,那么对于所有的就都必然成立了。)
- 存在量词消去规则(∃−∃−)
∃xA(x)A(y)→B∴B或A(y)→B∃xA(x)→B∃xA(x)A(c)→B∴B或A(c)→B∃xA(x)→B∃xA(x)A(y)→B(23)(24)∴B或A(y)→B∃xA(x)→B∃xA(x)A(c)→B(25)(26)∴B或A(c)→B∃xA(x)→B量词消去的条件,yy同样为约束出现,所有条件中均约束出现
- 存在量词引入规则(∃+∃+)
A(y)∴∃xA(x)或B→A(y)∴B→∃xA(x)A(c)∴∃xA(x)或B→A(c)∴B→∃xA(x)A(y)∴∃xA(x)或B→A(y)∴B→∃xA(x)A(c)∴∃xA(x)或B→A(c)∴B→∃xA(x)引入的yy, cc均不是自由出现!!!!
这4条规则一定注意,除了第一条,其余的都必须关注是否存在自由出现,若自由出现!!则谨慎使用!!
至此,数理逻辑告一段落了,其实回过头来发现,本质上我们学习的过程实际上就是数理逻辑泛化的过程,从命题逻辑,到谓词逻辑,如果同学们学过编程,可以用继承这一词来概括。然后重构一些理论,但是大部分还是完美继承的,可用的,少部分特性如量词,我们需要额外创造一些定义定理去实现这个新特性。
定义总是最基础的,从定义导出定理,再从定理导出推论,这套科学研究方法将在后面的章节变得越来越常见。
第二部分 集合论#
第6章 集合代数#
虽然数理逻辑告一段落,但是其思想应当保留,相信我!!所以继续学习吧!
6.1 集合的基本概念#
这显然又是一节的定义,不慌,我们见识已经足够了!来吧!(中二起来了!)🐷🐷
定义:
集合:把一些事物汇集到一起组成一个整体就称作集合。 (集合不可以被精确的定义)。这些事物就是成员。
常见数集:自然数集N(包括0),整数集Z,有理数集Q,实数集R,复数集C自然数集N(包括0),整数集Z,有理数集Q,实数集R,复数集C
列举元素表示法与谓词表示法:S={1,2,3}S={1,2,3}, S={x|x≥1∧x≤3∧x∈N}S={x|x≥1∧x≤3∧x∈N}, (我说什么来这,列举元素表示法相当于命题逻辑,而谓词表示法相当于谓词逻辑,这衔接关系不就来了吗!)
属于,不属于:这是描述元素与集合关系描述性语言是用符号∈∈, ∉∉
子集与包含:现有两个集合式A,BA,B, 若A中所有的元素,B都有,那么称B包含A,记作A⊆BA⊆B,否则若不包含那么A⊈BA⊈B(注意区分中文的包含, 包含于)上述的例子中 B包含A, A包含于B(A被B包含)
集合相等:A,BA,B两个集合中所有元素都相等,你有的我也有,我有的你也有,那么这两个集合相等。符号化为
A=B⇔A⊆B∧B⊆AA=B⇔A⊆B∧B⊆A真·子集:如果 AA 包含于 BB, 且 AA不等于 B,则称 AA为 BB的真子集。
A⊆B∧A≠B⇔A⊂BA⊆B∧A≠B⇔A⊂B空集:什么元素也不含,啥也没有的集合∅∅, 可以谓词表示有很多,只要谓词公式恒为矛盾式即可。
∅={x|x≠x}或∅={x|x∈Z−∧x∈Z+∧x≠0}…∅={x|x≠x}或∅={x|x∈Z−∧x∈Z+∧x≠0}…幂集:集合AA的所有子集的集合。
P(A)={B|B⊆A}P(A)={B|B⊆A}(27)全集:具体问题中,问题所涉及的所有元素构成的集合被称作全集,常用符号EE表示
定理:
6.1.1:空集是所有集合的子集:
根据子集的定义,若A为B的子集,那么∀x((x∈A)→(x∈B)),而空集中没有元素,也就是说前件为假,命题必为真(谓词逻辑),故证毕!根据子集的定义,若A为B的子集,那么∀x((x∈A)→(x∈B)),而空集中没有元素,也就是说前件为假,命题必为真(谓词逻辑),故证毕!6.1.2:空集唯一:
假设空集不唯一,那么选出两个空集为∅1,∅2由于空集是所有集合的子集,那么∅1⊆∅2,∅2⊆∅1由于集合相等的定义,则∅1=∅2,如此便把多个空集全部破除,只留下一个空集∅假设空集不唯一,那么选出两个空集为∅1,∅2由于空集是所有集合的子集,那么∅1⊆∅2,∅2⊆∅1由于集合相等的定义,则∅1=∅2,如此便把多个空集全部破除,只留下一个空集∅6.1.3:幂集元素数:
根据二项式定理,每个集合中的元素要么选,要么不选,对应着两个状态,这一事件由|A|=n个状态叠加所以一P(A)有2n个元素根据二项式定理,每个集合中的元素要么选,要么不选,对应着两个状态,这一事件由|A|=n个状态叠加所以一P(A)有2n个元素
这些值是开胃小菜,继续往后看
6.2 集合的运算#
定义:
并集:AA,BB中所有元素所共同构成的集合。
交集:A,B中共有的元素构成的集合。
相对差集:A−BA−B,存在A中,而不在B中的元素构成的集合,易得出(A−B)⊆A(A−B)⊆A
A∪B={x|x∈A∨x∈B}A∩B={x|x∈A∧x∈B}A−B={x|x∈A∧x∉B}A∪B={x|x∈A∨x∈B}A∩B={x|x∈A∧x∈B}A−B={x|x∈A∧x∉B}不交:两个集合交集为空集
对称差集:A⊕B=(A∪B)−(A∩B)A⊕B=(A∪B)−(A∩B)
绝对补集:~A=E−A~A=E−A
广义交并:集合所有元素的交并组成的集合(谓词的感觉不就来了吗)
∩A={x|∀z(z∈A→x∈z)}∪A={x|∃z(z∈A∧x∈z)}∩A={x|∀z(z∈A→x∈z)}∪A={x|∃z(z∈A∧x∈z)}运算优先级: 广义交并,幂集绝对补为一类运算,一般县运算,其余的为二类运算
- 一类元算高于二类运算。
- 一类元算之间从右往左。
- 二类运算之间括号决定先后。
没错,整整一个小节的定义,没有定理,但是就如同最开始人类也制定一四则运算,却衍生出如今的数学大厦,所以需要有心理准备!!你准备好了吗!!
6.3 有穷集的计数#
从小节标题可以看出这不是一节定义,而是定理居多。
定义:
文氏图(Venn diagram):描述集合之间的相互关系的一种草图
定理:
6.3.1:包容排斥原理
设SS为有穷集,P1,P2,...,PnP1,P2,...,Pn是nn个性质,SS中的任何元素要么具有性质PiPi要么不具有性质PiPi,令AiAi表示SS中具有性质PiPi的元素构成的子集则SS中不具有性质P1,P2,...,PnP1,P2,...,Pn的元素构成的集合为
|¯A1∩¯A2∩⋯∩¯An|=|S|−n∑i=1|Ai|+∑1≤i<j≤n|Ai∩Aj|−∑1≤i<j<k≤n|Ai∩Aj∩Ak|+⋯+(−1)n|A1∩A2∩⋯∩An||¯A1∩¯A2∩⋯∩¯An|=|S|−n∑i=1|Ai|+∑1≤i<j≤n|Ai∩Aj|−∑1≤i<j<k≤n|Ai∩Aj∩Ak|+⋯+(−1)n|A1∩A2∩⋯∩An|(28)(29)Notice: ¯Ai¯Ai为~Ai~Ai
6.3.2: 包容排斥原理推论
|A1∪A2∪⋯∪An|=n∑i=1|Ai|−∑1≤i<j≤n|Ai∩Aj|+∑1≤i<j<k≤n|Ai∩Aj∩Ak|+⋯+(−1)n−1|A1∩A2∩⋯∩An||A1∪A2∪⋯∪An|=n∑i=1|Ai|−∑1≤i<j≤n|Ai∩Aj|+∑1≤i<j<k≤n|Ai∩Aj∩Ak|+⋯+(−1)n−1|A1∩A2∩⋯∩An|(30)(31)
相关证明包容排斥原理证明
6.4 集合恒等式#
和16个基本等价式一样,这里给出集合运算的等值式
集合等值式
名称 公式 幂等律 A∪A=A\A∩A=AA∪A=A\A∩A=A(32) 结合律 (A∪B)∪C=A∪(C∪B) (A∩B)∩C=A∩(C∩B)(A∪B)∪C=A∪(C∪B) (A∩B)∩C=A∩(C∩B)(33) 交换律 A∪B=B∪A\A∩B=B∩AA∪B=B∪A\A∩B=B∩A 分配律 A∪(B∩C)=(A∪B)∩(A∪C)\A∩(B∪C)=(A∩B)∪(A∩C)A∪(B∩C)=(A∪B)∩(A∪C)\A∩(B∪C)=(A∩B)∪(A∩C) 同一律 A∪∅=A A∩E=AA∪∅=A A∩E=A 零律 A∪E=E A∩∅=∅A∪E=E A∩∅=∅ 排中律 A∪~A=EA∪~A=E 矛盾律 A∩ A=∅A∩ A=∅ 吸收律 A∪(A∩B)=A A∩(A∪B)=AA∪(A∩B)=A A∩(A∪B)=A(34) 德摩根律 A−(B∪C)=(A−B)∩(A−C)&A−(B∩C)=(A−B)∪(A−C)&~(B∪C)=(~B)∩(~C)&~(B∩C)=(~B)∪(~C)&~∅=E&~E=∅A−(B∪C)=(A−B)∩(A−C)&A−(B∩C)=(A−B)∪(A−C)&~(B∪C)=(~B)∩(~C)&~(B∩C)=(~B)∪(~C)&~∅=E&~E=∅(35) 双重否定律 ~~A=A~~A=A
今天就写到这里,晚安各位!!!
第7章 二元关系#
诶嘿~我又回来了,现在是第二天的下午,配置了好一会儿的KDEKDE桌面,期间觉得不太习惯就了,结果图形化界面进不去了,差点这份整理的笔记就没有了!!危~不说闲话了,继续往后复习。
这一章开始介绍二元关系,从此章开始,难度将逐渐上升,各位做好心理准备。
7.1 有序对与笛卡尔积#
定义:
有序对,序偶:由两个元素x,yx,y按照先后的顺序排列成的一个二元组,如<x,y><x,y>,xx为第一元素,yy为第二元素
笛卡尔积:(集合层面的新运算)现有两个集合A,BA,B, AA中的元素为第一元素,BB中元素为第二元素,记作A×BA×B
A = [a, b, c, ...] B = [m, n, o, ...] AtimesB = for elemA in A: for elemB in B: AtimesB.append(elemA X elemB)
定理:
笛卡尔积相关性质:
- A×∅=∅,∅×A=∅A×∅=∅,∅×A=∅,空集没有元素,可以从我上述的代码理解,一上来就为假,根本无法生成笛卡尔积
- 笛卡尔积一般情况下不满足交换律,只有当一方为空集的时候满足交换律。
- 笛卡尔积不满足结合律,当参与运算的集合都为空集的时候。
- 笛卡尔积对集合的交并运算满足分配律。
- A⊆B∧C⊆D⇒A×C⊆B×DA⊆B∧C⊆D⇒A×C⊆B×D
注意这里的逆运算不一定成立.
- 当A=C=∅A=C=∅时,注意到左右两侧是成立的
- 当A≠∅,C≠∅A≠∅,C≠∅时,右侧为正,那么由于笛卡尔积的定义第一元素集合B一定包含第一元素集合A,同理对于CD,那么此时也成立
- 当A,C一方为∅∅ 时, 如令A为空集A为空集,CC不为空集,此时右侧为真,左侧第一个包含式为真,但是第二个就说不准了,可能D为空集,按照右侧为真,空集可以包含空集,所以D可能为空,但是C不可以包含于一个空集!!C不可以包含于一个空集!!所以这个性质是一个推理式而非等价式。
7.2 二元关系#
定义:
二元关系:规定如果一个集合满足下面两个条件之一后,那么称此集合为一个二元关系。
- 集合非空,且它的元素都是有序对;
- 集合是空集。
对于二元关系RR, 如果说<x,y>∈R,则记作xRy;如果<x,y>∉R,记作x⧸Ry<x,y>∈R,则记作xRy;如果<x,y>∉R,记作x/Ry
从A到B上的二元关系:A×BA×B的所有的子集称作AA到BB的二元关系,特别的当此二元关系集合为B=AB=A时,称作A上的二元关系
空关系:对于任何集合A,空集$\varnothing 是是A\times A$的子集称作A上的 空关系
全域关系:全域关系EA=A×A全域关系EA=A×A
恒等关系: IA={<x,x>|x∈A}IA={<x,x>|x∈A}
小于等于关系:LA={<x,y>|x,y∈A,x≤y}LA={<x,y>|x,y∈A,x≤y}
整除关系: DA={<x,y>|x,y∈A,x|y}DA={<x,y>|x,y∈A,x|y}, x整除yx整除y是指yy是xx的倍数。
包含关系: R⊆={<x,y>|x,y∈A,x⊆y}R⊆={<x,y>|x,y∈A,x⊆y}
描述一个关系可以使用上述的集合表达式去表示一个关系,还可以使用关系矩阵与关系图来表示,下面介绍这另外的两种表示法.
设A={x1,x2,x3,…,xn}A={x1,x2,x3,…,xn}, RR是使用AA上的关系,令
则
是RR的关系矩阵
而关系图是表示<xi,xj><xi,xj>存在一条由xixi指向xjxj的弧线(图的表示法相当重要,后面使用的会很多!!)
7.3 关系的运算#
定义:
设R是二元关系(1)R中所有有序对的第一元素构成的集合为R的定义域,记作domR,表示为domR={x|∃y(<x,y>∈R)}(2)R中所有的有序对的第二元素构成的集合称作R的值域,记作ranR,表示为ranR={y|∃x(<x,y>∈R)}(3)R的值域和定义域的并集为R的域。记作fldR,表示为fldR=domR∪ranR设R是二元关系(1)R中所有有序对的第一元素构成的集合为R的定义域,记作domR,表示为domR={x|∃y(<x,y>∈R)}(2)R中所有的有序对的第二元素构成的集合称作R的值域,记作ranR,表示为ranR={y|∃x(<x,y>∈R)}(3)R的值域和定义域的并集为R的域。记作fldR,表示为fldR=domR∪ranR(36)(37)(38)(39)逆关系:有序对第一第二元素互换位置得到的有序对组成的关系为逆关系。记作R−1R−1, R−1={<y,x>|<x,y>∈R}R−1={<y,x>|<x,y>∈R}
右复合:是关系的运算,现有两个关系F,GF,G, G对F的右复合记作F∘GG对F的右复合记作F∘G,谁在右边就是谁对谁的右复合。∘∘符号很方便的看出来复合得到的关系的第一元素第二元素的组成如何。🐖
F∘G={<x,y>|∃t(<x,t>∈F∧<t,y>∈G)}F∘G={<x,y>|∃t(<x,t>∈F∧<t,y>∈G)}限制: 限制是限制的定义域
R↑A={<x,y>|<x,y>∈R∧x∈A}R↑A={<x,y>|<x,y>∈R∧x∈A}像:限制下的值域
R[A]=ran(R↑A)R[A]=ran(R↑A)
定理:
运算优先级规定逆运算>关系运算>集合运算逆运算>关系运算>集合运算
7.1.1:
(1)(F−1)−1=F(2)domF−1=ranF,ranF−1=domF(1)(F−1)−1=F(2)domF−1=ranF,ranF−1=domF(40)(41)7.1.2:
(F∘G)∘H=F∘(G∘H)(F∘G)−1=(G−1∘F)(F∘G)∘H=F∘(G∘H)(F∘G)−1=(G−1∘F)(42)(43)7.1.3:
设R上为A上的关系,IA为A上的恒等关系R∘IA=IA∘R=R设R上为A上的关系,IA为A上的恒等关系(44)R∘IA=IA∘R=R恒等关系的子集将不再是A的恒等关系,恒等关系的定义是定义在A集合的所有元素上的。
7.1.4:和笛卡尔积对集合交并满足分配律一致,关系的复合运算也满足集合的交并运算的分配律。
7.1.5:关系的限制与像同样对集合的交并满足分配律
7.1.6:设RR上AA上的关系,定义RR的nn词幂为下
(1)R0=IA(2)Rn+1=Rn∘R(1)R0=IA(2)Rn+1=Rn∘R(45)(46)7.1.7:有限关系集合的次幂是循环的。
证明:现在假设存在一个集合为AA, RR为AA上的关系。不妨假设RR是最复杂的一个关系,即全域关系EAEA,那么集合的元素为一共有|A|×|A||A|×|A|个,不妨假设|A|=n|A|=n,那么全域关系一共拥有的有序对数为n2n2,那么非全域关系数,可以使用二项式定理的思想得到,每一个有序对,要么拿要么不拿,则所有集合数为|P(R)|=2n2|P(R)|=2n2个,那也就是说当几个的元素个数限定时,必然会出现循环!!
7.1.8:
(1)Rm∘Rn=Rm+n(2)(Rm)n=Rmn(1)Rm∘Rn=Rm+n(2)(Rm)n=Rmn(47)(48)
7.4 关系的性质#
定义:设RR为AA上的关系
自反性:若∀x(x∈A→<x,x>∈R)∀x(x∈A→<x,x>∈R),也就是说每个A上的独立的点,都拥有一个自己到自己的关系
反自反性:若∀x(x∈A→<x,x>∉R)∀x(x∈A→<x,x>∉R), 不存在任何自己到自己的关系。
对称性:若∀x∀y(<x,y>∈R∧x∈A∧y∈A→<y,x>∈R)∀x∀y(<x,y>∈R∧x∈A∧y∈A→<y,x>∈R)
反对陈性:若∀x∀y(x,y∈A,∧<x,y>∈R∧<y,x>∈R→x=y)∀x∀y(x,y∈A,∧<x,y>∈R∧<y,x>∈R→x=y)泛对称可以理解为不存在对称,若说有对称那么最多可能为恒等关系带来的对称(伪对称)
传递性:若∀x∀y∀z(x,y,z∈A∧<x,y>∈R∧<y,z>∈R→<x,z>∈R)∀x∀y∀z(x,y,z∈A∧<x,y>∈R∧<y,z>∈R→<x,z>∈R)
性质:
7.4.1:设R为A上的二元关系
(1)R在A上自反,当且仅当R∩IA=IA.(2)R在A上反自反,当且仅当R∩IA=∅.(3)R在A上对称,当且仅当R=R−1(4)R在A上反对称,当且仅当R∩R−1⊆IA(5)R在A上传递,当且仅当R∘R⊆R(1)R在A上自反,当且仅当R∩IA=IA.(2)R在A上反自反,当且仅当R∩IA=∅.(3)R在A上对称,当且仅当R=R−1(4)R在A上反对称,当且仅当R∩R−1⊆IA(5)R在A上传递,当且仅当R∘R⊆R(49)(50)(51)(52)(53)自反是否有恒等,有就是自反,没有就是反自反。
对称者逆与本身完全相同
反对称交集包含于恒等关系,从此处看得出对称的要求比自反要求多很多
表示 性质 自反性 反自反性 对称性 反对称性 传递性 关系矩阵 主对角线全为1 主对角线全为0 可以沿着主对角线转置 只有对角线上的可以行列互换 若存在r(is),r(sj),则有r(ij) 关系图 所有元素节点都有环 所有节点都没有环 双线桥 不存在双线桥 若存在A到B,B到C则有A到C
7.5 关系的闭包#
定义:
关系的闭包:关系的闭包大多数情况下不与原关系相等,关系的闭包是为了使得原关系具有某种性质而进行添加删除有限有序对后的一个性的关系R′R′, (添加或者删除最少的元素!要求损失代价最少!如果没有规定如何添加删除,那么结果就是不确定的,这是数学讨厌的东西。)
自反(对称,传递)闭包:
设R是非空集合A上的一个关系,R的自反(对称,传递)闭包是A上的关系R‘,那么R′满足下面的关系(1)R′是自反(对称,传递)(2)R⊆R′(3)对于A上的任何包含R的自反(对称,传递)闭包Ri,都有R′⊆Ri设R是非空集合A上的一个关系,R的自反(对称,传递)闭包是A上的关系R‘,那么R′满足下面的关系(1)R′是自反(对称,传递)(2)R⊆R′(3)对于A上的任何包含R的自反(对称,传递)闭包Ri,都有R′⊆Ri(54)(55)(56)(57)一般对于上述三闭包有特定的称呼:
- 自反闭包,r(R)r(R) reflect
- 对称闭包,s(R)s(R) semetry
- 传递闭包,t(R)t(R) transit
定理:
7.5.1:
(1)r(R)=Ro∪R(2)s(R)=R∪R−1(3)t(R)=R∪R2∪…(1)r(R)=Ro∪R(2)s(R)=R∪R−1(3)t(R)=R∪R2∪…(58)(59)(60)证明的时候记住三点,(1)满足关系,(2)R⊆R′R⊆R′,(3)最小的闭包
计算可达矩阵:
法一: 遍历关系矩阵的次幂,然后求累加和,使用逻辑加。
法二: Warshall算法计算传递关系矩阵(可达矩阵)
定义n+1n+1个矩阵M0,M1,…,MnM0,M1,…,Mn, Mk(i,j)=1Mk(i,j)=1表示存在xixi到xjxj的路且除了端点,其余的点只能从{x1,x2,x3…xk}{x1,x2,x3…xk}得到,M0M0为原关系矩阵,MnMn为所求的矩阵。现在定义递推式,假设已经得到了MkMk, 要想计算Mk+1Mk+1需要分两种情况,第一种不经过xk+1xk+1,则如果Mk(i,j)=1Mk(i,j)=1,则Mk+1(i,j)=1Mk+1(i,j)=1,若经过xk+1xk+1,则需要观察Mk(i,k+1),Mk(k+1,j)Mk(i,k+1),Mk(k+1,j)是否都等于1,若都等于1,则说明Mk+1(i,j)Mk+1(i,j)存在一条从xixi到xjxj的路,且满足上述MkMk的定义。
# relMatrix = [[] ...] for k in range(0, n): for i in range(0, n): for j in range(0, n): M[i,j] = M[i, j] + M[i, k] & M[k, j]
7.5.2:设R是A上的关系则
(1)R是自反的当且仅当r(R)=R(2)R是对称的当且仅当s(R)=R(3)R是传递的当且仅当t(R)=R(1)R是自反的当且仅当r(R)=R(2)R是对称的当且仅当s(R)=R(3)R是传递的当且仅当t(R)=R(61)(62)(63)7.5.3:设R1R1, R2R2是A上的关系,且R1⊆R2R1⊆R2则
(1)r(R1)⊆r(R2)(2)s(R1)⊆s(R2)(3)t(R1)⊆t(R3)(1)r(R1)⊆r(R2)(2)s(R1)⊆s(R2)(3)t(R1)⊆t(R3)(64)(65)(66)7.5.4:设RR为非空集合AA上的一个关系:
(1)若R是自反的,则s(R),t(R)也是自反的(2)若R是对称的,则r(R),t(R)也是对称的(3)若R是传递的,则r(R)也是传递闭包,但是s(R)不一定,沿着双向边传递后,得到的是绕自己的环,因此若是自反闭包的传递闭包,也就是tr(R),则对称闭包一定传递自反。(1)若R是自反的,则s(R),t(R)也是自反的(2)若R是对称的,则r(R),t(R)也是对称的(3)若R是传递的,则r(R)也是传递闭包,但是s(R)不一定,沿着双向边传递后,得到的是绕自己的环,因此若是自反闭包的传递闭包,也就是tr(R),则对称闭包一定传递自反。(67)(68)(69)(70)传递闭包应当放在对称闭包的后面,这是由于对传递闭包使用对称闭包求解会导致其丧失传递性,为了保证传递性存在需要把传递闭包求解放在对称闭包求解之后。
7.6 等价关系的划分#
重难点来了
定义:
等价关系:若一个定义在非空集合AA上的关系RR,若RR是自反的,对称的,传递的,那么说RR是建立在A上的一个等价关系。若<x,y>∈R,R为一个等价关系<x,y>∈R,R为一个等价关系,则x∼yx∼y.
等价类:设RR是定义在非空集合AA的等价关系,则记其等价类为[x]R={y|y∈A∧xRy}[x]R={y|y∈A∧xRy}, (等价类是一个集合,是元素的集合,而由这个元素的集合组成的关系集合是等价的(自反的,传递的,对称的))
例, A={1,2,3,4,5,6,7,8}A={1,2,3,4,5,6,7,8}, 定义在A上的取余关系 R={<x,y>|x,y∈A∧x≡y(mod3)}R={<x,y>|x,y∈A∧x≡y(mod3)}
若使用关系图表示的化,上述的问题将被划分为3个独立的图,使用图论里面的描述为不连通。得到[1],[2],[0][1],[2],[0]
商集:(这是重点!!) 设RR为非空集合AA上的等价关系,以及RR的所有等价类作为元素的集合称为AA关于RR的商集。
记作A/RA/R
A/R={[x]R|x∈A}A/R={[x]R|x∈A}商集是集合,但是集合的元素是集合。
商集不太好理解,我们重新在梳理一下思路。
- R是A上的等价关系,也就是自反的,若有去则必有回(对称性), 传递的。但是满足这些条件的等价关系不是仅仅一个。你可以想象,如果有上述说的两个等价关系,你把这两个等价关系放到一起,你仍然可以说这两个集合共同构成了一个等价关系(自反,对称,传递),如此合理!!
- 划分等价关系的等价类的意思是,当前的等价关系是等价类这不假,但是是不是最小的呢?这不敢保证,等价类你可以理解为最小的那一个具有等价关系的类。比如上面的mod3mod3同余类,就出现了3种等价类。
- 等价关系描述A,等价类描述A的子集,相当于找了一种划分A集合子集的方法。
划分:设A为非空集合,若A的子集族为π={x∧x∈P(A)}π={x∧x∈P(A)}, 且满足以下条件时:
- ∅∉π∅∉π
- ∀x∀y(x,y∈π∧x≠y→x∩y=∅)∀x∀y(x,y∈π∧x≠y→x∩y=∅)
- ∪π=A∪π=A
则称$\pi为A的一个划分,\pi 中的元素是划分块。
定理:
7.6.1:设RR是非空集合AA上的一个等价关系,则:
(1)∀x∈A,[x]是A的非空子类。(2)∀x,y∈A,若xRy,则[x]=[y](3)∀x,y∈A,若x⧸R,则[x]≠[y],不交(4)∪{[x]|x∈A}=A(1)∀x∈A,[x]是A的非空子类。(2)∀x,y∈A,若xRy,则[x]=[y](3)∀x,y∈A,若x/R,则[x]≠[y],不交(4)∪{[x]|x∈A}=A(71)(72)(73)(74)定理7.6.1的第4条在说,一个确定的集合不论如何都可以划分为有限个等价类的并集的形式,一个元素的二元关系如<a,a><a,a>是一个自反,传递,对称,反对称的
7.7 偏序关系#
偏序关系,可以理解为大于等于关系,但其实是更加泛化的表现,后面在学习代数系统的时候会再次利用到这里的偏序关系去重新定义。所以让我开始吧
定义:
偏序关系:不同于上一节的等价关系,偏序关系是定义在非空集合A上的自反的,反对称的,传递的二元关系。记作$\preccurlyeq ,如果说,如果说<x,y>\in \preccurlyeq那么读作,那么读作,x小于等于小于等于y$.
思维转变:
不能简简单单的停留在数字的大小比较了,大小比较可以用顺序来作媒介去比较。就连数的大小实际上也是我们在潜移默化中定义了一个顺序,所以以后的小于等于这种偏序关系,指的就是出现的顺序的 问题。谁(x)先出现谁就是<x,y>的第一元素,后出现的可以作为第二元素。(第一元素摆在前面,第二元素摆在后面)
比方说整除关系{<x,y>|x,y∈A∧x|y}{<x,y>|x,y∈A∧x|y}2≼42≼4, 2可以整除4。
设≼≼为非空集合A上的偏序关系,则有如下定义
(1)若<x,y>∈≺,则<x,y>∈≼∧x≠y(2)若∀x,y,x与y可比,则<x,y>∈≼∨<y,x>∈≼(1)若<x,y>∈≺,则<x,y>∈≼∧x≠y(2)若∀x,y,x与y可比,则<x,y>∈≼∨<y,x>∈≼(75)(76)全序关系:所有元素可比(如数的比较大小就是一个全序关系)
偏序集:集合A和A上的偏序关系一起被称作偏序集,<A,≼><A,≼>
覆盖:设<A,≼><A,≼>为一个偏序关系,若∀x,y∈A∀x,y∈A,x≺yx≺y,且不存在zz使得x≺z≺yx≺z≺y成立,那么我们称yy覆盖了xx(这与图论中的相关名词的定义很相像!)
可以利用覆盖来确定一个哈迪斯图,下面是整除关系的图{1,2,3,4,5,6,7,8,9}{1,2,3,4,5,6,7,8,9}
可以发挥想象,所有的质数分布在颗整除关系树的第二层。
设<A,≼><A,≼>偏序集,B⊆A,y∈BB⊆A,y∈B则:
(1)若∀x∈B(y≼x)表明y为最小元(2)若∀x∈B(x≼y)表明y为最大元(3)若∀x(x∈B∧x≼y→x=y)表明y为极大元(4)若∀x(x∈B∧y≼x→x=y)表明y为极小元(1)若∀x∈B(y≼x)表明y为最小元(2)若∀x∈B(x≼y)表明y为最大元(3)若∀x(x∈B∧x≼y→x=y)表明y为极大元(4)若∀x(x∈B∧y≼x→x=y)表明y为极小元(77)(78)(79)(80)注意后面两种,极大元极小元,意思实际上是在可以比较里面寻找一个最大的,若前件为假比为真,这是蕴涵式的定义!!,所以整个定义是没有瑕疵的!是完备的!
设<A,≼><A,≼>为偏序集,B⊆AB⊆A, y∈Ay∈A
(1)若∀x(x∈B→x≼y)成立,则认为y为B的上界(2)若∀x(x∈B→y≼x)成立,则仍为y为B的下界(3)若C={y|y为B的上界},则称C的最小元为B的最小上界或者上确界(4)若C={y|y为B的下界},则称C的最大元为B的最大下界或者下确界(1)若∀x(x∈B→x≼y)成立,则认为y为B的上界(2)若∀x(x∈B→y≼x)成立,则仍为y为B的下界(3)若C={y|y为B的上界},则称C的最小元为B的最小上界或者上确界(4)若C={y|y为B的下界},则称C的最大元为B的最大下界或者下确界(81)(82)(83)(84)这里做下相关解释:(不懂算我输)
针对于前两个定义,先分析蕴涵式,前件必为真,后件为真的时候为真,后见为假则为假,y∈Ay∈A,(yy若在B中可能存在一个最大元,这没问题,但是更一般的情况是出现A−BA−B中),举个简单的例子:整数比较大小B=1,2,3,4,5,6,7,8,9B=1,2,3,4,5,6,7,8,9, 而A=ZA=Z,则可以很显而易见的知道10∈A10∈A,那么1010就是一个上界,大于10的,也都是上界,所以上界很可能不唯一!!!!这就需要一个上确界,也就是最小上界,上确界。(对于下确界我就不解释啦,很显然!!)
拓扑排序:需要用到很多图论的知识,暂时先放在这里,后面在讨论。
还是简单说一下,拓扑排序实际上是把一个偏序集<A,≼><A,≼>转化为一个全序集的思想,但是全序关系可能不是唯一的,但是却是有限的,只需要遍历所有的全序关系的优劣程度,选择最优的就可以解决单一机器的问题调度问题。
从章节的数量上面就可以看出,二元关系这一章是非常要的,实际上是衔接前面章节(一些基本思想),同时给后面章节作铺垫,比如说后面代数系统的一些定义,函数这一章(后面紧接着的一章)的基础也都是二元关系。
第8章 函数#
这里的函数不是以前说的f(x)=xxxxxf(x)=xxxxx这种函数,我们这一章讨论的函数是建立集合的相关概念的基础上的!!
那么就别犹豫了,现在开始!!!冲!!
8.1 函数的定义与性质#
老规矩,先看定义:
函数:设FF为二元关系,若∀x∈domF都存在唯一的y∈ranF使得xFy成立∀x∈domF都存在唯一的y∈ranF使得xFy成立则构成函数FF。(说白了就是 每一个domF里面的元素,都可以在ranF里面找到唯一的一个yy构成一个xFyxFy关系)
从定义里可以得到的信息:
- xx到yy是唯一映射
- xx占满的domFdomF
更加一般的函数:设有两个集合A,BA,B, 现有一个函数ff, 令domf=Adomf=A, 令ranf=Branf=B,则称f为A到B的函数f为A到B的函数即:
f:A→Bf:A→B可以得到的潜在信息:
- AA集合的所有元素都会使用~~
- 显然函数ff不是唯一的。
函数的集合:所有从集合A到集合B的函数集合为BABA, 读取B上的AB上的A, 符号化:
BA={f|f:A→B}BA={f|f:A→B}使用组合数学的角度来理解这个定义(我太苯了,后知后觉,害~~)
假设有这样的一个集合A={a,b,c,d},B={i,u,o}A={a,b,c,d},B={i,u,o}
此时我按照上面的形式写一遍
{i,u,o}{a,b,c,d},这就像是在做选择,每一个元素可以选择B中的一个,而A集合是肯定会选完的如此生成了各种各样的函数,但是各个函数的函数值域不一定相同,可能为{i},也可能为{i,u,o}{i,u,o}{a,b,c,d},这就像是在做选择,每一个元素可以选择B中的一个,而A集合是肯定会选完的如此生成了各种各样的函数,但是各个函数的函数值域不一定相同,可能为{i},也可能为{i,u,o}设函数:f:A→Bf:A→B ,A1⊆A,B1⊆BA1⊆A,B1⊆B
(1)令f(A1)={f(x)|x∈A1},f(A1)为A1在f下的像,如果当A1=A的时候,成f(A)为函数的像。(2)令f−1(B1)={x|x∈A∧f(x)∈B1}称f−1(B1)为B1在f下的完全原像。(1)令f(A1)={f(x)|x∈A1},f(A1)为A1在f下的像,如果当A1=A的时候,成f(A)为函数的像。(2)令f−1(B1)={x|x∈A∧f(x)∈B1}称f−1(B1)为B1在f下的完全原像。(85)(86)解释:
- 函数的像是一个集合,而不是一个具体的数值。
- 函数的像可以理解为ranran
- 完全原像可以理解为现在已经找到了一组函数值,但是不知道是通过那些定义域里面的值的来的,那么我们去在函数关系里面找配对的,凡是满足x∈A∧f(x)∈B1x∈A∧f(x)∈B1的xx都可以拿去丢到完全原像里面,如此便是我们想要的结果了。
函数三大性质
现有一个函数f:A→Bf:A→B
- 若函数的值域ranf=Branf=B那么我们称f:A→Bf:A→B是满射的。
解释:
- 函数的定义里面我们知道,函数的定义域的所有元素是一定会用到A中的所有元素的,而且必定有一个唯一的B中的值与之对应,但是没有说B中所有的元素就一定可以通过ff函数得到,所以ranf⊆Branf⊆B是完全可行的,满射就是对应这一点
- 若函数的对于每一个函数值y∈ranfy∈ranf, 都可以找到唯一的一个定义域中的值域之对应,那么我们说这个函数是单射的。
解释:
- 上面满射定义时严格限定了值域与B完全相同,但是虽说定义域的每一个值都可以找到一个唯一的函数值与之对应,但是无法保证每个函数值唯一对应一个定义域中的值。
0记忆: 单射联想单调,全局单调的时候就是单个函数值对应单个定义域中的值。
- 若函数既是满射又是单射,那么说这个函数是双射的。
记住!!!!!上面的满射,单射,双射非常重要!!!
常函数:值域单一,也就是说|B|=1|B|=1, 所有的定义域只能指向一个值也就是B中那个唯一的值。
恒等函数: 称AA上的恒等关系IAIA为AA上的恒等函数。(类似于f(x)=xf(x)=x)
单调递增,严格单调递增:现有两个偏序集<A,≼>,<B,≼><A,≼>,<B,≼>, 定义一个函数f:A→Bf:A→B
(1)若∀x1,x2∈A,x1≼x2,f(x1)≼f(x2),那么说f单调递增(2)若∀x1,x2∈A,x1≺x2,f(x1)≺f(x2),那么说f严格单调递增(1)若∀x1,x2∈A,x1≼x2,f(x1)≼f(x2),那么说f单调递增(2)若∀x1,x2∈A,x1≺x2,f(x1)≺f(x2),那么说f严格单调递增(87)(88)单调递减,严格单调递减:(the samethe same)
特征函数:特征函数是一种存在与否的布尔函数,现有一集合为AA, A′A′, A′⊆AA′⊆A,那么特征函数定义如下
χA′(x)={1x∈A′0x∈A−A′χA′(x)={1x∈A′0x∈A−A′自然映射:从集合到关系等价类的映射
设R为A上的等价关系,令g:A→A/Rg(a)=[a],∀a∈A设R为A上的等价关系,令g:A→A/Rg(a)=[a],∀a∈A(89)(90)称gg是从集合A到A的商集的自然映射。
一点遐想:
特征函数可以描述一个集合子集的一种状态,每个元素要么在要么不再,有两种状态,而这又与二项式定理给出的结论非常之类似。
对于自然映射,可以理解为物以类聚,人于群分的分类问题,每个人找到自己的等价类去抱团。
8.2 函数的复合与反函数#
定理:
8.2.1:设F,GF,G是函数, 则F∘GF∘G也是函数, 且满足
(1)dom(F∘G)={x|x∈domF∧F(x)∈domG}(2)∀x∈dom(F∘G)有F∘G(x)=G(F(x))(1)dom(F∘G)={x|x∈domF∧F(x)∈domG}(2)∀x∈dom(F∘G)有F∘G(x)=G(F(x))(91)(92)注意,这里扯一下之前谈到的关系的右复合, 结合过去学的与现在的函数复合作出以下的整理
- 函数的复合也是满足的右复合,
- 从整体上来看,左侧作为输入,一次一次地将输出的结果作为输入进入下面一个关系中。
- 最左侧的输入为最原始的定义域,最右侧的值域为最终的输出值域。
8.2.2:设F,GF,G是函数,则F∘GF∘G也是函数,那么如果F,GF,G都是满射(单射,双射)那么F∘GF∘G也是满射(单射,双射)。
8.2.3:函数与其恒等函数的复合还是原函数。 f=IA∘f=f∘IAf=IA∘f=f∘IA
8.2.4: 双射函数的逆函数也是双射的
8.2.5:设f:A→Bf:A→B是双射的
f∘f−1=IAf−1∘f=IBf∘f−1=IAf−1∘f=IB
推论:
设F,G,HF,G,H都是函数, F∘GF∘G, G∘HG∘H也都是函数
F∘(G∘H)=(F∘G)∘HF∘(G∘H)=(F∘G)∘H
8.3 双射函数与集合的基数#
定义:
等势:设A,B集合,如果存在从A到B的双射函数,那么称A和B是等势的,记作A≈BA≈B若A,BA,B不等势,那么称A≉BA≉B
优势:若存在f:A→Bf:A→B, f为单调函数f为单调函数, 则表示B优势于A, 记作A≼⋅BA≼⋅B 否则A⧸≼⋅BA/≼⋅B
真优势:存在单射函数并且不可能等势,那么说真优势记作A≺⋅BA≺⋅B,否则A≺⋅BA≺⋅B
有穷与无穷集:如果说一个集合与有穷集是等势的,那么说此集合是有穷的,否则为无穷的。
(1)对于有穷集合A,和其等势的那个自然数为其基数记作cardA,或者|A|cardA=n⇔A≈n(2)自然数集合N的基数记作χ0,阿列夫零(3)实数集R的基数记作χ,阿列夫(1)对于有穷集合A,和其等势的那个自然数为其基数记作cardA,或者|A|cardA=n⇔A≈n(2)自然数集合N的基数记作χ0,阿列夫零(3)实数集R的基数记作χ,阿列夫(93)(94)(95)(96)基数的相等或者大小关系可以推广到集合等势或者是优势。
基数与集合的势的大小完完全全就是一个对应关系,基数可以完全反映集合的势的大小。
自然数的基数为有穷基数,阿列夫零为最小的无穷基数,基数是无穷大的,不存在最大基数。
可数集:如果一个集合的基数小于等于阿列夫零,那么刺激和就是可数集。
对于可数集,总可以找到一个可以数遍集合中全体元素的顺序
性质:
等势是一个等价关系。(自反,对称,传递)
8.3.1:康托定理:
(1)N≉R(2)对于任意的集合A,都有A≉P(A)(1)N≉R(2)对于任意的集合A,都有A≉P(A)(97)(98)优势关系是一个偏序关系。
康托定理的证明
若直接使用上述集合基数与集合的势之间的一一对应关系我们很容易的发现,A≺⋅BA≺⋅B,幂集是指数级别的增长速度,但是集合的增长确实按照线性增长的。所以,|A|≤|P(A)||A|≤|P(A)|, 那么按照函数的关系,连函数都不满足了,自然谈不上f:A→P(A)f:A→P(A)的双射函数了。
简单说一下康托的对角线证明,这里试着简单说一下N≉RN≉R的证明:
(1)R≈[0,1]等势,那么根据等势的传递性,上述问题转化为证明N≉[0,1](2)实数的小数的位数是无穷的,那么可以使用自然数的构造方法去尝试着与自然数达成一一对应。{1⇔0.1000000000000000000…2⇔0.a100000000000000000…3⇔0.cv10000000000000000…4⇔0.adc1000000000000000…⋮⇔⋮按照这个规则,所有的自然数肯定可以在上述的[0,1]找到唯一的一个数与之对应,但是!如果把对对角线连接起来构成一个新的数,那这个数与谁等价呢?你会发现本来按照上述方法看似已经完美的建立起了一个映射,可是多出来的对角线实数却无法表示。推出了矛盾,所以不等势。具体而言R≼⋅N(1)R≈[0,1]等势,那么根据等势的传递性,上述问题转化为证明N≉[0,1](2)实数的小数的位数是无穷的,那么可以使用自然数的构造方法去尝试着与自然数达成一一对应。⎧⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎨⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎩1⇔0.1000000000000000000…2⇔0.a100000000000000000…3⇔0.cv10000000000000000…4⇔0.adc1000000000000000…⋮⇔⋮按照这个规则,所有的自然数肯定可以在上述的[0,1]找到唯一的一个数与之对应,但是!如果把对对角线连接起来构成一个新的数,那这个数与谁等价呢?你会发现本来按照上述方法看似已经完美的建立起了一个映射,可是多出来的对角线实数却无法表示。推出了矛盾,所以不等势。具体而言R≼⋅N(99)(100)(101)(102)(103)(104)
第三部分 代数结构#
第9章 代数系统#
本章开始后就开始颠覆认知了,你必须暂时抛弃所有的你关于数字运算的记忆,从0开始了解什么是运算,运算到底在说一件什么事情,有哪些性质?这章是升维后再降维打击前面的章节。话不多说,开搞!!
9.1 二元运算及其性质#
在定义之前先举个简单的例子:数字的加法是不是的表达式是 a+b=c,a,b,c∈Ra+b=c,a,b,c∈R先记在心里,然后开始定义什么是二元运算
定义:
二元运算:现有一集合S, 函数f:S×S→Sf:S×S→S称为SS上的二元运算。封闭且运算结果唯一
二元运算的封闭性:按照二元运算的定义,函数指向的必定是SS中的某一个元素,但是比如说定义在自然数集上面的减法,若减出负数的时候显然就不在自然数集了,那么我们认为自然数集对于减法是不封闭的。(若不封闭,函数肯定无法成立!!)
二元运算的主要性质:
现有一个定义在SS集合上的二元运算f:S∗S→Sf:S∗S→S, ∗∗是运算符,没有特指的意义。
若∀x,y∈S∀x,y∈S若x∗y=y∗xx∗y=y∗x那么称,SS对于∗∗运算满足交换律。
不要与二元关系那一章的对称性弄混了,具体说来二元运算是一个封闭的函数∀x,y,z∈S,f(<x,y>)→z,或者f(x∗y)→z∀x,y,z∈S,f(<x,y>)→z,或者f(x∗y)→z,是x,yx,y,交换后指向的仍然是同一个元素。 而对称性是指若x∗yx∗y存在那么y∗zy∗z也存在,强调存在而不强调指向同一个元素。
若∀x,y,z∈S,满足x∗(y∗z)=(x∗y)∗z成立,∀x,y,z∈S,满足x∗(y∗z)=(x∗y)∗z成立,那么说二元运算满足结合律
若∀x∈S∀x∈S若都有x∗x=xx∗x=x,那么我们认为二元运算满足幂等律。比如集合的交并运算就满足幂等律。
若不是所有的元素都满足,只有个别元素满足幂等律,那么称这些元素为幂等元,如整数加法运算中的0
设∗,∘∗,∘是定义在SS上的两个运算, 若∀x,y,z∈S∀x,y,z∈S有:
x∗(y∘z)=(x∗y)∘(x∗z)(左分配律)(y∘z)∗x=(y ∗x)∘(z∗x)(右分配律)x∗(y∘z)=(x∗y)∘(x∗z)(左分配律)(y∘z)∗x=(y ∗x)∘(z∗x)(右分配律)(105)(106)左右定义在xx的位置, 若上述两式成立一条就说 ∗对∘∗对∘可分配。
设∗,∘∗,∘是定义在SS上的两个运算, 若∀x,y,z∈S∀x,y,z∈S有:
(1)x∗(x∘y)=x(2)x∘(x∗y)=x(1)x∗(x∘y)=x(2)x∘(x∗y)=x(107)(108)则称∘,∗∘,∗满足吸收律。比如集合的运算对于交并就满足吸收律。
设∘∘ 为SS上的一个二元运算, 如果存在elel使得对于任何的x∈Sx∈S都有:
el∘x=xel∘x=x那么称elel为一个左单位元,在右侧则称为右单位元erer, 若即使左单位元又是又单位元,则称作单位元,或者说幺元。
若存在左单位元,且满足交换律,那么做单位元也可以是右单位元,那么是单位元。可以证明左右单位元唯一,是同一个。
设∘∘为定义在SS上的二元运算,若存在θlθl或θr∈Sθr∈S, 使得对于任意的x∈Sx∈S有:
θl∘x=θl 或(x∘θr=θr)θl∘x=θl 或(x∘θr=θr)若同时存在左右零元那么称θθ为二元运算的零元。且零元唯一。
设$\circ 为定义在S上的二元运算,若为定义在S上的二元运算,若e为单位元,为单位元,\theta为零元,如果说S至少有两个元素,那么为零元,如果说S至少有两个元素,那么e\not = \theta$.
使用反证法证明。会推出与SS中至少两个元素矛盾。
设∘∘ 为SS上的二元关系, ee为∘∘的单位元, 如果对于x∈Sx∈S,如果存在y∈Sy∈S使得yl∘x=e或者x∘yr=eyl∘x=e或者x∘yr=e那么称yl,yryl,yr为xx的左右逆元。逆元存在表明xx可逆。(结合联想线性代数的逆举证)若有一yy既是左逆又是右逆,那么为逆元。
设∘∘为SS上的二元运算,如果对于任意的x,y,z∈Sx,y,z∈S满足以下条件:
(1)若x∘y=x∘z且x≠θ,则y=z(2)若y∘x=z∘x且x≠θ,则y=z(1)若x∘y=x∘z且x≠θ,则y=z(2)若y∘x=z∘x且x≠θ,则y=z(109)(110)则称∘∘ 满足消去律, 其中(1)为左消去律,(2)为右消去律。
定理:
9.1.1:可结合的二元运算的单位元存在,若xx存在左右逆元,则左右逆元唯一。
简单梳理一下,本节的定义有些许多:
- 二元运算是一个从二元关系到组成组成二元关系集合的函数f:S×S→Sf:S×S→S
- 二元运算可能有很多性质,交换律,结合律,分配律,消去律,幂等律,吸收律,零元?单位元?逆元?
9.2 代数系统#
本小节与本章标题相同,足以可见其重要性,非话不多说,开始(记得带上上一节的相关定义)
定义:
代数系统:非空集合SS与定义在SS上的一个或多个一元运算或者二元运算(封闭性别忘了)组成的系统称为代数系统,如
<S,f1,f2,f3,⋯><N,+>,<Z,+,−,×><S,f1,f2,f3,⋯><N,+>,<Z,+,−,×>这可不是偏序集哦,但是从某种程度上来看,偏序集也称得上是一个特殊的代数系统,只不过是一元运算的代数系统。
代数系统的特异元素或代数常数:若某个运算的某些元素很特殊,如二元运算的零元合单位元,为了突出他们的重要性,可以将他们突出的表示在代数系统的定义里面,如
<N,+,0><N,+,0>同类型代数系统:如果说两个代数系统中的运算的个数相同,对应的运算的元数相同,且代数常数的个数也相同那么认为他们两个代数系统是同类型的。如:
V1=<R,+,⋅,−,0,1>V2=<P(B),∪,∩,∼,∅,B>V1=<R,+,⋅,−,0,1>V2=<P(B),∪,∩,∼,∅,B>虽然构成成分相同,但是不可以武断的认为其所有二元运算的相关性质也完全相同。
小小剧透一下:
若几个代数系统是同种类型的代数系统,然后再对其运算的算律进行限制之后,就可以得到一种具有完全相同性质的代数系统,如代数系统,V=<S,∘>V=<S,∘>, ∘∘可以结合,那么称为一个半群。V=<S,∘,∗>V=<S,∘,∗>,其中∘,∗∘,∗都是二元运算, 并且满足交换律,结合律,幂等律,吸收律,那么称VV为一个格, 如<Z+,lcm,gcd><Z+,lcm,gcd>就是一个格
子代数系统:设V=<S,f1,f2,f3,…,fk>V=<S,f1,f2,f3,…,fk>为一个代数系统,若A⊆SA⊆S, 若BB对于f1,f2,f3,…,fkf1,f2,f3,…,fk都是封闭的,****且B与SB与S有相同的代数常数,那么称<B,f1,f2,f3,…,fk><B,f1,f2,f3,…,fk>为一个子代数系统。🐽
条件
- 运算完全继承
- 代数常数必须相同(是标记出来的那种!!比较标记在代数系统定义时候的代数常数)
例:
<N,+>是<Z,+>的子代数<N,+>是<Z,+>的子代数平凡子代数:(见到新词了,平凡,这个词一般在数学上指“全”,或者“一”)如平凡子代数就是指最大的和最小的子代数。
真子代数:若B为真子集,那么B构成的子代数为真子代数。
积代数: 设V1=<A,∘>,和V2=<B,∗>V1=<A,∘>,和V2=<B,∗>是同类型的代数系统,∘,∗∘,∗都是二元运算,在集合A×BA×B上定义二元运算⋅⋅ 如下:
∀<a1,b1>,<a2,b2>∈A×B∀<a1,b1>,<a2,b2>∈A×B有
<a1,b1>⋅<a2,b2>=<a1∘a2,b1∗b2><a1,b1>⋅<a2,b2>=<a1∘a2,b1∗b2>称V=<A×B,⋅>V=<A×B,⋅>为同类型代数系统V1,V2V1,V2的积代数,此时也称V1,V2V1,V2为VV的因子代数。
解释:
- 积代数是代数系统的代数系统。
- 可以理解为通过积代数导出了一个由有序对组成的代数系统,而非简简单单的元素。
- 非常重要,其重要性立马就能体现!!
- 积代数很好的保留了因子代数的相关性质。
9.3 代数系统的同构与同态#
这又是一个贯穿整本书的概念。同态与同构
定义:
同态映射:设V1=<A,∘>,V2=<B,∗>V1=<A,∘>,V2=<B,∗>是同类型的代数系统,f:A→Bf:A→B, 且∀x,y∈A∀x,y∈A有
f(x∘y)=f(x)∗f(y)f(x∘y)=f(x)∗f(y)则称ff是V1V1到V2V2的同态映射,简称同态.
同态是代数系统之间的映射,但是不是代数系统的代数系统。
你可以把AA,BB, 理解为两个很抽象的东西,ff在集合AA和BB之间建立起了一个桥,使得A集合里面的元素映射到了B中元素。
x→f(x)x∈A,f(x)∈Bx∘y∈A,f(x)∗f(y)∈Bx→f(x)x∈A,f(x)∈Bx∘y∈A,f(x)∗f(y)∈B同态的分类:
这里的分类就会关系到函数那一章里面的几种不同的函数性质:
- 若函数是满射的,那么称为满同态(值域与B完全相同)
- 若函数是单射的,那么称为单同态(每个值域中的值一一对应一个xx)
- 若函数是双射的,那么称为同构 (单射且满射)
- 若同态函数是自己到自己的代数系统,那么就成为自同态,同样可以细分为上述3个方面。
第10章 群与环#
来了!
10.1 群的定义#
定义:
半群:若存在一个代数系统,其有一个运算∘∘, 若此运算是可以结合的,那么说VV是个半群。
含幺半群:半群含有幺元则为含幺半群。
群:若含幺半群中任意的元素都有逆元,那么说此代数系统为群。
如整数加群。
四元集:
e a b c e e a b b a a e c b b b c e a c c b a e 有限群:如果群G是一个有穷集,那么这个群就是一个有限群,否则称为无限群,群的G的基数就是群的阶。
平凡群:只有单位元的群
交换群:若群不仅仅满足结合律,和单位元,逆元,还存在交换律,那么说此群为一个交换群,也叫做阿贝尔群。
群本质上是一个代数系统,定义了一种运算∘∘对于此运算,若值有着一个运算规则,那么我们常常省略运算符,那么为了应对多个群中元素连续运算的情况,我们定义群的幂,
群的幂: 设G是群,a∈G,n∈Z,则a的n次幂为a∈G,n∈Z,则a的n次幂为
{en=0an−1an>0(a−1)mn<0∧m=−n⎧⎨⎩en=0an−1an>0(a−1)mn<0∧m=−n群的元素的阶:解方程ak=eak=e, 若有解,那么称aa是kk阶元。否则称aa是无限阶元。
定理:
10.1:关于幂的运算性质如下
(1)∀a∈G,(a−1)−1=a(2)∀a,b∈G,(ab)−1=b−1a−1.(3)∀a∈G,anam=am+n(4)∀a∈G,(an)m=anm(5)若G是交换群,则(ab)n=anbm(1)∀a∈G,(a−1)−1=a(2)∀a,b∈G,(ab)−1=b−1a−1.(3)∀a∈G,anam=am+n(4)∀a∈G,(an)m=anm(5)若G是交换群,则(ab)n=anbm(111)(112)(113)(114)(115)10.2:定义G为群,则G中满足消去律,对任意的x,y,z∈Sx,y,z∈S
xy=zy⇒x=zyx=yz⇒x=zxy=zy⇒x=zyx=yz⇒x=z群满足消去律
逆元存在,可以结合,再利用单位元的性质,推出相等。
10.3:从元素的阶推导出来的相关性质:
群中元素的阶|a|=r|a|=r表示ar=ear=e, 则有如下结论
(1)ak=e⇒r|k(2)|a−1|=|a|(1)ak=e⇒r|k(2)|a−1|=|a|(116)(117)第一条不解释
关于元素的逆与元素的阶完全相同作出以下解释:
- 单位元的逆元就是单位元。
- (a−1)n=(an)−1=e(a−1)n=(an)−1=e, 当n取最小值r的时候,(a−1)n同样为e,且为最小n取最小值r的时候,(a−1)n同样为e,且为最小那么逆元与原始元的阶数完全相同。
任意两个群中的有限阶元a,ba,b,则有以下结论
(1)|b−1ab|=|a|(2)|ab|=||ba|(1)|b−1ab|=|a|(2)|ab|=||ba|(118)(119)
10.2 子群与群的陪集分解***#
就如同在学习二元关系时候,集合的等价类一样,虽然整体是一个等价关系,但是这个等价关系的部分也能成为一个等价关系,这些小的部分我们称之为等价类,而这一小节我们学习的是子群,群是一个可结合的带有幺元,逆元的代数系统,代数系统是一个映射关系f:S×S→Sf:S×S→S, 这个群中可能有的元素之间的运算就总是循环扣在一起,举个形象一点的例子(虽然可能不那么恰当)
y=sin(x)y=sin(x)中使用群的定义,则发现 1,−1,01,−1,0总是在π2π2的附近变化,如果把π2π2作为起始元,那么使用函数f=sin(x)f=sin(x)作为其函数,那么可以构成一个比较小的群,这也就是群的划分
定义:
子群与真子群: 先有一个群GG, 若H⊆GH⊆G, 若HH满足GG的运算,那么称H为G的一个子群,H≤GH≤G, 若H<GH<G时则称H为G的真子群。(满足一切运算)其实是子代数系统的重新限制定义。
平凡子群:之前在谈论平凡子代数系统的时候提过,这里的平凡子群就是那个最小的子群和最大的子群。G,{e}G,{e}
生成子群:设GG为群,a∈Ga∈G, 令
H={ak|k∈z}H={ak|k∈z}常常写作<a><a>, 若a是有限阶元,那么H就是有限集,否则H为无限集
中心:群中可以交换的元素组成的子群为群的中心(单位元一定在子群中,阿贝尔交换群的中心就是阿贝尔交换群)
从子集中产生的子群:单个子集不一定是一个子群,但是包含子集的子群的就可以组成一个子群(依据定理10.2.1)
设群为G,其子集为B,则<B>表示为从B的生成子群。<B>=∩{H|B⊆H∧H≤G}设群为G,其子集为B,则<B>表示为从B的生成子群。<B>=∩{H|B⊆H∧H≤G}若HH是一个上述的唯一的一个子群,那么 为一个子群,且子群中的元素要么在B中,要么为B中元素的逆。
来看看wiki如何定义:
实际上是子集B中每个元素的生成子群取交集得到的子群。
子群格:设GG为群,令S={H|H是G的子群}S={H|H是G的子群}, 定义在S上的一个代数关系RR:
∀x,y∈S,xRy表示x是y的子群∀x,y∈S,xRy表示x是y的子群显然就是一个偏序集,<S,R><S,R>, 称作一个子群格。
右陪集:设H为G的一个子群:
Ha={ha|∀h∈H}Ha={ha|∀h∈H}称作H在G中的右陪集,a被称作代表元。显然代表元可以有很多,代表元可以在H内部,那么此时生成的右陪集也在H中,等等。。
左右陪集的元素可能不相同,子群不是正规子群,但是左右陪集的元素的数量确实相同的,那么:
定义两个陪集(左右)集合, 设H为G的一个子群,S为右陪集元素组成的集合,T为左陪集元素组成的集合。
S={ha|∀h∈H},T={bh|∀h∈H}S={ha|∀h∈H},T={bh|∀h∈H}元素数量相同,那么定义一个双射函数f:S→Tf:S→T,元素数量完全相同,双射一定可以建立起来。
所以以后将不再称呼左右陪集的数,二是直接称陪集数记作[G:H][G:H]。同时也引出了拉格朗日定理。
拉格朗日定理
设G为一个有限群,H为G的一个子群,则:
|G|=|H|⋅[G:H]|G|=|H|⋅[G:H]证明关键点:
- 陪集与其子集之间同构。
- 子集的陪集之间互不相交。(通过陪集的等价关系可以得知)
推论:
- 所有元素的阶必定为群的阶数的因子。
- 素数阶群可以找到一个元素的生成群与此群完全相等。
- 若一个子群的阶数与G的阶数互素,除非相等,否则无法构成子群,同样的可以使用欧拉函数得到非互素的数试探是否为一子群。
根据陪集的不互交性,可以使用空间划分的方法确定数据位与校验位,校验位设置的大一些,陪集数就相对多,那么数据出错后可以根据陪集去查找最近的错误可能是谁,然后修改到数据子群中。
定理:
3个子群判定定理
子群首先必须是一个群,那么它比去满足4个条件,含有幺元,可以结合,封闭性,存在逆元,但是这4个条件都不是相互;独立的,比如说当满足存在逆元的时候就可以推出一定含有幺元,这是由于逆元的定义就是定义在幺元的基础上的,下面3个定理也大多结合了这些证明思想。
设GG为群, HH为GG的非空子集,HH是GG的子群,当且仅当下面条件成立
(1)∀a,b∈H有ab∈H(2)∀a∈H,有a−1∈H(1)∀a,b∈H有ab∈H(2)∀a∈H,有a−1∈H(120)(121)设GG为群,HH为GG的非空子集,若HH是GG的一个子群,那么当且仅当∀a,b∈H,ab−1∈H∀a,b∈H,ab−1∈H
b=a⇒e∈Hc=b−1⇒H封闭逆元存在结合性继承而来b=a⇒e∈Hc=b−1⇒H封闭逆元存在结合性继承而来设GG为群,HH为GG的非空子集,且如果HH为一个有穷集,若HH为GG的一个子群,当且仅当∀a,b∈H∀a,b∈H, ab∈Hab∈H成立。
10.2.1:设GG的两个子群为H,KH,K则
H∩KH∩K为一个子群(符合子群的判定定理)
H∪KH∪K是一个子群当且仅当H⊆KH⊆K 或 K⊆HK⊆H
证明使用严格的子群判定定理以及,反证法,还是比较好想清楚的。
10.2.2:设H是群G的子群,则∀a∈G∀a∈G
- He=HHe=H
- a∈Haa∈Ha
10.2.3:设H为群G的子群,则∀a,b∈G有∀a,b∈G有:
a∈Hb⇔ab−1∈H⇔Ha=Hba∈Hb⇔ab−1∈H⇔Ha=Hb10.2.4:右陪集导出等价类:
设H是群G的子群,在G上定义二元关系,∀a,b∈G∀a,b∈G
<a,b>∈R⇔ab−1∈H<a,b>∈R⇔ab−1∈H则RR在GG上的等价关系,且[a]R=Ha[a]R=Ha
推论:
- 设群GG的子群为HH, 那么对于H子群的所有右陪集之间,要么是完全相等,要么交为空。
- 右陪集的并就是全集,群。
左陪集也拥有极相似的性质。
若左右陪集都相等,那么称此子群为一个正规子群,或者不变子群,记作H⊴GH⊴G
10.3 循环群与置换群#
定义:
循环群:生成元群,若生成元为有限阶,如|a|=r|a|=r,则
G=<a>={a0=e,a1,a2,…,ar−1}G=<a>={a0=e,a1,a2,…,ar−1}若aa为无穷阶,那么称此群为无限循环群
定理:
一个循环群可能存在很多个生成元可以得到这个循环群,如何去求解这些生成元?
若循环群是无限循环群,那么生成元为a,或者a−1a,或者a−1
若循环群是n阶循环群,那么其生成元的个数有ϕ(n)ϕ(n)个,任何小于nn且与n互素的都是生成元。
联想前一节的拉格朗日定理推论2,素数阶群可以找到一个生成元群与之相等。
(1)循环群的子群都是循环群(2)无限循环群除了最小平凡群以外的所有子群都是循环群(3)n阶循环群的所有正因子阶子群都是循环群。每一个<an/d>都是一个循环子群。(1)循环群的子群都是循环群(2)无限循环群除了最小平凡群以外的所有子群都是循环群(3)n阶循环群的所有正因子阶子群都是循环群。每一个<an/d>都是一个循环子群。(122)(123)(124)置换群:设集合S={1,2,3,4,5,6,…,n}S={1,2,3,4,5,6,…,n}上的双射函数σ:S→Sσ:S→S表示集合SS上的nn元置换,如下:
σ=(1234523154)σ=(1234523154)为一个5元置换群。
轮换:置换的特殊结构,轮换区域里面部分如上述的{1,2,3}{1,2,3}发生了轮换,依次交换。
对换:交换的个数为2的时候表示对换。对换之积是轮换的复合运算。若轮换可以表示称奇数个对换之积那么称为奇置换,否则为偶置换。
对称群:将所有的n元置换群n元置换群作为元素放置在集合SnSn中,所有的nn元置换存在单位元,恒等置换,封闭,存在逆元,可以结合(继承自双射函数),所以构成对称群。
定理:
10.3.1:置换群的复合也是置换群,(双射函数,函数的复合!)
10.3.2: PolyaPolya定理:
设集合NN为要被染色的物体的集合,G={σ1,σ2,…,σk}G={σ1,σ2,…,σk}表示建立在集合NN上的kk个置换构成的值环群。使用mm中颜色染色,那么一共可能的染色方案为:
M=1|G|k∑i=1mc(σi)M=1|G|k∑i=1mc(σi)使用的是轮换,而不是简化为对换,轮换改变顺序后是唯一的。
10.4 环与域#
相比于群的单一二元运算,环拥有两个二元运算,和群有非常密切的联系。
定义:
环:设<R,+,⋅><R,+,⋅>为一个代数系统,且满足以下条件:
- <R,+><R,+>为一个交换群。
- <R,⋅><R,⋅> 为一个半群。
- ⋅对+⋅对+存在分配律
则称代数系统<R,+,⋅><R,+,⋅>为一个环,可以理解为加法与乘法。
规定:
环中加法的单位元为 0, 逆元为−x−x
环中乘法的单位元为1,逆元为x−1x−1(不一定存在逆元)
由子代数系统可以知道,环也可以定义子环,也就是对于环的某一个子集,仍然满足所有的环中运算,且封闭,那么称为一个子环,同样的同态同构也可以定义。
特殊环:
- 环中乘法存在交换律,那么称为交换环。
- 乘法存在单位元,则为含幺环
- 群中乘法无零因子,则称为无因子环
- 完全符合上面三个环,则称为整环
- 整环中每个元素都有乘法逆元,且总元素数大于等于2,则称为域(实数加法乘法构成域)。
定理:
10.4.1:设<R,+,⋅><R,+,⋅>为一个环,那么
- ∀a∈R,a0=0a=0∀a∈R,a0=0a=0
- ∀a,b∈R,(−a)b=a(−b)=−ab∀a,b∈R,(−a)b=a(−b)=−ab
- ∀a,b,c∈R,(a−c)b=ab−cb∀a,b,c∈R,(a−c)b=ab−cb
- ∑ni=1ai∑mk=1bk=∑ni=1∑mk=1aiak∑ni=1ai∑mk=1bk=∑ni=1∑mk=1aiak(数学归纳法)
第11章 格与布尔代数#
11.1 格的定义以及性质#
定义:
格:设<S,≼><S,≼>为一个偏序集,若对于每一个元素都可以找到一个最小上界和最大下界,那么称此偏序集为格。
规定:
- ∧∧表示最小上界
- ∨∨ 表示最大下界
对偶命题:将所有的符号换成相反的符号的命题为对偶命题,大于等于变小于等于。对偶命题与原命题具有等价性。
格的二元关系定义:若<S,∗,∘><S,∗,∘>满足2格二元关系,满足交换律,结合律,吸收律,幂等律,则可以定义偏序,从而有格。
定理:
11.1.1:格满足交换律,结合律,幂等律,吸收律。(格的本质是继承于偏序关系,只不过为了保证格的封闭性,要求最小上界最大下界必须存在。)
其余的一些定理,基本上就和初中学过的比大小的定理基本一致,直接跳过。
11.2 分配格, 有补格与布尔代数#
就和定义环时的特殊环一样,格作为比环性质更加丰富的结构,也会出现很多特殊的格
定义:
分配格:满足分配律的格,注意是取上界与取下界都有分配律。
有界格:对于取上界运算∧∧存在零元,对于取下界运算∨∨存在零元,也就是说存在最大最小值(全局的)。
补元:若对于格两个元素a,ba,b若a∧b=1a∧b=1, a∨b=0a∨b=0那么称这两个元素互为补元。
有补格:每一个元素都存在补元,的格则称为有补格,
布尔代数:继承与有阶分配格的有补格称为布尔代数(有补分配格)
满足交换律,分配律,同一律,补元律的代数系统为一个布尔代数。
原子:最接近格中加法单位元的元素为原子。
设L是格,0∈L,a∈L,若∀b∈L0≺b≼a⇔a=b设L是格,0∈L,a∈L,若∀b∈L0≺b≼a⇔a=ba为L中原子a为L中原子
定理:
11.2.1:L是分配格,当且仅当L中不存在与钻石格和五角格同构的子格。
推论:
- 小与5元的格都是分配格。
- 任何一条链是分配格。
11.2.2:有界分配格,若元素存在补元,那么补元唯一。
11.2.3:布尔格符合双重否定律与德摩根律,(补元的唯一性,补元的定义)
11.2.4:有 限布尔代数表示定理:设B是有限布尔代数,A是B的全体原子构成的集合,B同构于A的幂集代数P(A)P(A)
推论:
- 所有有限布尔代数的基为2n2n
- 等势的有限布尔代数同构。
第四部分 组合数学#
第12章 基本的组合计数公式#
12.1 加法法则与乘法法则#
定义:
加法法则:加法法则就好像你在做数学题,一道题会有多种解法,但是最终都可以达到目的,那么加起来就是总方法数。
乘法法则:乘法法则就好像是做数学题证明题时候的推论,证明出的推论可能各不相同,但是都是通往正确结果的中间步骤,而这有多个不同层级的推论。再举个例子,做从A地到B地再到C地,可使用不同的交通工具,两地交通工具互不干扰,乘起来就是总方法数。
12.2 排列与组合#
定义:
排列:在集合S,|S|=n|S|=n中有序选取k个元素,则称为排序P(n,k)P(n,k),k=nk=n时为全排序
组合:无序选择为组合C(n,k)C(n,k)
多重集:不满足集合互异性,重复元素的个数为该元素的重复度。
定理:
排列:
p(n,k)={n!(n−r)!n≥r0n<rp(n,k)={n!(n−r)!n≥r0n<r组合
C(n,r)={n!r!(n−r)!,n≥r0n<rC(n,r)={n!r!(n−r)!,n≥r0n<r推论:
环排列数等于P(n,r)/rP(n,r)/r, 出发点不影响,可以使用polya定理证明
基本组合数等式:
- C(n,r)=nrC(n−1,r−1)C(n,r)=nrC(n−1,r−1)
- C(n,r)=C(n,n−r)C(n,r)=C(n,n−r)
- C(n,r)=C(n−1,r)+C(n−1,r−1)C(n,r)=C(n−1,r)+C(n−1,r−1)
多重集的排列组合公式:设SS为一个多重集S={n1⋅a1,n2⋅a2,…,nl⋅al}S={n1⋅a1,n2⋅a2,…,nl⋅al}
- 全排列n!n1!n2!…nl!n!n1!n2!…nl!
- 若r≤nir≤ni则排列为lrlr
- 当r≤nir≤ni的时候多重集SS的rr组合数为C(l+r−1,r)C(l+r−1,r),没有溢出。
12.3 二项式定理与组合恒等式#
定理:
二项式定理:设nn是正整数,对于一切x,yx,y都有
(x+y)n=n∑i=0C(n,i)xn−1yi(x+y)n=n∑i=0C(n,i)xn−1yi组合恒等式:
- (nk)=(nn−k)(nk)=(nn−k)
- (nk)=nk(n−1k−1)(nk)=nk(n−1k−1)
- (nk)=(n−1k−1)+(n−1k)(nk)=(n−1k−1)+(n−1k)
- ∑nk=0(nk)=2n∑nk=0(nk)=2n
- ∑nk=0(−1)k(nk)=0∑nk=0(−1)k(nk)=0
- ∑nl=0(lk)=(n+1k+1)∑nl=0(lk)=(n+1k+1)集合分析法证明
- (nr)(rk)=(nk)(n−kr−k)(nr)(rk)=(nk)(n−kr−k)集合分析法
- ∑rk=0(mk)(nr−k)=(m+nr)∑rk=0(mk)(nr−k)=(m+nr)集合分析法理解,划分子集
- ∑nk=0(mk)(nk)=(m+nm)=(m+nn)∑nk=0(mk)(nk)=(m+nm)=(m+nn)
- ∑nk=0k(nk)=n2n−1∑nk=0k(nk)=n2n−1
- ∑nk=0k2(nk)=n(n+1)2n−2∑nk=0k2(nk)=n(n+1)2n−2
12.4 多项式定理#
为后面的递推方程埋伏笔。
和二项式定理极其相似。多项式定理
第13章 递推方程与生成函数#
13.1 递推方程的定义以及实例#
定义:
递推方程:设序列a1,a2,a3,…,ai,…a1,a2,a3,…,ai,…简记作{an}{an}, 一个可以把aiai与之前的元素联系起来的等式称之为关于{ai}{ai}的递推方程
13.2 递推方程的公式解法#
定义:
k阶常系数线性递推方程:设递推方程满足:
{H(n)−a1H(n−1)−a2H(n−2)−⋯−akH(n−k)=f(n)H(0)=b0,H(1)=b1,…,H(k−1)=bk−1{H(n)−a1H(n−1)−a2H(n−2)−⋯−akH(n−k)=f(n)H(0)=b0,H(1)=b1,…,H(k−1)=bk−1当f(n)=0f(n)=0时称为齐次方程
常系数线性齐次递推方程:
{H(n)−a1H(n−1)−a2H(n−2)−⋯−akH(n−k)=0H(0)=b0,H(1)=b1,…,H(k−1)=bk−1{H(n)−a1H(n−1)−a2H(n−2)−⋯−akH(n−k)=0H(0)=b0,H(1)=b1,…,H(k−1)=bk−1方程xk−a1xk−1−⋯−ak=0xk−a1xk−1−⋯−ak=0为特征方程,特征方程的解为递推方程的特征根。
定理:
13.2.1:qnqn为递推方程的根当且仅当qq为特征方程的根。q为非0复数q为非0复数
13.2.2:特征方程的特征根的线性组合仍然是递推方程的解
推论:
通解(当s个根不相等的时候)为:c1qn1+c2qn2+c3qn3+⋯+csqns通解(当s个根不相等的时候)为:c1qn1+c2qn2+c3qn3+⋯+csqns常数{c1,c2,c3…,cs}{c1,c2,c3…,cs}通过解非齐次线性方程得到,若系数行列式不等于0,那么可解,而系数行列是就是范德蒙行列是,当不存在相等的qq的时候,范德蒙行列式一定不等于0,所以必定有解。
对于重复的根:
(ci1+Ci2n+⋯+Cieinei−1)qni(ci1+Ci2n+⋯+Cieinei−1)qnieiei表示重数
线性递推方程的同解为齐次线性递推方程的解+特解
13.3 递推方程的其他解法:#
- 换元法,递推方程是H(n)与H(n-1)之间的关系,通过变换凑出此种形式。
- 迭代归纳法:(说白了就是多写几项然后看规律)最后使用数学归纳法严格证明
13.4 生成函数及其应用:#
定理:
牛顿二项式系数:设rr为实数, nn为整数,引入形式符号
(rn)={0,n<01,n=0r(r−1)(r−2)…(r−n+1)n!,n>0(rn)=⎧⎪⎨⎪⎩0,n<01,n=0r(r−1)(r−2)…(r−n+1)n!,n>0牛顿二项式定理:
(x+y)a=∞∑i=0(ai)xiya−i,(x>y)(x+y)a=∞∑i=0(ai)xiya−i,(x>y)常用结论
a=−1,x=1,y=−x:11−x=1+x+x2+…a=−2,x=1,y=−x:1(1−x)2=∞∑n=0(n+1)xna=12,x=1,y=x;(1+x)12=1+∞∑n=1(−1)n−122n−1n(2n−2n−1)xna=−1,x=1,y=−x:11−x=1+x+x2+…a=−2,x=1,y=−x:1(1−x)2=∞∑n=0(n+1)xna=12,x=1,y=x;(1+x)12=1+∞∑n=1(−1)n−122n−1n(2n−2n−1)xn设序列{an}{an}构造形式幂级数
G(x)=a0+a1x+a2x2+…G(x)=a0+a1x+a2x2+…则称G(x)G(x)为序列anan的生成函数。
易知:
11−kx=1+kx+k2x2+…11−kx=1+kx+k2x2+…利用生成函数来求解递推方程的主要步骤:
- 确定序列{an}{an} 的生成函数G(x)G(x)
- 利用递推方程的依赖关系导出关于生成函数的递推方程。
- 通过求解递推方程得到G(x)G(x)的函数表达式
- 展开为幂级数
13.5 指数型生成函数#
定义:设{an}{an}为序列,称
Ge(x)=∞∑n=0anxnn!Ge(x)=∞∑n=0anxnn!为anan的指数型生成函数。
13.6 Catalan数与Stirling数#
CatalanCatalan数的定义
给定一个凸n+1n+1边形, 通过在内部不相交的对角线,把它划分成为三角形的组合,不同的划分方案的个数称为CatalanCatalan数,记作hnhn
比如说正对于五边形的CatalanCatalan数h4h4,可以可视化为下面的形式。
递推定义
CatalanCatalan数的定义是描述一个凸多边形被不相交的直线分割为三角形的方案数,记这样一件事为AA
注意在这个解决AA事件过程中,只需要定一条边就可以了,这是由于其他的边会由∑n−1l=1hkhn−k∑n−1l=1hkhn−k遍历得到,如果此时选择所有边,就会导致算出出现重复
依据递推方程求解CatalanCatalan数的解
牛顿二项式定理
∀∀αα ∈R∈R,且0≤|x|≤|y|0≤|x|≤|y|,那么有:
(x+y)a=∞∑k=0(αk)xkya−k(αk)=α(α−1)(α−2)…(α−k+1)k!(x+y)a=∞∑k=0(αk)xkya−k(αk)=α(α−1)(α−2)…(α−k+1)k!
现在计算(1+x)12(1+x)12的展开式
CatalanCatalan数证明
设H(x)H(x)是CatalanCatalan数的生成函数
那么
两边平方
由于
所以
使用二次函数的求解得出
由于H(0)=0H(0)=0,过滤得出的解,故
由于牛顿二项式展开定理
带入上式(1)(1)
故
第一类Stirling 数
Stirling数Stirling数, 两类都是建立在实际问题上的。
- 第一类StirlingStirling数,与字符画圈的方法数有关(无符号第一类斯StirlingStirling数)。
- 第二类StirlingStirling数, 与球放盒问题有关。
附上一篇wikiStirling数讲的比较详细,建议看看。
定义:
第一类Stirling数: 可以理解为把nn个不同的物体,排列称为k个圈的方法数。
x(x−1)(x−2)…(x−n+1)的展开式Snxn−Sn−1xn−1+Sn−2xn−2+⋯+(−1)n−1S1xx(x−1)(x−2)…(x−n+1)的展开式Snxn−Sn−1xn−1+Sn−2xn−2+⋯+(−1)n−1S1x这每一个xrxr系数的绝对值就是[nr][nr]第一类StirlingStirling 数。
且根据递降阶乘,可以得到第一类StirlingStirling数的递推式子。
{[nr]=(n−1)[n−1r]+[n−1r−1][n0]=0,[n1]=(n−1)!⎧⎪ ⎪ ⎪⎨⎪ ⎪ ⎪⎩[nr]=(n−1)[n−1r]+[n−1r−1][n0]=0,[n1]=(n−1)!解释:
- 从韦达定理的角度来看这个递降阶乘式,若r=1r=1那么表示只能选择最开始的一个xx,其余的只能选择常数项,那么得到第二行的第二个式子,同样的,什么也不选的时候结果自然就是0,当选择rr个的时候,在递降阶乘的两侧同时乘上一个x−nx−n,如此很容易的得到了第一个递推式子。两式分别来自于xx,与nn,然后修正一下数,往前移动一位。
性质:
- [00]=1[00]=1
- [0k]=0
- [nk] = 0当k> n
- [nn]=1
- [nn−1]=(n2)
第二类Stirling数
这里使用书上给出的例子:第二类Stirling数表示把k个球放到n个盒子的放法。
假设需要放n个不同的球到r个盒子里面,假设方法数为{nr}, 假设先把a1单独放到一个盒子里,然后在放剩下的{n−1r−1}, 或者先放其余的球{n−1r},然后随便找一个盒子插入a1, 因此第二类Stirling数的递推式子为
{{nr}={n−1r−1}+r{n−1r}{n0}=0,{n1}=1
性质:
- {n2}=2n−1−1
- {nn−1}=(n2)
- {nn} = 1
- ∑(nn1n2…nm)=m!{nm}先放盒,再全排序
- ∑mk=1(mk){nk}k!=mn
- {n+1r}=∑ni=0(ni){ir−1}
第五部分 图论的基本定理#
一般图:
- 所有点的度数之和为边数的2倍
- 可图化表示度数列的奇度定点的个数为偶数个。可简单图化表示d(v)≤δ(G)
- 任何无向图都有k(G)≤λ(G)≤δ(G)
- 若有向图为强连通,则一定存在一条经过所有点的至少一次的回路。
- 有向图是单连通图,则至少存在一条经过G中所有点的至少一次的通路。
- 生成子图的连通分支数大于等于原图的连通分支数
二部图:
- 所有边的两点分别存在于二部图的两个顶点集。
- 无向图为二部图当且仅当G中无奇圈。
欧拉图
一次且仅一次行遍所有的边的路径
定理:
无向图是欧拉图,当且仅当G是连同图,且无没有奇度顶点。
无向图是半欧拉图,当且仅当G是连通的且只有两个奇度顶点。
有向图是欧拉图,当且仅当G是强连通的且每个点的入度等于出度。
有向图是半欧拉图,当且仅当G是单连通的且且有两个奇度顶点,且其中一个定点的入度比出度大1,另外一个顶点的出度比入度大1.,其余各点的入度等于出度。
G是非平凡的欧拉图,当且仅当G是连通的,且是若干个边不重合的圈的并。
Fleury算法:
- 随机选起始点
- 不要选桥。
哈密顿图:
经过所有顶点一次且仅一次。
平凡图是哈密顿图
必要条件:
若G是哈密顿图,那么对于任意的V1⊂V∧V1≠∅有
p(G−V1)≤|V1|若G是半哈密顿图,那么对于任意的V1⊂V∧V1≠∅都有
p(G−V1)≤|V1|+1可能那缺少的那一条边就是桥
若任意两个不相邻的顶点的度数之和d(u),d(v)都有:
d(u)+d(v)≥n−1则一定存在哈密顿通路
若G为n阶无向图,若对于每个G中的仍以两个不相邻的顶点u,v都有
d(u)+d(v)≥n则一定存在一条哈密顿回路
n阶竞赛图都有哈密顿图
树:
- 连通无回路称为树,悬挂顶点为树叶,度数大与2为分支点。
- 等价定理
- G是树
- G的任意两点之间存在唯一的通路
- G中无回路且 m = n - 1(m为边,n为顶点)
- G是连通的且m = n - 1
- G是连通的且所有边均为桥
- G中没有回路,当加边之后,存在唯一一条经过新边的回路。
- T是n阶非平凡的无向树,则T中至少存在两片树叶。(握手定理)
生成树(继承与树):
- 如果无向图的子图是树,那么称子图为生成树。G在T中的边为树枝,不在的为弦。所有弦的导出子图为余树
- 无向图有生生成树,当且仅当无向图连通。破除圈
- G为n阶m条边的无向连通图,则m≥n−1
- 任意一条弦对应的生成树中的圈是唯一的。
- 有生成树中的一条树枝与弦构成的割集的集合为基本割集系统。割集秩为(n-1)
基本回路系统:
- 把生成树与弦构成的回路放置在集合中,此为一个基本回路。
- 若干个边不同的圈的并称为广义回路。
最小生成树:
- 连通带权图的生成树中权最小的树为最小生成树。
- 排序边的权重,从最小的里面挑。
根树:
- 若有向图的基图是无向树,那么这个有向图就是一个有向树。一个点为入度为0,其余各点的入度为1,出度不为0的点为分支点。
- r叉树,每个节点至多有r个儿子,有序则为r叉有序树
- 恰好r个,则为r叉正则树,有序定义同上
- 每个树叶的层数均为树高,则为r叉完全正则树
- 根树的导出树为根子树
- 左右子树
- 有权2叉树中权最小的树为最优2叉树
- Huffman算法:
- 选择权之和最小的节点组成一颗树。其权为两个儿子权之和,产生新节点
- 直到指存在一个入度为0的点时终止。
- 最优前缀码,左侧为0右侧为1
平面图:
- 如果无向图可以画在平面上,边与边之间不相交,则称为平面图。
- 平面图加环加边后还是平面图
- 平面图的平面嵌入存在多个面,组成面的边的数为面的次数,
- 平面图的面的次数之和为边数的2倍
- 若平面图的任意两个不相邻的两点加一条边,都不是平面图,则称原平面图为平面嵌入。
- 极大平面图是连通的,且当阶数大与等于3时没有割点和桥(反证法)
- 简单连通的无向图,则极大平面图时,每个面次数均为3
- 欧拉公式:
- 连通平面图的顶点数,边数,面数分别为n,m,r则n−m+r=2
- 若图存在k个连通分支,则n−m+r=k+1
- 连通平面图,每个面的次数
l>=3
边数m与顶点数n之间有如下关系m≤ll−2(n−2)- 度数和∑d(v)=∑rM(r)度数和等于面的次数和
- K5,K3,3都是非平面图
- 极大平面图的度数之和2m=3r,n−m+r=2
- 插入2度顶点,消去二度顶点,(不是收缩!!)
- 若两图同构,或者说反复插入,消去2度点后同构,称两图同胚
- 若G为平面图,当且仅当G不含有与K5,K3,3同胚的子图。且不含有可以收缩为K5,K3,3的子图
- 对偶图,面变成点,穿过所有边。环存在于悬挂顶点。
着色问题:
- 关于点的集合:
- 点支配集:点支配点,存在边,有点类似与二部图但是允许集合内部点连接,顶点最少的支配集为最小支配集记作γ0(G)
- 点覆盖集:点覆盖边,覆盖所有边,最少的为最小点覆盖集记作α0(G)
- 点独立集:点与点之间不存在关联边,不相邻,顶点数最多的点独立集为最大点独立集,记作β0
- 关于边的集合:
- 边覆盖集:支配所有点,边数最小为最小边覆盖集,记作α1(G)
- 边独立集(匹配):边与边不相邻,最大的为最大匹配,记作β1(G)
- 与匹配边关联的点为包和点,否则为非包和点
- 每个点都是饱和点,那么为完美匹配
- 匹配边与非匹配边交替组成的路径为交错路径。起点和终点都是非包和点的交错路径为可增广的交错路径
- n阶图没有孤立点:
- 对于每个非饱和点都取一个边与之相连,组成最小边覆盖集
- 存在一个最小边覆盖集,若出现相邻边,则删去一条边,直到没有相邻,则为最大匹配
- α1+β1=n
- 边覆盖集与边独立集完全相等的时候为完美匹配
- M为G一个匹配,M为最大匹配当且仅当G中不包含关于M的可增广交错路径。
二部图中的匹配:
若匹配集M=V1则为完备匹配。
相异性条件,二部图G<V1,V2,E>,|V1|≤|V2|,当V1中任意k个点至少与V2中k个顶点相邻时存在完备匹配。
't'条件:存在正整数t,使得V1中每个点都至少关联t条边,而V2中每个点至多关联t条边,则存在完备匹配。
点着色:
- 相邻点颜色不同,颜色数为k,若可着色,那么称为k可着色
- 最小的着色数为色数
对于任意无环图:
X(G)≤Δ(G)+1面着色转换为对偶图的点着色问题。
边着色:
- 相邻边颜色不同,
简单图的边着色值可能取Δ,Δ+1
二部图的边着色值等与Δ
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)