图论基础
图的基本概念、度与握手定理、路径与回路、连通性、欧拉图与哈密顿图、二部图、树与生成树。
1. 图的基本概念
1.1 图的定义
图 由顶点集 和边集 组成。
- 无向图: 中元素为无序对
- 有向图: 中元素为有序对
- 多重图:允许平行边(同一对顶点间有多条边)
- 简单图:无平行边、无自环
1.2 特殊图
- 完全图 : 个顶点,每对顶点间有一条边,
- 零图:无边图
- 平凡图:只有一个顶点的图
- 正则图:每个顶点的度都相同的图。-正则图:每个顶点度为
1.3 子图
- 子图:,,
- 生成子图: 的子图
- 导出子图:由顶点子集 导出,包含 之间所有边
2. 度与握手定理
2.1 度
顶点 的度 是与 关联的边数(自环算2度)。
- 孤立点:
- 悬挂点:
2.2 握手定理
定理:在任何无向图中,所有顶点的度数之和等于边数的两倍:
证明:每条边贡献2个度(连接两个端点)。
推论:任何图中度数为奇数的顶点个数必为偶数。
有向图版本:
其中 为出度, 为入度。
例:一个图有5个顶点,度数分别为3, 3, 4, 4, 4,求边数。
,。
3. 路径与回路
3.1 基本概念
- 通路(walk):顶点与边交替的序列
- 迹(trail):边不重复的通路
- 路径(path):顶点不重复的通路(除起终点外)
- 回路(circuit):起终点相同的迹
- 圈(cycle):起终点相同且其余顶点不重复的通路,长度
3.2 路径长度
- 无权图中路径长度为边数
- 带权图中路径长度为边权之和
4. 连通性
4.1 无向图的连通性
- 连通:顶点 和 之间存在路径
- 连通图:任意两个顶点都连通
- 连通分量:极大连通子图
4.2 有向图的连通性
- 强连通:任意两个顶点互相可达
- 弱连通:忽略方向后连通
- 单向连通:任意两个顶点至少一个方向可达
4.3 连通度
- 点连通度 :使 不连通需删除的最少顶点数
- 边连通度 :使 不连通需删除的最少边数
Whitney 不等式:
其中 为最小度。
4.4 割点与桥
- 割点:删除该顶点后连通分量数增加
- 桥:删除该边后连通分量数增加
5. 欧拉图与哈密顿图
5.1 欧拉图
欧拉回路:经过每条边恰好一次的回路。
欧拉通路:经过每条边恰好一次的通路。
判定定理:
- 无向连通图有欧拉回路 每个顶点的度数为偶数
- 无向连通图有欧拉通路 恰有0个或2个奇度顶点
- 0个奇度顶点:欧拉回路
- 2个奇度顶点:欧拉通路从一个奇度顶点到另一个
Fleury 算法(求欧拉回路):
- 从任意顶点出发
- 每步选择一条未走过的边,除非该边是当前顶点唯一的桥
- 直到所有边走完
例:判断 是否有欧拉回路。
中每个顶点度为4(偶数),连通,故有欧拉回路。
5.2 哈密顿图
哈密顿回路:经过每个顶点恰好一次的回路。
哈密顿路径:经过每个顶点恰好一次的路径。
判定:哈密顿图的判定是 NP 完全问题,没有简单的充要条件。
充分条件:
Dirac 定理:若 是 阶简单图()且 ,则 是哈密顿图。
Ore 定理:若 是 阶简单图()且对任意不相邻顶点 有 ,则 是哈密顿图。
必要条件:若 是哈密顿图,则对 的任意非空真子集 , 的连通分量数 。
例:判断 Petersen 图是否为哈密顿图。
Petersen 图有10个顶点,每个顶点度为3。取 为中间5个顶点,… 不,实际上 ,不违反必要条件。但 Petersen 图确实不是哈密顿图(需更细致的分析)。
6. 二部图
6.1 定义
若 可划分为 和 (),使得每条边连接 和 中的顶点,则 为二部图(偶图),记作 。
完全二部图 :,, 中每个顶点与 中每个顶点相连。
6.2 判定
定理:无向图是二部图 图中无奇圈。
证明: :若 是二部图且有奇圈,则圈上顶点交替属于 ,奇圈导致首尾顶点同属一个集合,矛盾。 :对每个连通分量,从任一顶点出发 BFS,交替分配到 。无奇圈保证不矛盾。
6.3 匹配
匹配:边集 , 中任意两条边不共享端点。
最大匹配:边数最多的匹配。
完美匹配:覆盖所有顶点的匹配。
Hall 婚姻定理:二部图 中存在 到 的完美匹配 对任意 ,。
其中 为 的邻域。
7. 树与生成树
7.1 树的定义
树是连通无圈图。
等价定义(对 阶图 ):
- 连通且无圈
- 连通且
- 无圈且
- 中任意两个顶点间有唯一路径
- 连通且删除任一边后不连通
7.2 树的性质
- 树中至少有两个叶子(度为1的顶点)( 时)
- 树中任意两个顶点间有唯一路径
- 树添加任一边产生唯一圈
- 树删除任一边产生两个连通分量
7.3 生成树
生成树:连通图 的生成子图且为树。
存在性:连通图必有生成树。
生成树个数: 个顶点的完全图 的生成树个数为 (Cayley 公式)。
7.4 最小生成树
Kruskal 算法:
- 将边按权从小到大排序
- 依次取边,若不形成圈则加入
- 直到 条边
Prim 算法:
- 从任一顶点开始
- 每步选择连接已选顶点集与未选顶点集的最小权边
- 直到所有顶点入选
两者时间复杂度分别为 和 。