离散数学

(P↔Q)↔R=P↔(Q↔R)P→(Q→R)=(P→Q)→(P→R)
n个命题变项能组成具有不同真值的命题公式有22n,与其任一命题公式等值而形式不同的命题公式有无穷个
术语
-
文字
P,¬P统称为文字,是合取范式也是析取范式
-
合取式(短语)
有限个文字的合取称为合取式
-
析取式(子句)
有限个文字的析取称为析取式
-
互补对
P与¬P称为互补对
-
析取范式
有限个合取式的析取式, 𝐴1 ∨ 𝐴2 ∨ ⋯ ∨ 𝐴𝑛, 其中𝐴𝑖(𝑖 = 1, … , 𝑛)为合取式
-
合取范式
有限个析取式的合取式, 𝐴1 ∧ 𝐴2 ∧ ⋯ ∧ 𝐴𝑛, 其中𝐴𝑖(𝑖 = 1, … , 𝑛)为合取式
永假式不能用主析取范式表达出来
极小项编码:
例:¬P1∧P2∧P3:m011=m3 形式:A=m1∨m3=∨1,3
永真式不能用主合取范式表达出来
极大项编码:
例:¬P1∨P2∨P3:M011=M3 形式:A=M1∧M3=∧1;3
主析取范式和主合取范式的转换
∨0;1;4;5;7=∧(2;3;6)补=∧5;4;1∨0;1;4;5;7=∧{0;1;2;3;4;5;6;7}−{7;6;3;2;0}=∧5;4;1
范式功能
重言蕴含
只要A取值为真, B就必取值为真,称A重言(永真)蕴涵B,或称B是A的逻辑推论,记作A⇒B(⇒表示两公式之间的真值关系,不是逻辑联结词,这个式子不是合式公式)





有限域上,一个公式的可满足性和普遍有效性依赖于个体域个体的个数且仅依赖于个体域个体的数目,即在某个含𝑘个元素的𝑘个体域上普遍有效(或可满足),则在任一𝑘个体域上也普遍有效(或可满足)
判定问题
- 如某公式在𝑘个体域上普遍有效,则在𝑘 − 1个体域上也普遍有效
- 如某公式在𝑘个体域上可满足,则在𝑘 + 1个体域上也可满足
范式
谓词逻辑的公式也有范式,其前束范式与原公式是等值的,其他范式与原公式只有较弱的关系
前束范式
公式中的一切量词都位于该公式的最左边(不含否定词),且这些量词的辖域都延伸到公式的末端
Skolem标准型:只保留全称量词的前束型
只保留全称量词而消去存在量词
任一公式都可化作Skolem标准型(只保留全称量词的前束型)
A是不可满足的,当且仅 当其Skolem标准型是不可满足的
不可满足公式与Skolem标准型是等值的

推理演算:推理规则
- 全称量词消去规则 (∀x)P(x)⇒P(a)
- 全称量词引入规则 P(y)⇒(∀x)P(x)
- 存在量词消去规则 (∃x)P(x)⇒P(c)
- 存在量词引入规则 P(c)⇒(∃x)P(x)

谓词逻辑的归结推理法
-
反证法
为证明𝐴 → 𝐵是定理(𝐴, 𝐵是谓词公式),等价的是证明𝐴 ∧ ¬𝐵 = 𝐺是矛盾式
-
建立子句集𝑺 关键点:消去𝐺中的量词,特别是存在量词; 方法:
- 将𝐺化作等值的前束范式
- 将前束范式化为Skolem标准形(消去存在量词),得到仅含全称量词的公式𝐺 ∗ ,𝐺和𝐺 ∗ 在不可满足时是等值的,而𝐺 的不可满足性可由𝐺 ∗ 的不可满足性求得
- 将𝐺 ∗中的全称量词省略,𝐺 ∗母式(已合取范式化)中的合取词∧以“,”表示,可得子句集𝑆
说明:𝑆和𝐺是同不可满足,𝑆中的变元视作有全称量词作用着
-
对𝑺作归结, 重复 设𝐶1,𝐶2是两个无共同变元的子句,𝐿1, 𝐿2分别是𝐶1,𝐶2中的文字,如果𝐿1和¬𝐿2中有合一置换𝜎,则:(𝐶1𝜎 − {𝐿1𝜎}) ∪ (𝐶2𝜎 − {𝐿2𝜎}) 作为子句𝐶1,𝐶2的归结式。 如:𝐶1 = 𝑃(𝑥) ∨ 𝑄(𝑥) 𝐶2 = ¬𝑃(𝑎) ∨ 𝑅(𝑦) 𝑃(𝑥)与¬𝑃(𝑎)在合一置换{𝑥/𝑎}下将变元𝑥换成𝑎,互补对可做归结,有归结式𝑅(𝐶1, 𝐶2)= 𝑄(𝑎) ∨ 𝑅(𝑦)
-
直至归结出空子句□ ,证明结束

常用等值公式
P→Q=¬P∨QP→Q=¬Q→¬PP↔Q=(P∧Q)∨(¬P∧¬Q)P↔Q=(P→Q)∧(Q→P)=(P∨¬Q)∧(¬P∨Q)P→(Q→R)=(P∧Q)→RP→(Q→R)=Q→(P→R)(P→R)∧(Q→R)=(P∨Q)→R
真值表的T列写和F列写
T列写: 析取范式
F列写: 合取范式
异或对交分配律
幂集合性质
P(A)∩P(B)⇔P(A∩B)P(A)∪P(B)⊆P(A∪B)
P(A)∈P(B)⇒A∈B
P(A−B)⊆(P(A)−P(B))∪{∅}, 空集不能漏

量词对蕴涵的分配律
(∀x)(P(x)→q)=(∃x)P(x)→q(∃x)(P(x)→q)=(∀x)P(x)→q(∀x)(p→Q(x))=p→(∀x)Q(x)(∃x)(p→Q(x))=p→(∃x)Q(x)
计算问题:有输入有输出,中间是computer
可计算:程序能不能输出一个结果
不可计算的问题有无穷多个
广义交并, 回归定义
空集的广义并是空集, 广义交是anything(->的前半恒false, ->恒true
) -> 未定义
A⊆B⇒∪A⊆∪BA⊆B⇒∩B⊆∩A(A,B非 空)
∪(A∪B)=(∪A)∪(∪B)∩(A∪B)=(∩A)∩(∩B)(A,B非空)
∪(P(A))=A 广义并是幂集的逆运算
- 定理十四:若集合A是传递集合,则∪A是传递集合
- 定理十五:若集合A的元素是传递集合,则∪A是传递集合
- 定理十六:若非空集合A是传递集合,则∩A是传递集合,且∩A=∅
- 定理十七:若集合A的元素都是传递集合,则∩A是传递集合
对称差 A⊕B : (A−B)∪(B−A)
集合关系证明
- 定义
- 逻辑恒等式
- 不断用定律展开式子
笛卡尔积的性质: 满足分配律(对交并都是), 不满足交换律和结合律
笛卡尔积是另一个笛卡尔积的子集等效于积的每一项都是对应项的子集
(A×B⊆C×D)⇔(A⊆C∧B⊆D)
(A⊆B)⇔(A×C⊆B×C)⇔(C×A⊆C×B)

不可以使用画图证明!
计算问题的类型:搜索问题, 计数问题, 优化问题, 判定问题 -> SAT问题
解决了判定问题, 其他问题就可以划归成判定问题
字母表->有限长度的字符集, string -> 子集, 合法的string, lauguage
decide: 输入w是否是语言L的元素
what problems computer can solve ? -> what lauguages can a computer recoginize?
朴素集合论:
朴素集合论会带来矛盾:
如果S∈S, 那么S满足P(x), S∈/S
反之同理
发现不管S∈S成立与否都矛盾
公理系统
ZF公理系统
子集公理: 单纯的谓词定义不够, 需要指定谓词在哪个集合上作用, 在集合上作用的谓词才是新的合法集合
正则公理: 对任意的一个非空集合x, 存在一个元素和x不相交
A∈/A的证明
A0={A}, 由正则公理, A0∩A=∅
如果A∈A 又有A∈{A}=A0 则得到A∩A0=A=∅,矛盾!
集合的势(基数): 元素个数 ∣A∣
A无限集合的势
阿列夫0(ℵ0): 自然数集合的势
比较两个集合的方法: 一一对应则等势
有理数Q和自然数N等势
可数集合的基数 <=
ℵ0
幂集合公理, 一个集合的所有子集构成的集合存在(集合的幂集是集合)
∣P(A)∣=2∣A∣
对于有限集合必有∣P(A)∣>A
但对于无限集合呢? 也成立
证明
首先P(A) >= A
, 证P(A) != A
即可
假设A和P(A)可以一一对应, 设 ai 对应 {ai1,ai2,...,aij} 这样一行
构造一个子集为: 在每一行取一个aij然后取反
假设这个子集与a对应, 那他应该是前面的一行, 但因为包含了取反的元素, 所以它不等于前面的一行, 矛盾!
所以∣P(A)∣>∣A∣ 恒成立(康托尔定理),
定义 ℵ1=P(ℵ0), 以此类推ℵ2, ...
实数集合
证明计算机不能解决所有的问题
|programs|<= |strings| < |sets of strings| <= |problems|
(对任意一个string set,至少可以构造一个问题,例如set之中最短的string)
所以 |programs| < |problems|
一定有问题是没有对应的program的映射的, 即计算机不可解
|形式语言| = |sets of strings|
字符串是有限长的, 因而可以base 字母表 (例如26进制)得到和一个整数的双射
所以|strings| = ℵ0
一维数轴上的所有点的集合和二维平面的所有点的集合,它们的基数是一样的,都是 c (continuum),也就是实数的基数。
这可能乍一看有些违反直觉,因为二维平面似乎比一维数轴包含“更多”点。然而,基数的概念在无限集上与有限集的计数方式有所不同。 我们 用一一对应来定义基数:如果两个集合之间存在一一对应的映射,则它们具有相同的基数。
证明一维和二维实数集具有相同基数的方法有很多,其中一种常见的方法是利用实数的小数表示法。
证明思路:
我们可以将一个区间 (0, 1) 内的实数与整个实数集建立一一对应,然后将 (0, 1) 内的实数与二维平面上的点建立一一对应。
-
(0, 1) 与实数集 R 的一一对应: 我们可以通过一些简单的函数变换,例如双曲正切函数 tanh(x),将 (0, 1) 映射到整个实数集 R。
-
(0, 1) 与 (0, 1) x (0, 1) 的一一对应: 这步是关键。我们可以将 (0, 1) 中的实数 x 表示成其十进制展开形式:x = 0.d₁d₂d₃d₄... 然后,我们可以构造一个映射,将 x 映射到 (0, 1) x (0, 1) 中的点 (y, z),其中 y 和 z 的十进制展开分别由 x 的十进制展开的奇数位和偶数位组成:
y = 0.d₁d₃d₅... z = 0.d₂d₄d₆...
这个映射是 (0, 1) 到 (0, 1) x (0, 1) 的一一对应(需要处理一些特殊情况,例如 0.999... = 1 的情况,但这不影响整体的证明思路)。
-
(0, 1) x (0, 1) 与二维平面: (0, 1) x (0, 1) 是单位正方形,我们可以通过一些几何变换将单位正方形映射到整个二维平面。
进一步的结论, ∣(a,b)∣=∣R∣=∣Rn∣
连续统假设: ∣R∣=ℵ1 ,这在ZFC公理体系下不可证明或证伪
关系
A,B的一个关系,是A×B 的子集
A的关系是 A×A 的子集
关系的性质:
- (R1∪R2)∘R3=R1∘R3∪R2∘R3 并分配
- (R1∩R2)∘R3⊆R1∘R3∩R2∘R3 交子集
aRb, aRb : <a,b>∈R,<a,b>∈/R
恒等关系 Ia:{<x,x>∣x∈A}
全域关系 Ea:R=A×B
空关系 Na=∅
dom(R) 定义域
ran(R) 值域
fld(R) = dom(R)∪ran(R) = ∪∪R
关系矩阵M(R)=(rij)m×n,rij=<xi,yi>∈R
关系图: X→Y的关系R, 图的顶点 X∪Y 边 R

图论算法->
关系图
R在A上的限制R↾A为A到Y的关系
A在R下的象 R[A]
实质是R↾A的值域
关系的逆 R−1: {<x,y>∣<y,x>∈R}, M(R−1)=MT(R)
关系的合成 R与S的合成 记为 S∘R , M(S∘R)=M(R)M(S)
逻辑(矩阵)乘 ⊙ :A⊙B
R[A]−R[B]⊆R[A−B]
恒等式证明: 拆开有序对, 可以直接变成关系矩阵的关系吗?
partitions 划分
- 空集不属于划分
- 任意属于划分的属于原来的集合
- 划分的广义并=原来的集合
- 划分的任意两个元素交集为空
partition 关系R, partition π of set A
def: R={<a,b>∣∃π0(π0∈π∧a∈π0∧b∈π0)}
(a,b在同一个partition block里面)
则有
- aRa for any a∈A 自反性
- if aRb, then bRa 对称性
- if aRb and bRc, then aRc 传递性
自反性
- x = x for any x
- A⊆A
- IA,EA
- =,≥,≤ on R
...
等价于关系矩阵对角线是1
对称性
- IA,EA,NA (NA空关系)
- 四种状态:对称、反对称,既不是对称也不是反对称,既是对称也是反对称
- 反对称: ((x∈A∧y∈A∧xRy∧x=y)→yRx) 或者等价的 ((x∈A∧y∈A∧xRy∧yRx)→x=y)
关系矩阵 M=MT, 即矩阵对称
反对称: 矩阵反对称
即是反对称也是对称: 只有对角线存在1
即
- R对称 ⇔R=R−1
- R反对称 ⇔R∩R−1⊆IA
传递性
- IA,EA,NA
- ⊆