图
无序偶我们用的是花括号(就是集合),有序偶用的小括号,序偶默认都是有序偶
图的分类
无向图
- simple graph 简单图:不同结点才有边,且只能有一条边
- multigraph 多图:不同结点之间可以有多条边,被称为平行边
- pseudograph 伪图:结点自己可以有边(loop)
有向图允许自己loop自己
- directed graph :不允许有平行边,注意有向边平行得方向一致
- directed multigraph :允许有平行边
总结,只有简单图和有向图两点之间最多只能一条边,只有前两个无向图不能有loop
还有其它的
- subgraph 子图
- spanning subgraph 生成子图:结点不变,边是子集
- 简单图的 union :边和点各自并
图的术语
无向图
- adjacent/neighbor 点与点相邻,两个结点相邻表示他们之间有条边
- incident with 点与边关联,边与其两端结点有关联,端点又叫 \(endpoint\)
- degree 度数,一个结点的度数即其有的边
- \(deg_{isolated\;vertex}=0\),孤立点
- \(deg_{pendant\;vertex}=1\),悬挂点
无向图有个握手定理,就是所有顶点度数和等于边数的两倍
有向图
adjacent :要求是起点与终点相邻,终点被起点相邻,有方向
度也分 in-degree 入度 \(deg^-v\) 和 out-degree 出度 \(deg^+v\)
有向图也有个握手定理,就是所有顶点的两个度各自的和相等,且等于边数
特殊的图
完全图:无向简单图,已经无法增加任何边了,用 \(K_n\) 表示
轮子,每个结点都是2度
轮图是圆图基础上,有且只有一个顶点与cycle的所有顶点相连
\(n\) 维立方体,我们知道二维立方体就行了,超立方体没学过
两部图,结点分为两部分,所有边都是跨越这两个部分的,同一部分的顶点之间不存在边
\(C_6\) 两个三角形顶点分别为一组即可
只要图里面含有奇数长度的回路,肯定不是两部图
完全的两部图叫完全两部图,记为 \(K_{m,n}\),\(m\) 和 \(n\) 为两部分各自的度
显然左边是 \(W_4\) ,右边是 \(K_6\)
图的表示与同构(isomorphism)
adjacency matrix 邻接矩阵,简单图必是 0-1对称矩阵,对角全0,度数=行/列之和
多图和伪图就不是0-1矩阵了,数字表示相连的边数
incidence matrix 关联矩阵,从 点x点 的方阵变成 点x边 的矩阵
一个边只 incidence with 一个点,或者说列向量只有一个1,那就是一个 loop
一列只有两个1,平行边对应相同的列向量
两个图,结点一样多,边一样多,如果能找出一个结点对到结点对的双射,且任意边映射过去还是一样的,那这两个图就是同构的
这个 bijection 双射也叫同构映射 isomorphism
连通性概念
无向图
不简单就是有重复点的,多提一嘴,无向图用 \(f(e_1)=\{x_0,x_1\}\) 来描述边
无向图里面,任意两个结点都有道路,这个图就是连通的 (connected)
定理:连通无向图的任意两个顶点必定存在简单道路
有向图用 \(f(e_1)=(x_0,x_1)\) 来描述边,有向图的 circuit 就是起点与终点一致
在连通的有向图里,任意两顶点都有来回的两条道路就是强连通,否则就是弱连通
注意这两个概念的前提是连通图,有孤立点的图谈不上强弱连通
不连通 cut
不连通的图可以拆分为多个连通的子图,这些子图叫做 connected components
一个连通图里,那些只要被拿走就会产生 connected components 的顶点叫 cut vertices,边则叫做 cut edge / bridge,他们的消失导致连通性下降
连通性计算
求两个顶点之间长度为 \(r\) 的道路的数量,算矩阵 \(A^r\)
无向图的连通性,只需要算 \(\Sigma A^i\) ,看对角线之外是否全部非0,有一个为0就说明不连通
有向图不用管
欧拉图
欧拉回路是一个包含图中所有边的简单回路,欧拉道路是一个包含所有边的简单道路
欧拉图是存在欧拉回路的图
能一笔画回到起点的就是欧拉图
欧拉图的充分必要条件:是连通图,且每个顶点都是偶数度
只有欧拉道路、没有欧拉回路的图的充要条件:奇数度的结点有且只有两个
哈密尔顿
哈密尔顿没有充要条件
哈密尔顿道路是一个访问了所有结点且均只访问一遍的道路,同理有哈密尔顿回路
一个存在 Hamilton 回路的连通图叫 Hamilton 图
n>3 时,\(K_n\) 必是哈密尔顿图
Hamilton 图的充分条件:
- 一个顶点数 \(n\ge3\) 简单连通图,每一个顶点的度 \(\ge n/2\),则这个图是哈密尔顿图
- 一个有 \(n\) 个结点的简单图,如果任意一对节点的度数之和 \(\ge n\),则这个图是哈密尔顿图
最短路径问题
加权图 (weighted graph) 每条边都有个权重,道路长度为权重和
dijkstra算法
- 首先将起点距离设置为0,其它为无穷,表示这些点在考虑范围之外/没有与起点相连,将起点加入解集
- 每轮先更新各点到起点的最短距离距离 \(L_k(a,v)\),找出距离最小的点,需要判断原最短路和找出的点的距离哪个更小,取小值作为新最短路
- 迭代到包含终点为止
平面图
如果一个图画在平面上,有办法不出现交叉的边,那就是是 planar graph,这么画的图叫原来的图的 planar representation,平面表示
前两个是,\(Q\) 都是平面图,只需要放大其中一面,其它塞进去就行
33两部图不是
一个平面表示可以分为多个区域 region ,分为有界无界两种,无界就是外部包含无穷远的区域
欧拉公式
一个连通平面简单图,有 \(e\) 条边,\(v\) 个顶点,\(r\) 个 region,那么有欧拉公式: \(v-e+r=2\)
不是平面图就没有区域概念,更没有欧拉公式
推论 corollary
- 一个连通平面简单图,有 \(e\) 条边,\(v\ge 3\) 个顶点,则有 \(e\le3v-6\)
- 一个连通平面简单图,有 \(e\) 条边,\(v\ge 3\) 个顶点,没有长度为3的回路,则则有 \(e\le2v-4\)
区域的度即区域边界有几条边,所有区域度数之和等于 \(2e\)
有界区域需要至少4条边才能维持
图的着色
用最少的颜色,让任意相邻的区域颜色不同
可以转化为图的问题,每个区域看成点,相邻的区域画个边,变成了点的着色
这个新的图叫原来的平面图的对偶图(dual graph),最少的顶点颜色数量叫这个图的 chromatic number
四色理论:平面图的 chromatic number 不大于4
\(K_n\) 显然需要 \(n\) ,\(K_{m,n}\) 一定是 2,\(C_n\) 的 \(n\) 偶数时只需要2,奇数需要3