图的分类大全
一、按边的方向分
1. 无向图(Undirected Graph)
-
边没有方向,
(u, v)和(v, u)是同一条边 -
例:社交网络中的"好友关系"
A --- B --- C
| |
D --------------- E
2. 有向图(Directed Graph / Digraph)
-
边有方向,
u → v和v → u是不同的边 -
例:网页链接、任务依赖
A → B → C
↓ ↑
D ------------------→
3. 混合图(Mixed Graph)
- 同时包含有向边和无向边(较少见)
二、按边的权重分
1. 无权图(Unweighted Graph)
- 边只表示连接关系,没有权重
2. 带权图(Weighted Graph)
-
每条边有一个权值(距离、费用、时间等)
A ---5--- B ---3--- C
| |
8 2
| |
D ------------4------------ E
三、按连通性分
1. 连通图(Connected Graph)【无向图】
-
任意两个节点之间都存在路径
-
整张图是"一整块"
A --- B --- C
|
D
✅ 任意两点可达
2. 非连通图(Disconnected Graph)
-
存在至少两个节点之间没有路径
-
图由多个连通分量组成
A --- B C --- D
(两个独立部分)
3. 强连通图(Strongly Connected Graph)【有向图】
-
任意两点 u、v,既能从 u 到达 v,也能从 v 到达 u
A → B
↑ ↓
C ← D
✅ 形成环,任意两点互达
4. 弱连通图(Weakly Connected Graph)【有向图】
-
忽略边的方向后,变成连通图
-
但有方向时,不能保证互达
A → B → C
(忽略方向后连通,但 C 无法到达 A)
5. 连通分量 / 强连通分量(SCC)
| 概念 | 适用 | 说明 |
|---|---|---|
| 连通分量 | 无向图 | 最大连通子图 |
| 强连通分量(SCC) | 有向图 | 内部任意两点互达的最大子图 |
四、按结构特征分
1. 完全图(Complete Graph)
-
任意两个节点之间都有边
-
n 个节点有
n(n-1)/2条边(无向)A /|\ B---+---C \|/ DK₄:4个节点,6条边
2. 稀疏图 vs 稠密图
| 类型 | 边数 | 常用存储 |
|---|---|---|
| 稀疏图 | 远小于 V² | 邻接表 |
| 稠密图 | 接近 V² | 邻接矩阵 |
3. 二部图 / 二分图(Bipartite Graph)
-
节点可分为两个集合,所有边只在两集合之间
-
例:用户与商品的购买关系
用户集合 商品集合
U1 ------------ P1
U1 ------------ P2
U2 ------------ P2
U3 ------------ P3
4. 树(Tree)
- 连通 + 无环的无向图
- n 个节点,恰好 n-1 条边
5. 森林(Forest)
- 多棵树的集合(无环无向图)
6. 有向无环图(DAG)
-
有向 + 无环
-
拓扑排序的基础,用于任务调度、依赖管理
A → B → D
↓ ↑
C ---------------------
7. 平面图(Planar Graph)
- 可以画在平面上且边不交叉的图
- 例:地图的行政区域划分
五、按特殊用途分
1. 欧拉图(Eulerian Graph)
- 存在欧拉回路(经过每条边恰好一次并回到起点)
- 条件:所有节点的度数为偶数
2. 哈密顿图(Hamiltonian Graph)
- 存在哈密顿回路(经过每个节点恰好一次并回到起点)
- 例:旅行商问题(TSP)
3. 网络流图(Flow Network)
- 有向带权图,边有容量限制
- 用于最大流、最小割问题
六、总览思维导图
图
├── 按方向
│ ├── 无向图
│ ├── 有向图
│ └── 混合图
├── 按权重
│ ├── 无权图
│ └── 带权图
├── 按连通性
│ ├── 连通图(无向)
│ ├── 非连通图
│ ├── 强连通图(有向)
│ └── 弱连通图(有向)
├── 按结构
│ ├── 完全图
│ ├── 二分图
│ ├── 树 / 森林
│ ├── DAG(有向无环图)
│ └── 平面图
└── 按特殊性质
├── 欧拉图
├── 哈密顿图
└── 网络流图
常见图算法对应关系
| 问题 | 适用图类型 | 算法 |
|---|---|---|
| 最短路径 | 带权有向/无向图 | Dijkstra、Bellman-Ford、Floyd |
| 最小生成树 | 带权无向连通图 | Kruskal、Prim |
| 拓扑排序 | DAG | Kahn、DFS |
| 连通性检测 | 无向图 | BFS/DFS、并查集 |
| 强连通分量 | 有向图 | Tarjan、Kosaraju |
| 最大流 | 网络流图 | Ford-Fulkerson、Dinic |
| 二分图匹配 | 二分图 | 匈牙利算法 |