学习笔记 - 离散数学 - 图论(持续更新)

说不准哪天写烦了就会把之前的笔记删了重构一遍(

图论

基本概念

有向图及无向图

有向图是一对有序偶 \(D=<V,A>\)

  • 顶点 + 弧
  • \(A\)\(V\) 中的一个二元关系

无向图是一对有序偶 \(G=<V,E>\)

  • 顶点 + 边
  • \(E\)\(V\) 中元素的无序偶组成的多重集合

带权图

图上的边可以附带边权

通常解释为路径长度,运费,管道流量等

关联、相邻、邻接的概念

给定有向图 \(D=<V,A>\),若 \(a=<u,v>\in A\)

  • \(u\) 邻接到 \(v\)\(u\)\(v\) 邻接)
  • \(a\) 关联于 \(u\)\(v\)

若两个弧关联于同一个顶点,则称这两个弧是相邻的

给定无向图 \(G=<V,E>\),若 \(e=<u,v>\in E\)

  • \(u\)\(v\) 邻接 (无 邻接到 的概念)
  • \(e\) 关联与 \(u\)\(v\)

总结: 点与边关联,点与点邻接,边与边相邻

简单图

自环:两个端点相同的弧或边

平行弧:有向图中,始点和终点相同的两条弧

平行边:无向图中,两个顶点之间的两条边

多重弧图:有平行弧的有向图

多重边图:有平行边的图

多重图:多重弧图 + 多重边图

简单图:无资环和平行弧(或平行边)的图

顶点的次数 / 度数

有向图分入度 \(id(u)\)出度 \(od(u)\)

无向图只有 \(d(u) = id(u) + od(u)\)

\(n\) 阶图:有 \(n\) 个顶点的图

\((n, m)\) 图:有 \(m\) 条边或弧的 \(n\) 阶图

  • 孤立点:度数为 \(0\) 的点
  • 悬挂点:度数为 \(1\) 的点
  • 悬挂边:与悬挂点关联的边
  • 零图:每个顶点都是孤立点的图
  • 平凡图:1 阶零图

握手定理

有向图中:\(\sum\limits_{i=1}^nod(u_i)=\sum\limits_{i=1}^nid(u_i)=m\)

对于 \((n, m)\) 图: \(\sum\limits_{i=1}^nd(u_i)=2m\)

奇顶点:度数为奇数的顶点

偶顶点:度数为偶数的顶点

  • 在任何图中,奇顶点的个数必为偶数

正则图

若无向图 \(G\) 的所有顶点的度数都是 \(r\) ,则称 \(G\)\(r\) 次正则图

完全图

完全图:任何两个顶点之间都有一条边简单无向图,将 \(n\) 阶完全图记为 \(K_n\)

\(K_n\) 也是 \(n - 1\) 次正则图,边数为 \(\frac{n(n-1)}{2}\)

有向完全图:任意两顶点之间都恰有一条弧的简单有向图,也称为 竞赛图 。(可以理解为带方向的完全图)

图的同构

存在双射\(\tau:V_1\to V_2\) 使得 \((u,v)\in E_1\) 当且仅当 \((\tau(u), \tau(v))\in E_2\),并且重数相同,则 \(G_1, G_2\) 同构。有向图同理

同构图的性质:

  • 顶点数、边数相同
  • 对任意的自然数 \(k\) ,度数为 \(k\) 的顶点一样多
  • 自环数量相同

子图

\(G_1=<V_1,E_1>\)\(G_2=<V_2,E_2>\) 是两个图,若 \(V_1\subseteq V_2\)\(E_1\subseteq E_2\) 则称 \(G_1\)\(G_2\) 的子图,记为 \(G_1\subseteq G_2\)

\(G_1\subseteq G_2\)\(G_1 \neq G_2\) ,则 \(G_1\)\(G_2\) 的真子图

补图

\(E_2 = E - E_1\)

\(V_2=\{v|(v\in V\land\exists e(e\in E_2\land e与 v关联))\lor(v\in V-V_1\land v是G中的孤立点)\}\)

  • 边只能在图和补图中出现一次
  • 点可以出现多次

导出子图和生成子图

\(G_1=<V_1,E_1>\)\(G=<V,E>\) 的子图

导出子图:\(E_1=\{e|e\in E\land e的端点在V_1中\}\)

生成子图:\(V_1=V\)

去点运算:去掉顶点以及关联的边 \(G-v\)

去边运算:仅去掉边,\(G-e\)

加边运算:\(G\)\(u\)\(v\) 不相邻,增加边 \((u,v)\)\(G+(u,v)\)

图的并集:\(V=V_1\cup V_2,E=E_1\cup E_2\),则 \(G=G_1\cup G_2\)

连通性 - 通路

通路:有向图中\(D=<V,A>\) 中,首尾相接的弧的序列 \(P=(a_1,a_2,\cdots,a_t)\) 称为通路,且对于每个 \(i\)\(a_i\) 的终点是 \(a_{i+1}\) 的始点。通路中出现的弧的数目 \(t\) 为该通路的长度,记为 \(|P|=t\)

简单通路:不出现相同弧的通路

基本通路:不出现相同顶点的通路

  • 基本通路一定是简单通路,简单通路不一定是基本通路
  • 基本通路的长度不超过 \(n - 1\)

连通性 - 回路

回路:始点和终点相同的通路

简单回路:不出现相同弧的回路

基本回路:不出现相同顶点的回路

无回路图:没有回路的有向图

  • 基本回路的长度不超过 \(n\)

连通性 - 可到达

可到达:若存在 \(u\)\(v\) 的通路,则称 \(u\) 可到达 \(v\)

  • 若从 \(u\) 可以到达 \(v\), 则存在从 \(u\)\(v\) 的基本通路,且最短通路必是基本通路(回路同理)

半通路:每条弧都与后一条弧相邻的弧的序列 \((a_1, a_2, \cdots, a_t)\) 称为半通路。

  • 通路是每条弧都从前向后的半通路

连接到:若存在 \(u\)\(v\) 的半通路,则称 \(u\) 连接到 \(v\)

连通性 - 强连通,单向连通,弱连通

强连通 / 3 度连通:任意两点互相可达

单向连通 / 2 度连通:任意两点,至少有一个方向可达

弱连通 / 1 度连通:任意两点互相连接

不连通 / 0 度连通:不满足弱连通,则称为不连通

完备路

完备通路:通过有向图中所有顶点的通路

完备回路:通过有向图中所有顶点的回路

完备半通路:通过有向图中所有顶点的半通路

  • 强连通 \(\Leftrightarrow\) 有完备回路
  • 单向连通 \(\Leftrightarrow\) 有完备通路
  • 半连通 \(\Leftrightarrow\) 有完备半通路

链:无向图中,每条边都与随后的那条边相邻的序列 \((e_1,e_2, \cdots,e_t)\),可记为顶点序列,长度 \(|P|=t\)

简单链:各边互不相同

基本链:各顶点互不相同

闭合链: \(u_1 = u_{t+1}\)

\(u_1,\cdots,u_t\) 各不相同,且各边互不相同的闭合链

连通分支

连通:若顶点 \(u\)\(v\) 之间存在链,则称 \(u\)\(v\) 是连通的

连通分支:有连通关系构成的等价类所导出的子图

  • \(G\) 是连通的当且仅当 \(G\) 中只有一个连通分支

割点:\(G\) 连通,\(G-v\) 不连通,则 \(v\) 是割点

割边:\(G\) 连通,\(G-e\) 不连通,则 \(e\) 是割边 / 桥

顶点基和强分图

可到达:对于有向图 \(D=<V,A>, B\subseteq V\)\(v\in V\),若从 \(B\) 中的某个顶点可以到达 \(v\) ,则称 \(B\) 可以到达 \(v\)

顶点基:若 \(B\) 可到达 \(V\) 的所有顶点,且任何 \(B\) 的真子集都无法到达 \(V\) 中的每个顶点, 则称 \(B\)\(D\) 的一个顶点基

强分图:\(D\) 是有向图, \(D'\)\(D\) 的强连通子图,并且对于 \(D\) 的任意强连通子图 \(D''\),若 \(D' \subseteq D''\) ,则 \(D'=D''\)。称 \(D'\)\(D\) 的强连通分图, 或者强分图。

(单向分图,弱分图同理)

  • 每个顶点在唯一的强分图中,每条弧至多在一个强分图中
  • 无回路有向图有唯一的顶点基,由所有引入次数为 0 的点组成
  • 每个顶点基包含同样数目的顶点

压缩

每个强分图可以用一个点替代(缩点)

  • \(D\) 的每一个顶点基都可以由可以由 \(D^*\) 的顶点基 \(B^*\) 得到(在 \(B^*\) 的每个元素中取出一个顶点)

通路问题

记通路的长度为 \(I(P)\) ,两点之间的最短通路记为最短路 \(d(u,v)\)。最短通路可以用 Dijkstra 来求

工序图

  • 简单带权有向图

  • 没有回路

  • 有唯一的引入次数为 0 的点,称其为发点

  • 有唯一的引出次数为 0 的点,称其为收点

  • 每个顶点都在某条从发点到收点的通路上

  • 每条弧的权都是非负实数

关键工序和关键事件

关键工序对应有向图的边

关键事件对应有向图的点

关键事件和关键工序的延迟都会导致整个工程的延误

关键时间和关键工序都位于关键通路中

关键通路

最早完成时间 \(TE\) :从发点 \(u_1\)\(u_j\) 的最长通路的长度记为 \(u_j\) 的最早完成时间 (拓扑排序)

最迟完成时间 \(TL\) :在保证 \(u_n\) 的最早完成时间不变的前提下,到达事件 \(u_j\) 的最迟时间 (反着来一次拓扑排序)

缓冲时间 \(TS\)\(TL-TE\)

  • 关键通路上的所有事件的缓冲时间都是 0

图的矩阵表示

邻接矩阵

邻接矩阵就是关键矩阵 \(M = (m_{ij})\)

\[\begin{equation}m_{ij}=\begin{cases}1&当<u_i,u_j>\space\in\space A时\\0&当<u_i,u_j> \space\not\in\space A时\end{cases}\end{equation} \]

邻接矩阵也可以表示可达性:若在邻接矩阵上, \(m_{ij}=1\) ,则表示从 \(u_i\)\(u_j\) 存在一条长度为 \(1\) 的通路

求到达某个点的长度为 k 的路径数量

考虑动态规划

长度为 \(k\) 的路径,可以由长度为 \(k - 1\) 的路径,加上长度为 \(1\) 的路径组合而来

不妨设 dp[u][v][k] 表示 \(<u, v>\) 之间长度为 \(n\) 的路径数量,则可以通过枚举 \(m_{ij}\) 进行转移

for(int t = 1;t <= n; ++t)
    for(int u = 1;u <= n; ++u)
        for(int v = 1;v <= n; ++v)
            dp[u][v][k] += dp[u][t][k - 1] * m[i][j];

同时,我们也知道 \(dp[u][v][1] = m[u][v]\) ,而这三重循环恰好是进行了一次矩阵乘法

即:若记 \(dp[][][k] = dp^k\),则 \(dp^k=M^k\)

有向图的可达性矩阵

可达性矩阵的元素只包含 \(0, 1\)。设为 \(R\),通过枚举通路的长度,则有

\[R = B(M^0+M^1+M^2+\cdots+M^{n-1})=B((I+M)^{n-1}) \]

其中 \(B(M) = (bool(m_{ij}))\),等号成立是因为只取结果只取 \(0, 1\) 与系数无关

强分图

\(R\) 为可达性矩阵,记 \(R^2=(s_{ij})\)\(s_{ii}\) 可以表示图中可以到达 \(i\) 的顶点数量

关联矩阵

有向图的关联矩阵:\(D=<V,A>\)\(n\) 个点 \(m\) 条边。则 \(B=(b_{ij})_{n\times m}\)

\[\begin{equation}b_{ij}=\begin{cases}1&若u_i\space 是a_j的起点\\-1&若u_i\space 是a_j的终点\\0&若u_i不是弧a_j的端点\end{cases}\end{equation} \]

无向图的关联矩阵:\(b_{ij}=e_i与u_i的关联次数\)\(b_{ij}\in\{0,1,2\}\)

  • 有向图同构 \(\Leftrightarrow\) 适当排列顶点和弧的顺序,可以得到同样的邻接矩阵和关联矩阵

连通且无圈的无向图

树的一般定义

\(T\)\((n,m)\) 无向图,则以下说法等价

  • \(T\) 连通且无圈
  • \(T\) 无自环,并且每对顶点之间有唯一基本链
  • \(T\) 连通,在 \(T\) 中加一边仅有一个圈
  • \(T\) 连通,去掉任何一边就不连通了
  • \(T\) 连通,并且 \(m=n-1\)
  • \(T\) 无圈,并且 \(m=n-1\)

树叶:次数为 1 的顶点

分支顶点:次数大于 1 的顶点

非平凡树中至少有两个树叶

有向树

将一个树的边加上任意的方向,就构成了有向树

有向树是弱连通的无回路有向图

弱连通的无回路有向图不一定是树

根树

有向树 \(T\) 中,有一个顶点引入次数为 0, 其余顶点的引入次数为 1,则称 \(T\)根树

根树中,引入次数为 0 的点为树根,引出次数为 0 的点为树叶

若指定了 顶点或弧的次序的根树也称为有序树

二元树

\(m\) 元树:每个顶点的引出次数 小于等于 \(m\)

完全 \(m\) 元树:每个顶点的引出次数等于 \(m\)\(0\)

位置 \(m\) 元树:每个顶点都规定了各儿子的顺序的 \(m\) 元树

一个有序树可以转变为位置二元树:

  • 左儿子为长子
  • 右儿子为兄弟

生成树

若无向图 \(G\) 的生成子图 \(T\) 是树,则称 \(T\)\(G\) 的生成树

所有生成树中权值最小的称为最小生成树

(Kruskal算法)

割集

(类比最小割)

\(G=<V,E>, E'\subseteq E\)\(G-E'\) 不连通,且对任意的 \(E''\subset E\)\(G-E''\) 连通。则 \(E'\) 是割集

基本割集:只包含一个树枝的割集

基本圈:只有一条弦,剩下的全为树边的圈

性质

  • 每个圈都包含弦
  • 每个割集都和任何生成树有至少一条公共边
  • 任何圈和任何割集都有偶数条公共边

穿程问题

欧拉图

欧拉圈:穿过无向图中每条边的简单闭合链位欧拉圈

欧拉图:有欧拉圈的图位欧拉图

  • 欧拉圈中边不重复,但点可能重复,因此欧拉圈不一定是圈

欧拉链:穿过无向图中每条边的简单非闭合链称为欧拉链

  • 欧拉链一般不是基本链

欧拉回路:穿过有向图中每条弧的简单回路称为欧拉回路

欧拉图:有欧拉回路的图称为欧拉图

欧拉通路:穿过有向图中每条胡的非闭合简单通路位欧拉通路

性质

若无向图 \(G\) 中每个顶点的次数大于 1,则在 \(G\) 中存在圈

连通无向图 \(G\) 是欧拉图当且仅当 \(G\) 的每个顶点都是偶顶点

连通无向图 \(G\) 中存在连接顶点 \(u,v\) 的欧拉链当且仅当只有 \(u\)\(v\) 是奇顶点

强连通图有向图 \(D\) 是欧拉图当且仅当 \(D\) 中的每个顶点的引入次数和引出次数相同

单向连通有向图 \(D\) 有从顶点 \(u\)\(v\) 的欧拉通路当且仅当 \(u\) 的引出次数比引入次数大 1, \(v\) 的引入次数比引出次数大 1, \(D\) 中其他顶带你引入次数和引出次数相同

哈密顿图

哈密顿圈:穿过无向图 \(G\) 中每个点一次且仅一次的圈位哈密顿圈

哈密顿回路:穿过有向图 \(G\) 中每个顶点的基本回路为哈密顿回路

哈密顿图:有 哈密顿圈 或 哈密顿回路 的图称为哈密顿图

哈密顿链:穿过无向图 \(G\) 中每个顶点的基本链为哈密顿链

哈密顿通路:穿过有向图 \(G\) 中每个顶点的基本通路为哈密顿通路

性质

有哈密顿图的必要条件: \(p(G-U)\leq|U|\)

有哈密顿链的必要条件:\(p(G-U)\leq|U|+1\)

有哈密顿链的充分条件:不相邻顶点的次数之和 \(\geq n - 1\)

有哈密顿图的充分条件:不相邻顶点的次数之和 \(\geq n\)

有向完全图中必存在哈密顿通路

强连通的有向完全图中必存在哈密顿回路

二分图匹配问题

基本概念

二分图:设 \(G=<V,E>\) 是无向图,若可以将 \(V\) 分成两个非空子集 \(X\)\(Y\) ,并且使得同一子集中的任何两个顶点都互不邻接,则称 \(G\) 为二分图。

  • 只有一个顶点的图不是二分图

  • 若非平凡图 \(G\) 的每个连通分量都是二分图或平凡图,则 \(G\) 是二分图

  • 互补顶点子集分别有 \(p\) 个顶点和 \(q\) 个顶点的完全二分图记为 \(K_{p,q}\)

匹配:设 \(G=<V,E>\) 是二分图, \(M\subseteq E\) ,若 \(M\) 中任意两条边不相邻,则称 \(M\)\(G\) 的匹配

性质

若无向图 \(G\) 中有长度为奇数的闭合链,则在 \(G\) 中有长度为奇数的圈

非平凡无向图 \(G\) 是二分图当且仅当 \(G\) 中的每个圈的长度都是偶数

二分图最大匹配

最大匹配:边数最多的匹配

交错链:设 \(M\) 是二分图 \(G\) 的匹配, \(P\)\(G\) 中的基本链,若 \(P\) 中任何相邻的两条边中恰有一条属于 \(M\) ,则称 \(P\) 为关于 \(M\) 的交错链

饱和顶点与非饱和顶点:设 \(M\) 是二分图 \(G\) 的匹配,称与 \(M\) 中的边关联的顶点为 \(M\) 的饱和顶点,称不与 \(M\) 中任何边关联的顶点为 \(M\) 的非饱和顶点。

可扩充链:两个端点都是匹配 \(M\) 的非饱和顶点的交错链

性质

二分图 \(G=<V,E>\) 的匹配 \(M\) 是最大匹配当且仅当 \(G\) 中不存在关于 \(M\) 的可扩充链

从 X 到 Y 的匹配

\(X\)\(Y\) 是二分图 \(G\) 的互补顶点子集, \(M\)\(G\) 的匹配。若 \(X\) 中每个顶点都是 \(M\) 的饱和顶点,即是 \(M\) 中某条边的端点,则称 \(M\) 为从 \(X\)\(Y\) 的匹配。

posted @ 2020-11-19 14:09  Withinlover  阅读(1765)  评论(0编辑  收藏  举报