课程简介

离散数学 研究对象:离散个体以及结构关系

图论与代数结构 的书还讨论了 平面图与图的着色、图的匹配问题、网络流、抽象代数的内容

图的基本概念

主要复习:

图的概念

G 是一个二元组:G=(V,E).

对任一图 G,用 V(G),E(G) 表示节点集合和边集合。

图的分类

自环和重边

节点的度

赋权图

子图

记忆:生成子图对节点集有要求,导出子图对边有要求。

图的运算

G1G2=(V1V2,E1E2)、并 G1G2=(V1V2,E1E2)、差(G1G2=(V1,E1E2),如果出现孤立点,删掉)、补(G1=KnG1).

对称差(G1G2=(G1G2)(G2G1)

图的运算

图的同构

定义:给定图 G1=(V1,E1) 以及图 G2=(V2,E2),如果在 V1V2 之间存在双射使得

(u,v)E1(f(u),f(v))E2

G1G2 同构,记为 G1G2

必要条件:

Peterson 图。

image-20240115003453344

Ramsey 定理

对于红色 Ks 或者蓝色 Kt,一定能够找一个最小的 n,使得若对完全图 Kn 中的所有线段染红色或蓝色,一定会出现红色 Ks 或者蓝色 Kt.

代数表示

邻接矩阵 (adjacency matrix)

aij={1,(vi,vj)E,0,otherwise

无向图的邻接矩阵是对称矩阵;无向简单图邻接矩阵的第 i 行之和为结点 vi 的度。

权矩阵

aij={wij,(vi,vj)E,0,otherwise

关联矩阵 (incidence matrix)

有向图 G=(V,E) 的关联矩阵是一个 n×m 矩阵 B,其元素为:

bij={1,ej=(vi,vk)E,1,ej=(vk,vi)E,0,otherwise

图的矩阵表示:

边列表 对于每条边 ek=(vi,vj),有:

A[k]=i,B[k]=j,Z[k]=wk

正向表 有向图用 n+1 维向量 Am 维向量 B 来表示。

image-20230920104330579

但是插入删除操作复杂度高。

邻接表

image-20230920110117565

道路与回路

道路与回路

有向道路 有向图 G 中边序列 P=(ei1,ei2,,eiq),其中 eij=(vk,vi) 满足 vkeij1 的终点,vieij+1 的起始点。

有向回路 eiq 的终点也是 ei1 的始点。

道路/链 无向图 G=(V,E) 中, 若点边交替序列 P=(vi1,ei1,vi2,ei2,,eiq1,viq) 满足 vik,vik+1eik 的两个端点, 则称 PG 中的一条链, 或道路。如果 viq=vi1, 则称 PG 中的一个圈, 或回路。

一个点可以成为道路,但是不能成为回路。

如果 P 中没有重复出现的边, 称之为 简单道路 或简单回路, 若其中结点也不重复, 又称之为 初级道路 或初级回路。

回路/圈

极长路径/初级道路 P 是一条初级道路(点不重复),始点和终点都不与 P 外的顶点相邻。

扩大初级道路法 求极长路径。

C 为简单图 G 中含节点数大于 3 的一个初级回路,如果结点 vivjC 中不相邻,而边 (vi,vj)E(G),则 (vi,vj)C 的一条弦。

image-20230920112106731

联通性

二分图

道路与回路的判定

欧拉回路

欧拉:每条路都走一遍。

欧拉回路:连通图 G 中一条经过所有边的简单回路。七桥问题就是判断是否存在欧拉回路。

欧拉道路:连通图 G 中一条经过所有边的简单道路。

欧拉图:具有欧拉回路的图。

欧拉半图:具有欧拉道路但是无欧拉回路的图。


定理:无向 连通图 G 中存在欧拉回路的充要条件为 G 中各节点的度都是偶数。


定理: 无向连通图 G 中存在欧拉道路(欧拉半图)的充要条件是 G 中只有两个度为奇数的结点。

证明: 连接这两顶点,则有回路;再删去这条边。


定理:有向连通图 G 中存在欧拉回路的充要条件为 G 中节点的入度和出度相等。

定理:有向连通图 G欧拉半图 的充要条件为至多有两个顶点,其中一个出度比入度大一,一个入度比出度大一。


定理:设连通图 G=(V,E) 中有 2k 个度数为奇数的节点,那么 E(G) 可以划分为 k 条简单道路。k 笔画。

证明:增加 k 条边,连接度数为奇数的节点,形成的图各个节点的度数都为偶数,在欧拉回路上增加的边一定不相邻,否则开始节点度数应该为偶数,然后在欧拉回路上去掉新增的边,即可划分为 k 条简单道路。


image-20230922150327070

哈密顿道路

哈密顿:每个顶点走一遍。


哈密顿 (H) 回路(道路):无向图 G 的一条经过全部节点的初级回路(道路)。

哈密顿图:具有 H 回路的图。Kn 是哈密尔顿图?需要 n3.

哈密顿半图:具有 H 道路而无 H 回路的图。

image-20231010210044639

H 回路的判定很困难,没有发现充分必要条件,只有若干充分条件:


引理: 设 P:v1,v2,,vl 是简单图 G 中一条极长的初级道路,而且对于任意 vi,vjd(vi)+d(vj)l,则 G 中一定存在经过节点 v1,v2,,vl初级回路

image-20231006101614724


定理:若简单图 G 的任意两节点 vivj 之间恒有 d(vi)+d(vj)n1,则存在 H 道路

首先,G 是连通图,假设有 2 个联通支,即是每个联通支是完全图,

d(vi)n11,d(vj)n21d(vi)+d(vj)n2<n1

因此矛盾。

其次,我们构造 H 道路,假设 P=v1v2vlG 中一条极大路径,ln

重复以上步骤,即可得到 H 道路。


推论:若简单图 G(n3) 的任意两节点 vivj 都满足:

d(vi)+d(vj)n

则存在 H 回路。

一定存在哈密顿道路 P.

Gn3 的简单图,证明:若 m12(n1)(n2)+2,则 G 存在 H 回路。

若任意 vi,vj,都满足 d(vi)+d(vj)n,则由之前推论直到一定存在 H 回路。


推论:若简单图 G(n3) 的任何一个节点的度数都大于等于 n/2,则存在 H 回路。


推论:若简单图 G(n3) 有不相邻节点 vivj 满足

d(vi)+d(vj)n

G 中存在 H 回路当且仅当 G+(vi,vj)H 回路。


闭合图vivj 是简单图 G 的不相邻节点,且满足 d(vi)+d(vj)n,则令 G=G+(vi,vj),对 G 重复以上过程,直到不再有这样的节点对为止,最终得到的图称为 G 的闭合图。

image-20231006105041185

简单表示为,在 C2(G) 构造时没发现 (u,v) 的节点对。



G 是哈密顿图,则对于任意的非空 V1V(G),图 GV1 中的连通支数不大于 |V1|

考虑 G 中的任意一条哈密顿回路 CCV1 的连通支数不大于 |V1|,而因为 CG 的生成子图,所以 CV1 的连通支数又不大于 GV1 的连通支数。

不能用作判断哈密顿图的条件

但是,可以证明不是哈密顿图:

image-20231010205509526

有割点的连通图不是哈密顿图。

image-20231011103410771

tips: 选择的点集贪心地考虑的话,要考虑度数大的,其次考虑和之前选的点尽量不相邻的。

image-20231011103931350

但是,对于 Peterson 图,都满足这个条件,但是也不是哈密顿图。


奇数个结点构成的二分图不是哈密顿图。

证:否则 H 圈是奇圈,而二部图无奇圈.


image-20231010210840048

定义


割边G=GeG 的连通支数多, 则称 eG 的割边.

e=(u,v) 是割边当且仅当 e 不属于任何回路 树中的边都是割边


树的等价定义

T 是节点数 n2 的树,则下列性质互相等价:

  1. T 连通且无回路。

  2. T 连通且每条边都是割边。

  3. T 连通且有 n1 条边。

  4. Tn1 条边且无回路。

  5. T 的任意两节点之间有唯一道路。

  6. T 无回路,但是在任意两节点间加上一条边之后恰好有一个回路。

树是边数最少的连通图,也是边数最多的无回路图。

满足联通、无回路,n1 条边中任意两个条件的图是树。



生成树 定义: 如果 T 是图 G 的支撑子图, 而且是树, 则称 TG 的支撑树或生成树。

G 有支撑树当且仅当 G 是连通的,若图 G 本身不是树, 则其支撑树不唯一。

余树G 删掉生成树 T 中各边后的子图。

Huffman树

二叉树

赋权二叉树

最优二叉树 给定树叶数目及其权值,构造 WPL 最小的二叉树,称为 Huffman 树。

Huffman 算法:给定 n 个带权树叶,构造最优二叉树。

  1. 排序得 wi1wi2win.

  2. 计算 wi=wi1+wi2. 作为中间节点 vi 的权值,vi 左儿子是 vi1,右儿子是 vi2. n=1.

  3. n=1,则输出,否则继续按 1. 排序。

为什么是最优

假定 w1w2wnlivi 和根节点的距离,并且设 T 是最优树。

Huffman 编码

前缀码α=α1α2αn1αn 是长度为 n 的字符串,α1α2αk 称为 α 的长度为 k 的前缀,k=1,2,,n1,若非空字符串 β1,β2,,βm 中任意两个互不为前缀,则称 {β1,,βm} 为前缀码,只出现 0,1 的前缀码称为二元前缀码。

最短树

Kruskal

将各边权重从小到大排序 while(最小生成树的边数<=总节点数-1) 找到最小的边权重,他连接的两边节点作为起始点 按从小到大的边权重顺序将节点加入图C中

定理:T=(V,E) 是赋权连通图 G=(V,E) 的最短树,当且仅当对于任意余树边 eEEE+e 的回路 Ce 满足:

w(e)w(a),for aCe,ae

否则,T(a,e) 得到的树 TT 更小。

 

Prim

需要先指定一个起始位置 while(最小生成树的边数<=总节点数-1) 寻找该点边权重最小的节点加入图C中 将图C看做一个整体,寻找C的所有边中权重最小的边,将所连点加入图C中

定理:假设 V 是赋权连通图 G=(V,E) 的节点真子集,e 是端点分别属于 VVV 的最短边,则 G 中一定存在包含 e 的最短树。

如果两点集之间连边为 e(e),直接取 T0(e,e)

匹配

引入:m 项工作分配给 n 个人去做,每人最多从事一项工作,每项工作最多由一人完成。

还可以在连边上做文章,比如可以限语言相通,一人领航一人驾驶等。

二分图匹配

定义匹配:令 M 是图 G 的边子集,若 M 中任意两条边都没有共同的顶点,则称 MG 的一个 匹配。其中与 M 的边相关联的顶点称为饱和点,否则称为非饱和点。

最大匹配时 |M| 最大对应的匹配。

给定了 G 的一个匹配 MG 中属于 M 和不属于 M 的边交替出现的道路称为 交互道路,构成回路的交互道路称为 交互回路

PG 中关于匹配 M 的一条交互道路,如果 P 的两个端点是关于 M 的非饱和点(可以连出去新的边) ,则它称为 可增广道路

定理:MG 的最大匹配当且仅当 G 中不存在关于 M 的可增广道路。

使用反证法即可。

转化为:G 中不存在关于 M 的可增广道路时,MG 的最大匹配。则需要证明当 M 不是 G 的最大匹配时一定存在可增广道路。分析 G=MMG 联通支中不可能出现度数大于 3 的节点,此时节点连出的边中存在两个同时属于 MM. 因此,联通支只有三种情况:

  1. 孤立顶点,当 (vi,vj)MM 时会出现孤立点 vivj,代表边相互抵消;

  2. 初级回路,此时 M 的边和 M 的边交替出现,也相当于出现次数相等;

  3. 初级道路,|M||M|,只有可能在初级道路上两者出现次数不等,此时必定存在 M 关于 M 的可增广交互道路。

image-20231017200547069

注意 x4,x5 也算一条可增广交互道路。

完全匹配

|M|=|X|,称为完全匹配,|M|=|X|=|Y|,称为完美匹配。

Hall 定理给出了判别完全匹配的条件:

证明XY 存在完全匹配的充要条件是对于 X 的任意子集 A,恒有 |Γ(A)||A|.

若存在 |Γ(A)|<|A|,则 A 连出的边无法覆盖,因此,不存在完美匹配。

若不存在完全匹配,则设 x0 没有匹配上,则 x0 连到的节点一定被匹配了,而且不存在增广路,设增广路左边节点的集合为 X1,右边节点的集合为 Y1,根据匹配的性质,Y1 的顶点与 X1x0 的顶点存在一一对应,因此 |X1|=1+|Y1|>|Γ(X1)|. 矛盾。

image-20231017215730445

定理 在二分图 G=(X,Y,E) 中,XY 最大匹配的边数是 |X|δ(G),其中 δ(G)=maxAxδ(A)δ(A)=|A||Γ(A)|,δ(A)0.

二分图最大匹配的König定理

利用最小割最大流定理的证明:原点向左边连流量为 1 的边,然后原来的边流量为 +,右边向汇点连流量 1 的边。最大流对应最大匹配,最小割割掉的边和点对应,割掉之后,相当于断开这个点相连的所有边。

最大独立集是最小点覆盖的补集,如果补集中有两点相连,说明这条边没有在最小点覆盖中覆盖到。

网络流

jyy 的引入:求不相交路径个数

我们考虑一个这样的问题,假设图 G 节点可以分为 S,T 两个集合,其中 S 没有向 T 连任何一条边,若 sS,tT,则从 st 没有路径。我们再考虑,若用 Cut(S,T) 表示从 ST 连的边数目,给定 s,t,最小割定义为:

MinCut=minS,T;sS,tTCut(S,T)

最小割对应的 S,T 集合称为 ST.

再考虑从 st 的最多边不重复路径个数 MaxRoute,可以发现对于每一条路径,由于其从 S 中的节点 s 出发,到 T 中的节点 t 结束,因此,路径中必然存在一条边,连接了 uS,vT,而最多有 MinCut 这么多的这样的边,因此,可得:

MaxRouteMinCut

再考虑怎么证明等号可以取到,这里,我们考虑朴素的贪心:看到了一条路径,就取这条路径。

image-20231104110703271

类似于二分图最大匹配,我们采用反悔的机制。再考虑二分图最大匹配的证明,证明里面使用了对称差,其本质是一种加法,因此可以考虑给正向边和反向边都赋予权值,然后我们求出来路径里面,正向边和反向边是可以抵消的。

一开始,我们给所有正向的边赋予权值 1,所有反向的边赋予权值 0,假设我们决定取这条边,则正向赋予 0,反向赋予 1,代表我们可以反悔,通过后来反向取这条边,来不取这条边。

举例,假设我们先取了 12346,边权如下:

image-20231104111057901

容易发现存在路径 132456,因此,继续取这条路径。

image-20231104111306929

这两条路径进行抵消,可以得到 124613456

再考虑一条新路径和原路径抵消之后为什么会多出来一条路径,这个其实和二分图增广路的思想差不多,画个图比较容易理解。

再考虑为什么算法结束的时候,一定能找到 MinCut 条路径,假设算法结束时,找到了 m 条路径。

因此,m=MaxRoute=MinCut.

利用重边,这种方法可以推广到边权为整数的情况,进而推广到非整数的情况。

最大流最小割定理

可以用这种方法理解网络流中的对偶性,即最大流=最小割,还可以用线性规划的方法理解:

假设有 k 种可能的路径 p1,,pk,其对应的流量为 f1,,fk,假设有 m 条边 e1,,em,由每条边流量的限制:

ej,i,ejpifkC(ej)maxi=1kfi

转化为对偶形式,假设第 j 个不等式取 λj 倍,则:

pi,j,ejpiλj1mini=1mC(ej)λj

这其实就对应了最小割,表示任意一条路径都不能通过。

容易发现这样的线性规划 k 比较大,参数量多,求解困难,但是相对容易理解。我们还可以将流过边的流量设为参数,发现源点流出的、汇点汇入的时网络的总流量,并且满足节点没有流量残余,即最大流:

max v=e out of sf(e)=e into tf(e)s.t.e into vf(e)e out of vf(e)=0,vVs,tf(e)ce,eEf(e)0,eE

可得它的对偶问题为:

min eEceyes.t. uiuj+ye0,e=(i,j)Eus+ut=1ye0

对应了最小割。

E-K 算法

效率低的原因,是因为一次只找一条增广路。

Dinic 算法

核心思想在于每次找多条增广路。

BFS 算法求出有余量的,构建分层图-

遍历分层图上的后继节点,只要当前可用流量能够承受,就继续分叉,这样可以一次找多条增广路。

平面图转对偶图

如果图 G 是一张平面图,还可以通过转为对偶图的方法,用最短路求最小割。

image-20231104131220503

如图,如果源点是橙色的点,汇点是绿色的点,建立对偶图,在源-汇连线左手侧的边界边连到最短路的超级源点,右手侧的边界边连到最短路的超级汇点,最短路即对应最小割。

发现这样平面图的节点数和边数都是 m 量级,最短路时间复杂度 O(mlogm),而原图网络流用 Dinic 算法复杂度 O(mn2),可见优化程度比较大。

最小费用最大流

每条边新增单位流量的费用 w(e),满足斜对称性,即 e 反向,费用取相反数,要求在最大化最大流的情况下,最小化:

ef(e)×w(e)

思路是每次寻找单位流量费用最小的增广路:w 的最短路。

习题

2.1

image-20231010192103651

法一

利用不等式:

Cn1+n212(Cn12+Cn22)=(n11)(n21)0Cn1+n212Cn12+Cn22

因此,若 k 个联通支的节点数分别为 nini=n,则:

Cni2Cnik2=Cnk2=12(nk+1)(nk)

法二

数学归纳法。

再证明构造上届能取到……

2.2

image-20231010193013839

假设 GG 都不是连通图,G 分为 V1,V2 两个点集,V1V2=V,而且 V1,V2 间没有连边,G 分为 V1V2,假设 V1V1,则点集 V1V1,V2V2 既在 G 中无连边,又在 G 中无连边,矛盾。

2.3

image-20231010193349568

若存在两个不相交的道路 l1,l2,则必定存在 ul1,vl2,且 u,v 间存在一条道路与 l1,l2 均不相交(否则违反了连通的条件)

image-20231010193550312

a+b=c+d=lm,a+e+dlm,c+e+blme0

显然矛盾。

2.4

image-20231010193652979

带弦回路的引理:如果简单图 G 的一条极长初级道路的一个端点的度数 3,则 G 存在带弦回路。

假设 d(a1)3a1ai,aj 相连,且 i<j,则 a1a2aja1 为一个回路,(a1,ai) 为它的弦。

证明:数学归纳法。当 n=4 时,命题显然成立;假设命题对于 n=k 时成立,考虑n=k+1,即考虑对于顶点数是k+1,边数大于等于2(k+1)3的图G。设ΓG的一条极长初级道路,vΓ的一个端点, 如果d(v)3,则引理可得G有带弦回路,否则(即d(v)<3Gv是有k个顶点, 边数>=2(k+1)32=2k3的图,根据归纳假设,Gv含有带弦回路,那么G也必含有带弦回路。

tips: 和边数相关的问题,常常使用数学归纳法。

2.5

image-20231010194815313

极端情况,当 n 为偶数时,分为两个部分,节点数都为 n/2,然后互相连边。

(d(a)1)+(d(b)1)n2d(a)+d(b)n

对于每一条边都如此求和,每个顶点的度数被求和的次数恰好为每个顶点的度数,因此:

d2(vi)mn

由柯西不等式:

mnd2(vi)mn2(1)(d2(vi))(d(vi))2=4m2

因此,mn24.

2.7

image-20231010200513155

数学归纳法。

2.17

image-20231010201025227

考虑 H 道路组成了子图 G,则 GS 的连通支数 t|S|+1 再考虑到是导出子图,因此 tt

2.21

image-20231010201713716

todo

2.25

image-20231010203552388

这个好做……

2.29

image-20231010204040866

运用缩点的思想

数学归纳法?

6.21

image-20231010213019069

同构图判定:

m+m=n(n1)2m=n(n1)4

这里就能看出 n,(n1) 其中一个必定是 4 的倍数。

顶点度数,0,重排序列相同:

3,3,3,31,1,2,2+2,2,1,14,4,4,4,42,2,2,2,2+2,2,2,2,21,1,2,3,3+3,3,2,1,1

image-20231010213433119

如果有向,则顶点度数序列变为:

2,2,2;2,2,21,1,1;1,1,11,0,2;0,1,2

image-20231010213705428

这时,对 n 没什么限制。

6.40

image-20231010213933442

06-12

一棵树有 n1 个节点的度数为 1n2 个节点的度数为 2,……,nk1 个节点的度数为 k1,节点最大的度为 k,问这样的节点一共多少个:

i=1kini=2(i=1knk1)

因此,

i=1k1(i2)ni+2=2nkknk

因此:

nk=2+i=1k1(i2)ni2k

n2 无关。 原因是这样相当于增加链的长度,无影响。

10-七

G 是一个连通图,其中 TG 的一棵生成树,设 eGT 中的任意有一条边,证明:T+e 中有且仅有一个圈(初级回路)。

e=(u,v),