道可道,非常道;名可名,非常名。
无名,天地之始,有名,万物之母。
故常无欲,以观其妙,常有欲,以观其徼。
此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。
本笔记仅记录本人没学过的东西
基础知识
序列
序列指的是把对象按照一定的次序列举出来。可以是有限的,可以是无限的;可以由递归定义一个序列,也可以显式定义一个序列。
如果A⊆U,对∀x∈A,A上的特征函数fA定义为
fA(x)={1,0,x∈Ax∈A
有fA∩B=fA&fB(集合并等于特征函数位并),类似的可以列出其他位运算成立的式子。
如果一个集合是有限集,则其特征函数可以使用序列来表示(计算机表示)(离散化)。
串与正则表达式
已知集合A,可以构造由A中所有有限序列所组成的集合A∗。A被称为字母表,A∗中的所有元素称作A中的字或者字符串,用Λ表示空字符串。
如果对于w1=s1s2⋯sn,w2=t1t2⋯tn.w1,w2∈A∗,定义w1与w2的连接为序列s1s2⋯snt1t2⋯tn,记作w1⋅w2或w1w2。显然其也在A∗中。
由以下规则递归构造({x∣x∈A}∧{(,),∧,∗,∨})∗的字符串,称其为A上的正则表达式re
RE1: RE2: RE3: RE4: RE5: 符号Λ是正则表达式。如果x∈A,则x是正则表达式。如果α和β是正则表达式,则αβ是正则表达式。如果α和β是正则表达式,则α∨β是正则表达式。如果α是正则表达式,则(α)∗是正则表达式。
定义G(re)为按照以下规则递归构造出的字符串集合
1. 2. 3. 4. 5. G(Λ)={Λ}如果x∈A,则G(x)={x}如果α和β都是A上的正则表达式,则G(αβ)={s∈G(α),t∈G(β)∣st}如果α和β都是A上的正则表达式,则G(α∨β)=G(α)∨G(β)如果α是A上的正则表达式,则G((α)∗)=G(α)∗
正则表达式的匹配就是判断一个字符串是否在其G函数表示的集合内。
数学结构
我们称对于某个集合,定义了其元素的一些运算。集合和这些运算构成了一个数学结构,用(集合,+,−)来表示,比如(R,+,−,∗,/)。
只有一个操作数的运算是一元运算,结合两个操作数的运算是二元运算。
如果一个数学结构里运算的结果仍然在集合中,我们称这个结构关于这个运算是封闭的。
对于一个集合A上的一个二元运算⊙
我们称其是可交换的当且仅当∀x,y∈A ,A⊙B=B⊙A
我们称其是可结合的当且仅当∀x,y,c∈A ,(A⊙B)⊙C=A⊙(B⊙C)
左结合性指同等优先级的表达式在不加括号的情况下,从左至右执行。+,−,∗,/都是左接合的。
对于一个集合A上的两个二元运算⊙和⊕,我们称⊙对⊕可分配当且仅当∀x,y,c∈A ,A⊙(B⊕C)=(A⊙B)⊕(A⊙C)。
如果对于一个二元运算⊙,∃e,∀x∈A,x⊙e=e⊙x=e。我们称e是⊙的一个单位元。一个二元运算的单位元一定唯一。
如果一个二元运算⊙存在单位元e,如果x,y∈A,x⊙y=y⊙x=e。我们称y是x的逆。
逻辑
命题是或者为真或者为假而不是两者同时成立的一条陈述语句。
命题变量出现在命题中,能以命题代替。命题或命题变量能通过逻辑联结词接合获得复合命题。
在自然语言中,a或b有两种意思。一种是a和b只能有一个为真,一种是a和b有一个为真。逻辑中或只有后者的意思,所以需要结合语境来转换自然语言描述的命题。
如果p和q是命题,p和q的析取是复合命题”p或q“,用p∨q来表示。折取用p∧q来表示。
定义命题函数为从定义域里的元素产生命题的函数P(x),也叫谓词。
P(x)的全称量化是命题"对于所有x的值,P(x)为真",用∀x P(x)表示,∀称为全称量词。
P(x)的存在量化是命题"存在一个x,P(x)为真",用∃x P(x)表示,∃称为存在量词。
如果p和q是命题,那么复合命题“如果p,那么q”称为条件命题或蕴含,用p⇒q表示,p称为前项或假设,q称为后项或结论。蕴含关系的真值表如下
p |
q |
p⇒q |
T |
T |
T |
T |
F |
F |
F |
T |
T |
F |
F |
T |
相比自然语言,逻辑中蕴含用在更弱的意义下。
命题变量所有的可能值都为真的命题称为重言式。总是为假的命题称为矛盾或者谬论;命题的真假依赖于命题变量的真值,这种命题称为不定式。
若p⇔q是重言式,可以说p和q是逻辑等价的,或者简称等价。
证明方法
如果p⇒q是一个重言式,那么称从p逻辑上得到q,这里p和q可以是包含许多命题变量的复合命题,如(p1∧p2∧⋯∧pn)⇒q是重言式,此时称从p1∧p2∧⋯∧pn逻辑上得到q,记为
p1p2⋮pn∴q
pi称为假设或前提,q称为结论。基于重言式的论证称为推理规则。以下是一些重要的推理规则。
pp⇒q∴q
此为假言推理
p(∼q)⇒(∼p)∴q
此为间接方法
p⇒q∼q∴ ∼p
此为反证法
数学归纳法
想证明∀n≥n0 P(n),其中n为整数,只需证明P(n0)∧(∀m≥n, P(m)⇒P(m+1))为真即可。可写出以下步骤。
基础步骤 .......归纳步骤 .......由数学归纳法得到,P(n)对于所有的n≥1为真。
强形式的数学归纳法或强归纳法是证明P(n0)∧P(n0+1)∧P(n0+2)∧⋯∧P(k)⇒P(k+1)是一个重言式。基本步骤和前面一样。
强归纳和归纳法等价
计数
如果递归关系具有以下形式
an=i=1∑krkan−k
其中ri为常数,称其是k阶线性其次关系。其有特征方程xk=∑i=0kr1xk−1。对于2阶线性其次递归关系,其特征方程的根和递归关系的显式公式如下
有两个根s1,s2时,有一个根s时,an=usn+vs2nan=usn+vnsn
关系和有向图
关系
定义集合上的笛卡尔积A1×A2×⋯×An={(a1,a2,⋯,an)∣ai∈Ai,i=1,2,⋯,m}
右式表达的元素称为有序m-元。
一个物件有n个属性,属性的值就构成了这个属性的集合Ai。
一个关系型数据库D是A1×A2×⋯×An的一个子集,其中每个Ai标识一个数据的属性,一个属性称为一个关键字。
设A,B为非空集合,从A到B的一个关系R是A×B的一个子集。如果R⊆A×B且(a,b)∈R,我们称a与b是R相关的,记为a R b,如果不是,则记为a R b,通常A=B,则往往称R是A上的一种关系。
比如集合{1,2,3}到集合{4,5,6}的一个关系R={{2,4},(3,6)}
R的定义域用Dom(R)表示,Dom(R)∈A。R的值域用Ran(R)表示,Ran(R)∈B。
如x∈A,记R(x)={y∈B∣x R y}
如A1⊆A记R(x)={y∈B∣∃x∈A1,x R y}
如A={a1,⋯,an},B={b1,⋯,bn},R是从A到B的一个关系,定义R的矩阵MR=[mij],mi,j={1,(ai,bj)∈R0,Others。
如果A是个有限集,R是A上的关系。可将A的元素看成点,每个x∈R看成单向边,构成了一个有向图,称为R的有向图。
定义x Rn y指存在a1,⋯,an−1使得n个关系x R a1,a1 R a2,⋯,an−1 R y成立。(路径)
Rk也是一个关系
定义x R∞ y指存在k,使得x Rk y成立。(连通)
有MR2=MR⊙MR(布尔积)
关系的性质
称关系R是自反的,当且仅当∀a∈A,有a R a。
称关系R是非自反的,当且仅当∀a∈A,有a R a。
称关系R是对称的,当且仅当∀a R b则b R a。(无向)
称关系R是非对称的,当且仅当∀a R b则b R a。(单向,无自环)
称关系R是反对称的,当且仅当如∀a R b∧b R a则a=b。(单向,不care自环有无)
称关系R是传递的,当且仅当∀a R b∧b R c则a R c。
等价关系
如果R是自反的、对称的和传递的,称其是一个等价关系。
等价关系的有向图是一个包含有几个完全图的图
关系运算
下文中所有关系均设为集合A上。
关系是集合,可以用集合运算。
a R−1 b当且仅当b R a。(逆)
有以下关系运算后自反性质的定理
- 如R自反,则R−1自反
- 如R和S自反,则R∩S和R∪S是自反
- R自反当且仅当R是非自反(补集)
有以下关系运算后对称性质的定理
- R是对称的当且仅当R=R−1
- R是反对称的当且仅当R∩R−1⊆Λ(Λ={a∈A∣(a,a)})
- R是非对称的当且仅当R∩R−1=∅
有以下关系运算后的定理
- (R∩S)2⊆R2∩S2
- 如R和S都是传递的,则R∩S是传递的
- 如R和S都是等价的,则R∩S是等价的
闭包
我们希望从集合上的一个关系R出发,向R添加一些对,使其满足某些性质。如果存在最小关系R1,称其是关于该性质的R的闭包。
R的自反闭包是R∪Λ;R的对称闭包是R∪R−1;R的传递闭包是R∞。
如果R是A到B的关系,S是B到C的关系,称R和S的合成为{(a,b)∈R,(b,c)∈S∣(a,c)},记为S∘R。
有MS∘R=MR⊙MS
有R∞=⋃n=1∞Rn,如果∣A∣=n,退化为R∞=⋃i=1nRi。
Floyd−Warshall算法如下
设R是集合A=a1,a2,⋯,an上的一个关系,如果x1,x2,⋯,xm是R中的一条道路,除了x1⋯xm以外的任何顶点都称作道路的内顶点。定义布尔矩阵Wk如下,Wk[i,j]为1当且仅当R中存在ai到aj的一条道路,它的内顶点构成的集合是{a1,⋯,ak}的子集。
不妨设W0=MR,有Wn=MR∞。
利用动态规划的思想,得到
Wk[i,j]={1,Wk−1[i,j]=1 ∨(Wk−1[i,k]=1∧Wk−1[k,j]=1)0,others
时间复杂度O(n3)。
序关系和序结构
如果某个集合A上的关系R是自反的、反对称的和传递的,称R是一个偏序。集合A与偏序R一起称作偏序集(A,R)。(DAG)
(A,R−1)是(A,R)的对偶,R−1是R的对偶。
如果a R b∨b R a成立称a,b可比。如果∀a,b∈A a,b可比成立,称A是一个全序,也称A是一个链。(此处应有std::sort
)
如果(A,≤)和(B,≤)是偏序集,则(A×B,≤)是偏序集,如果(a,b)≤(a′,b′),当且仅当a≤a′∧b≤b′。称笛卡尔积上的这种偏序为积偏序。
如果(A,≤)和(B,≤)是偏序集,则(A×B,≺)是偏序集,如果(a,b)≺(a′,b′),当且仅当a<a′∨(a=a′∧b<b)′。称笛卡尔积上的这种偏序为字典序。
(std::pair
,std::tuple
,std::string
,std::array
)
哈塞图是一种表示偏序集的特殊无向图。其表示了一个每条边的方向都是从下往上,忽略了自环的和路径长度大于1的有向图。这个有向图就是偏序集关于这个关系的有向图。
拓扑排序就是DAG的一个可能的搜索路径。
设(A,R)和(A′,R′)是偏序集,如果存在一个双射f: A→A′,使得∀a,b∈A ,a R b⇔f(a) R′ f(b),则称函数f是从(A,R)到(A′,R′)的一个同构,称(A,R)和(A′,R′)是同构的偏序集。
极小元指的是哈塞图中的所有DAG起点,极大元指的是哈塞图中所有DAG终点。最大元a满足∀x∈A,x R a成立,最小元a满足∀x∈A,x R−1 a成立。
B⊂A的上界LUB(B)指的是B集合的所有公共祖先,下界GLB(B)指的是B集合的所有公共孩子。最小上界是唯一的最小公共祖先,最小下界是唯一的最大公共孩子。(草)
格
格是A的一个子集A′,满足∀a,b∈A′ ,∃LUB({a,b}),∃GLB({a,b})。