道可道,非常道;名可名,非常名。
无名,天地之始,有名,万物之母。
故常无欲,以观其妙,常有欲,以观其徼。
此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

本笔记仅记录本人没学过的东西

基础知识

序列

序列指的是把对象按照一定的次序列举出来。可以是有限的,可以是无限的;可以由递归定义一个序列,也可以显式定义一个序列。

如果AUA\subseteq U,对xA\forall x \in AAA上的特征函数fAf_A定义为

fA(x)={1,xA0,xAf_A(x)=\begin{cases} 1,&x\in A\\ 0,&x\not\in A \end{cases}

fAB=fA&fBf_{A\cap B}=f_A \& f_B(集合并等于特征函数位并),类似的可以列出其他位运算成立的式子。

如果一个集合是有限集,则其特征函数可以使用序列来表示(计算机表示)(离散化)。

串与正则表达式

已知集合AA,可以构造由AA中所有有限序列所组成的集合AA^*AA被称为字母表AA^*中的所有元素称作AA中的或者字符串,用Λ\Lambda表示空字符串

如果对于w1=s1s2sn,w2=t1t2tn.w1,w2Aw_1=s_1s_2\cdots s_n,w_2=t_1t_2\cdots t_n.w_1,w_2\in A^*,定义w1w_1w2w_2的连接为序列s1s2snt1t2tns_1s_2\cdots s_nt_1t_2\cdots t_n,记作w1w2w_1\cdot w_2w1w2w_1w_2。显然其也在AA^*中。

由以下规则递归构造({xxA}{(,),,,})(\{x|x\in A\}\land\{(,),\land,*,\lor\})^*的字符串,称其为AA上的正则表达式rere

RE1: ΛRE2: xAxRE3: αβαβRE4: αβαβRE5: α(α)\begin{aligned} \text{RE1}:\space &符号\Lambda 是正则表达式。 \\ \text{RE2}:\space &如果x\in A,则x是正则表达式。 \\ \text{RE3}:\space &如果\alpha 和 \beta 是正则表达式,则\alpha\beta 是正则表达式。 \\ \text{RE4}:\space &如果\alpha 和 \beta 是正则表达式,则\alpha\lor\beta 是正则表达式。 \\ \text{RE5}:\space &如果\alpha 是正则表达式,则(\alpha)^*是正则表达式。 \end{aligned}

定义G(re)G(re)为按照以下规则递归构造出的字符串集合

1. G(Λ)={Λ}2. xAG(x)={x}3. αβAG(αβ)={sG(α),tG(β)st}4. αβAG(αβ)=G(α)G(β)5. αAG((α))=G(α)\begin{aligned} 1.\space &G(\Lambda)=\{\Lambda\} \\ 2.\space &如果x\in A,则G(x)=\{x\} \\ 3.\space &如果\alpha 和 \beta 都是A上的正则表达式,则G(\alpha\beta)=\{s\in G(\alpha),t\in G(\beta)|st\} \\ 4.\space &如果\alpha 和 \beta 都是A上的正则表达式,则G(\alpha \lor \beta)=G(\alpha)\lor G(\beta) \\ 5.\space &如果\alpha是A上的正则表达式,则G((\alpha)^*)=G(\alpha)^* \end{aligned}

正则表达式的匹配就是判断一个字符串是否在其GG函数表示的集合内。

数学结构

我们称对于某个集合,定义了其元素的一些运算。集合和这些运算构成了一个数学结构,用(,+,)(集合,+,-)来表示,比如(R,+,,,/)(R,+,-,*,/)

只有一个操作数的运算是一元运算,结合两个操作数的运算是二元运算

如果一个数学结构里运算的结果仍然在集合中,我们称这个结构关于这个运算是封闭的

对于一个集合AA上的一个二元运算\odot

我们称其是可交换的当且仅当x,yA ,AB=BA\forall x,y\in A\space ,A\odot B=B\odot A

我们称其是可结合的当且仅当x,y,cA ,(AB)C=A(BC)\forall x,y,c\in A\space ,(A\odot B)\odot C=A\odot (B\odot C)

左结合性指同等优先级的表达式在不加括号的情况下,从左至右执行。+,,,/+,-,*,/都是左接合的。

对于一个集合AA上的两个二元运算\odot\oplus,我们称\odot\oplus可分配当且仅当x,y,cA ,A(BC)=(AB)(AC)\forall x,y,c\in A\space ,A\odot (B\oplus C)=(A\odot B)\oplus (A\odot C)

如果对于一个二元运算\odote,xA,xe=ex=e\exist e,\forall x \in A,x\odot e=e\odot x=e。我们称ee\odot的一个单位元。一个二元运算的单位元一定唯一。

如果一个二元运算\odot存在单位元ee,如果x,yA,xy=yx=ex,y \in A,x\odot y=y\odot x=e。我们称yyxx

逻辑

命题是或者为真或者为假而不是两者同时成立的一条陈述语句。

命题变量出现在命题中,能以命题代替。命题或命题变量能通过逻辑联结词接合获得复合命题

在自然语言中,a或b有两种意思。一种是a和b只能有一个为真,一种是a和b有一个为真。逻辑中或只有后者的意思,所以需要结合语境来转换自然语言描述的命题。

如果ppqq是命题,ppqq析取是复合命题”ppqq“,用pqp\lor q来表示。折取pqp\land q来表示。

定义命题函数为从定义域里的元素产生命题的函数P(x)\text P(x),也叫谓词

P(x)\text P(x)全称量化是命题"对于所有xx的值,P(x)\text P(x)为真",用x P(x)\forall x\space\text P(x)表示,\forall称为全称量词

P(x)\text P(x)存在量化是命题"存在一个xxP(x)\text P(x)为真",用x P(x)\exist x\space\text P(x)表示,\exist称为存在量词

如果ppqq是命题,那么复合命题“如果pp,那么qq”称为条件命题蕴含,用pqp\Rightarrow q表示,pp称为前项假设qq称为后项结论。蕴含关系的真值表如下

pp qq pqp\Rightarrow q
T T T
T F F
F T T
F F T

相比自然语言,逻辑中蕴含用在更弱的意义下。

命题变量所有的可能值都为真的命题称为重言式。总是为假的命题称为矛盾或者谬论;命题的真假依赖于命题变量的真值,这种命题称为不定式

pqp\Leftrightarrow q是重言式,可以说ppqq逻辑等价的,或者简称等价

证明方法

如果pqp\Rightarrow q是一个重言式,那么称从pp逻辑上得到q,这里ppqq可以是包含许多命题变量的复合命题,如(p1p2pn)q(p_1\land p_2\land \cdots \land p_n)\Rightarrow q是重言式,此时称从p1p2pnp_1\land p_2\land \cdots \land p_n逻辑上得到qq,记为

p1p2pnqp_1 \\ p_2 \\ \vdots \\ p_n \\ \overline{\therefore q}

pip_i称为假设前提qq称为结论。基于重言式的论证称为推理规则。以下是一些重要的推理规则。

ppqqp \\ p\Rightarrow q\\ \overline{\therefore q}

此为假言推理

p(q)(p)qp \\ (\sim q)\Rightarrow(\sim p) \\ \overline{\therefore q}

此为间接方法

pqq pp\Rightarrow q \\ \sim q \\ \overline{\therefore\space \sim p}

此为反证法

数学归纳法

想证明nn0 P(n)\forall n\ge n_0\space P(n),其中nn为整数,只需证明P(n0)(mn, P(m)P(m+1))P(n_0)\land (\forall m\ge n,\space \text P(m)\Rightarrow\text P(m+1))为真即可。可写出以下步骤。

 ....... .......P(n)n1\begin{aligned} &\qquad\bold{基础步骤}\space .......\\ &\qquad \bold{归纳步骤}\space ....... \\ &由数学归纳法得到,\text P(n)对于所有的n\ge 1为真。 \end{aligned}

强形式的数学归纳法强归纳法是证明P(n0)P(n0+1)P(n0+2)P(k)P(k+1)\def \P {\text{P}} \P(n_0)\land \P(n_0+1)\land \P(n_0+2)\land \cdots\land \P(k)\Rightarrow \P(k+1)是一个重言式。基本步骤和前面一样。

强归纳和归纳法等价

计数

如果递归关系具有以下形式

an=i=1krkanka_n=\sum_{i=1}^k r_ka_{n-k}

其中rir_i为常数,称其是k\bold{k}阶线性其次关系。其有特征方程xk=i=0kr1xk1x^k=\sum_{i=0}^kr_1x^{k-1}。对于2阶线性其次递归关系,其特征方程的根和递归关系的显式公式如下

s1,s2an=usn+vs2nsan=usn+vnsn\begin{aligned} 有两个根s_1,s_2时,&a_n=us^n+vs_2^n\\ 有一个根s时,&a_n=us^n+vns^n \end{aligned}

关系和有向图

关系

定义集合上的笛卡尔积A1×A2××An={(a1,a2,,an)aiAi,i=1,2,,m}A_1\times A_2\times\cdots\times A_n =\{(a_1,a_2,\cdots,a_n)|a_i\in A_i,i=1,2,\cdots,m\}

右式表达的元素称为有序m-元

一个物件有nn个属性,属性的值就构成了这个属性的集合AiA_i

一个关系型数据库DDA1×A2××AnA_1\times A_2\times\cdots\times A_n的一个子集,其中每个AiA_i标识一个数据的属性,一个属性称为一个关键字

A,BA,B为非空集合,从ABRA\bold{到}B\bold{的一个关系}RA×BA\times B的一个子集。如果RA×BR\subseteq A\times B(a,b)R(a,b)\in R,我们称abRa\bold与b\bold是R\bold{相关的},记为a R ba\ R\ b,如果不是,则记为a R ba\ \not R\ b,通常A=BA=B,则往往称RAR\bold是A上\bold{的一种关系}

比如集合{1,2,3}到集合{4,5,6}的一个关系R={{2,4},(3,6)}

RR定义域Dom(R)\text{Dom}(R)表示,Dom(R)A\text{Dom}(R)\in ARR值域Ran(R)\text{Ran}(R)表示,Ran(R)B\text{Ran}(R)\in B

xAx\in A,记R(x)={yBx R y}R(x)=\{y\in B| x\ R\ y\}

A1AA_1\subseteq AR(x)={yBxA1,x R y}R(x)=\{y\in B| \exist x\in A_1,x\ R\ y\}

A={a1,,an},B={b1,,bn}A=\{a_1,\cdots,a_n\},B=\{b_1,\cdots,b_n\}RR是从AABB的一个关系,定义RR的矩阵MR=[mij],mi,j={1,(ai,bj)R0,OthersM_R=[m_{ij}],m_{i,j}=\begin{cases}1,\quad(a_i,b_j)\in R\\0,\quad Others \end{cases}

如果AA是个有限集,RRAA上的关系。可将AA的元素看成点,每个xRx\in R看成单向边,构成了一个有向图,称为RR的有向图

定义x Rn yx\ R^n\ y指存在a1,,an1a_1,\cdots,a_{n-1}使得nn个关系x R a1,a1 R a2,,an1 R yx\ R\ a_1,a_1\ R\ a_2,\cdots,a_{n-1}\ R\ y成立。(路径)

RkR^k也是一个关系

定义x R yx\ R^\infty\ y指存在kk,使得x Rk yx\ R^k\ y成立。(连通)

MR2=MRMRM_{R^2}=M_R\odot M_R(布尔积)

关系的性质

称关系RR自反的,当且仅当aA,a R a\forall a\in A,有a\ R\ a

称关系RR非自反的,当且仅当aA,a R a\forall a\in A,有a\ \not R\ a

称关系RR对称的,当且仅当a R bb R a\forall a\ R\ b则b\ R\ a。(无向)

称关系RR非对称的,当且仅当a R bb R a\forall a\ R\ b则b\ \not R\ a。(单向,无自环)

称关系RR反对称的,当且仅当如a R bb R a\forall a\ R\ b\land b\ R\ aa=ba=b。(单向,不care自环有无)

称关系RR传递的,当且仅当a R bb R c\forall a\ R\ b\land b\ R\ ca R ca\ R\ c

等价关系

如果RR是自反的、对称的和传递的,称其是一个等价关系

等价关系的有向图是一个包含有几个完全图的图

关系运算

下文中所有关系均设为集合AA上。

关系是集合,可以用集合运算。

a R1 ba\ R^{-1}\ b当且仅当b R ab\ R\ a。(

有以下关系运算后自反性质的定理

  • RR自反,则R1R^{-1}自反
  • RRSS自反,则RSR\cap SRSR\cup S是自反
  • RR自反当且仅当R\overline R是非自反(补集)

有以下关系运算后对称性质的定理

  • RR是对称的当且仅当R=R1R=R^{-1}
  • RR是反对称的当且仅当RR1ΛR\cap R^{-1}\subseteq \LambdaΛ={aA(a,a)}\Lambda=\{a\in A|(a,a)\}
  • RR是非对称的当且仅当RR1=R\cap R^{-1}=\emptyset

有以下关系运算后的定理

  • (RS)2R2S2(R\cap S)^2\subseteq R^2\cap S^2
  • RRSS都是传递的,则RSR\cap S是传递的
  • RRSS都是等价的,则RSR\cap S是等价的
闭包

我们希望从集合上的一个关系RR出发,向RR添加一些对,使其满足某些性质。如果存在最小关系R1R_1,称其是关于该性质的RR的闭包。

RR自反闭包RΛR\cup \LambdaRR对称闭包RR1R\cup R^{-1}RR传递闭包RR^\infty

如果RRAABB的关系,SSBBCC的关系,称RRSS合成{(a,b)R,(b,c)S(a,c)}\{(a,b)\in R,(b,c)\in S|(a,c)\},记为SRS\circ R

MSR=MRMSM_{S\circ R}=M_R \odot M_S

R=n=1RnR^\infty=\bigcup_{n=1}^\infty R^n,如果A=n|A|=n,退化为R=i=1nRiR^\infty=\bigcup_{i=1}^n R^i

FloydWarshallFloyd-Warshall算法如下

RRA=a1,a2,,an集合A={a_1,a_2,\cdots,a_n}上的一个关系,如果x1,x2,,xmx_1,x_2,\cdots,x_mRR中的一条道路,除了x1xmx_1\cdots x_m以外的任何顶点都称作道路的内顶点。定义布尔矩阵WkW_k如下,Wk[i,j]W_k[i,j]11当且仅当RR中存在aia_iaja_j的一条道路,它的内顶点构成的集合是{a1,,ak}\{a_1,\cdots,a_k\}的子集。

不妨设W0=MRW_0=M_R,有Wn=MRW_n=M_{R^\infty}

利用动态规划的思想,得到

Wk[i,j]={1,Wk1[i,j]=1 (Wk1[i,k]=1Wk1[k,j]=1)0,othersW_{k}[i,j]= \begin{cases} 1,\quad W_{k-1}[i,j]=1\ \lor (W_{k-1}[i,k]=1\land W_{k-1}[k,j]=1) \\ 0,\quad others\\ \end{cases}

时间复杂度O(n3)O(n^3)

序关系和序结构

如果某个集合AA上的关系RR是自反的、反对称的和传递的,称RR是一个偏序。集合AA与偏序RR一起称作偏序集(A,R)(A,R)。(DAG)

(A,R1)(A,R^{-1})(A,R)(A,R)对偶R1R^{-1}RR对偶

如果a R bb R aa\ R\ b\lor b\ R\ a成立称a,ba,b可比。如果a,bA a,b\forall a,b \in A\ a,b可比成立,称AA是一个全序,也称AA是一个。(此处应有std::sort

如果(A,)(A,\le)(B,)(B,\le)是偏序集,则(A×B,)(A\times B,\le)是偏序集,如果(a,b)(a,b)(a,b)\le (a',b'),当且仅当aabba\le a'\land b\le b'。称笛卡尔积上的这种偏序为积偏序

如果(A,)(A,\le)(B,)(B,\le)是偏序集,则(A×B,)(A\times B,\prec)是偏序集,如果(a,b)(a,b)(a,b)\prec (a',b'),当且仅当a<a(a=ab<b)a<a' \lor (a=a'\land b< b)'。称笛卡尔积上的这种偏序为字典序
std::pairstd::tuplestd::stringstd::array

哈塞图是一种表示偏序集的特殊无向图。其表示了一个每条边的方向都是从下往上,忽略了自环的和路径长度大于1的有向图。这个有向图就是偏序集关于这个关系的有向图。

拓扑排序就是DAG的一个可能的搜索路径。

(A,R)(A,R)(A,R)(A',R')是偏序集,如果存在一个双射f: AAf:\ A\rightarrow A',使得a,bA ,a R bf(a) R f(b)\forall a ,b\in A\ ,a\ R\ b\Leftrightarrow f(a)\ R'\ f(b),则称函数ff是从(A,R)(A,R)(A,R)(A',R')的一个同构,称(A,R)(A,R)(A,R)(A',R')同构的偏序集。

极小元指的是哈塞图中的所有DAG起点,极大元指的是哈塞图中所有DAG终点。最大元aa满足xA,x R a\forall x\in A,x\ R\ a成立,最小元aa满足xA,x R1 a\forall x\in A,x\ R^{-1}\ a成立。

BAB\subset A上界LUB(B)\text{LUB}(B)指的是BB集合的所有公共祖先,下界GLB(B)\text{GLB}(B)指的是BB集合的所有公共孩子。最小上界是唯一的最小公共祖先,最小下界是唯一的最大公共孩子。(草)

格是A的一个子集AA',满足a,bA ,LUB({a,b}),GLB({a,b})\forall a,b\in A'\ ,\exist \text{LUB}(\{a,b\}),\exist \text{GLB}(\{a,b\})