Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 8b1dc58

Browse files
committed
更新 图的定义和分类 相关内容
1 parent fe267b2 commit 8b1dc58

File tree

1 file changed

+61
-46
lines changed

1 file changed

+61
-46
lines changed

‎Contents/08.Graph/01.Graph-Basic/01.Graph-Basic.md

Lines changed: 61 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,120 +1,135 @@
11
## 1. 图的定义
22

3-
> **图(Graph)**:由顶点的非空有限集合 $V$ (由 $n > 0$ 个顶点组成)与边的集合 $E$(顶点之间的关系)构成的结构。其形式化定义为 $G = (V, E)$。
3+
> **图(Graph)**:由顶点集合 $V$ 与边集合 $E$(顶点之间的关系)构成的数据结构。图的形式化定义为 $G = (V, E)$。
44
5-
- **顶点(Vertex)**:图中的数据元素通常称为顶点,在下面的示意图中我们使用圆圈来表示顶点
6-
- **边(Edge)**:图中两个数据元素之间的关联关系通常称为边,在下面的示意图中我们使用连接两个顶点之间的线段来表示边。边的形式化定义为:$e = \langle u, v \rangle,ドル表示从 $u$ 到 $v$ 的一条边,其中 $u$ 称为起始点,$v$ 称为终止点。
5+
- **顶点(Vertex)**:图中的基本元素,通常称为顶点,表示对象或节点。顶点的集合 $V$ 是有限非空集合,包含 $n > 0$ 个顶点。如下面的示意图所示,通常我们使用圆圈来表示顶点
6+
- **边(Edge)**:顶点之间的关系或连接。边的形式化定义为:$e = \langle u, v \rangle,ドル表示从 $u$ 到 $v$ 的一条边,其中 $u$ 称为起始点,$v$ 称为终止点。如下面的示意图所示,通常我们使用连接两个顶点的线段来表示边
77

88
![](https://qcdn.itcharge.cn/images/20220307145142.png)
99

10-
- **子图(Sub Graph)**:对于图 $G = (V, E)$ 与 $G^{'} = (V^{'}, E^{'}),ドル如果存在 $V^{'} \subseteq V,ドル$E^{'} \subseteq E,ドル则称图 $G^{'}$ 是图 $G$ 的一个子图。在下面的示意图中我们给出了一个图 $G$ 及其一个子图 $G^{'}$。特别的,根据定义,$G$ 也是其自身的子图
10+
- **子图(Sub Graph)**:对于图 $G = (V, E)$ 与 $G^{'} = (V^{'}, E^{'}),ドル如果满足 $V^{'} \subseteq V,ドル$E^{'} \subseteq E,ドル则称图 $G^{'}$ 是图 $G$ 的一个子图。直观的说,子图是由原图的一部分顶点和边组成的,同时边的两端顶点必须属于子图的顶点集合 $V^{'}$。特别地,根据定义,$G$ 本身也是其一个子图。在下图中,我们展示了一个图 $G$ 及其子图 $G^{'}$
1111

1212
![](https://qcdn.itcharge.cn/images/20220317163120.png)
1313

1414
## 2. 图的分类
1515

1616
### 2.1 无向图和有向图
1717

18-
按照边是否有方向,我们可以将图分为两种类型:「无向图」和「有向图」。
18+
根据边是否具有方向性,图可以分为两种类型:「无向图」和「有向图」。
1919

20-
- **无向图(Undirected Graph)**:如果图中的每条边都没有指向性,则称为无向图。例如朋友关系图、路线图都是无向图。
21-
- **有向图(Directed Graph)**:如果图中的每条边都具有指向性,则称为有向图。例如流程图是有向图。
20+
> **无向图(Undirected Graph)**:如果图中每条边都没有方向性,则称为无向图。例如,表示朋友关系或者城市间双向行驶的路线图常用无向图建模。
2221
2322
在无向图中,每条边都是由两个顶点组成的无序对。例如下图左侧中的顶点 $v_1$ 和顶点 $v_2$ 之间的边记为 $(v_1, v_2)$ 或 $(v_2, v_1)$。
2423

25-
在有向图中,有向边也被称为弧,每条弧是由两个顶点组成的有序对,例如下图右侧中从顶点 $v_1$ 到顶点 $v_2$ 的弧,记为 $\langle v_1, v_2 \rangle,ドル$v_1$ 被称为弧尾,$v_2$ 被称为弧头,如下图所示。
24+
> **有向图(Directed Graph)**:如果图中的每条边都具有方向性,则称为有向图。例如,表示任务流程的流程图或网络请求的依赖图是典型的有向图。
25+
26+
在有向图中,有向边(又称弧)是由两个顶点组成的有序对,例如下图右侧中从顶点 $v_1$ 到顶点 $v_2$ 的弧,记为 $\langle v_1, v_2 \rangle,ドル$v_1$ 被称为弧尾,$v_2$ 被称为弧头,如下图所示。
2627

2728
![](https://qcdn.itcharge.cn/images/20220307160017.png)
2829

29-
如果无向图中有 $n$ 个顶点,则无向图中最多有 $n \times (n - 1) / 2$ 条边。而具有 $n \times (n - 1) / 2$ 条边的无向图称为 **「完全无向图(Completed Undirected Graph)」**
30+
如果图中有 $n$ 个顶点,则根据图的类型,其边(或弧)的最大数量可以定义如下:
31+
32+
- **无向图中边的最大数量**:在无向图中,任意两个顶点之间最多存在一条边,因此最多可以有 $\frac{n \times (n - 1)}{2}$ 条边。具有 $\frac{n \times (n - 1)}{2}$ 条边的无向图称为 **「完全无向图(Completed Undirected Graph)」**
3033

31-
如果有向图中有 $n$ 个顶点,则有向图中最多有 $n \times (n - 1)$ 条弧。而具有 $n \times (n - 1)$ 条弧的有向图称为 **「完全有向图(Completed Directed Graph)」**
34+
-**有向图中边的最大数量**:在有向图中,任意两个顶点之间可以存在一对方向相反的弧,因此最多可以有 $n \times (n - 1)$ 条弧。具有 $n \times (n - 1)$ 条弧的有向图称为 **「完全有向图(Completed Directed Graph)」**
3235

33-
如下图所示,左侧为包含 4ドル$ 个顶点的完全无向图,右侧为包含 4ドル$ 个顶点的完全有向图。
36+
下图展示了两个示例:左侧为包含 4ドル$ 个顶点的完全无向图,右侧为包含 4ドル$ 个顶点的完全有向图。
3437

3538
![](https://qcdn.itcharge.cn/images/20220308151436.png)
3639

3740
下面介绍一下无向图和有向图中一个重要概念 **「顶点的度」**
3841

39-
- **顶点的度**:与该顶点 $v_i$ 相关联的边的条数,记为 $TD(v_i)$。
42+
> **顶点的度**:与该顶点 $v_i$ 相关联的边的数量,记为 $TD(v_i)$。
4043
41-
例如上图左侧的完全无向图中,顶点 $v_3$ 的度为 3ドル$。
44+
-**无向图中顶点的度**:在无向图中,顶点的都是与该顶点相连的边的数量。例如,在上图左侧的完全无向图中,顶点 $v_3$ 的度为 3ドル$,因为有 3ドル$ 个其他的顶点与 $v_3$ 相连接
4245

43-
而对于有向图,我们可以将顶点的度分为 **「顶点的出度」****「顶点的入度」**
46+
- **有向图中顶点的度**:在有向图中,顶点的度可以分为「出度」和「入度」两个部分。
47+
- **出度(Out Degree)**:以该顶点 $v_i$ 为出发点的边的条数,记为 $OD(v_i)$。
48+
- **入度(In Degree)**:以该顶点 $v_i$ 为终止点的边的条数,记为 $ID(v_i)$。
4449

45-
- **顶点的出度**:以该顶点 $v_i$ 为出发点的边的条数,记为 $OD(v_i)$。
46-
- **顶点的入度**:以该顶点 $v_i$ 为终止点的边的条数,记为 $ID(v_i)$。
47-
- 有向图中某顶点的度 = 该顶点的出度 + 该顶点的入度,即 $TD(v_i) = OD(v_i) + ID(v_i)$。
50+
在有向图中,顶点 $v_i$ 的度是该点出度和入度之和,即:$TD(v_i) = OD(v_i) + ID(v_i)$。
4851

49-
例如上图右侧的完全有向图中,顶点 $v_3$ 的出度为 3ドル,ドル入度为 3ドル,ドル顶点 $v_3$ 的度为 3ドル + 3 = 6$。
52+
例如,在上图右侧的完全有向图中,顶点 $v_3$ 的出度为 3ドル,ドル入度为 3ドル,ドル因此顶点 $v_3$ 的度为 3ドル + 3 = 6$。
5053

5154
### 2.2 环形图和无环图
5255

53-
**「路径」** 是图中的一个重要概念,对于图 $G = (V, E),ドル如果存在顶点序列 $v_{i_0}, v_{i_1}, v_{i_2},... , v_{i_m},ドル使得 $(v_{i_0}, v_{i_1}), (v_{i_1}, v_{i_2}), ..., (v_{i_{m-1}}, v_{i_m}) \in E$(即他们都是图 G 的边,对于有向图则是 $\langle v_{i_0}, v_{i_1} \rangle, \langle v_{i_1}, v_{i_2} \rangle, ..., \langle v_{i_{m-1}}, v_{i_m} \rangle \in E$),则称该顶点序列为顶点 $v_{i_0}$ 和顶点 $v_{i_m}$ 之间的一条路径,其中 $v_{i_0}$ 是这条路径的起始点,$v_{i_m}$ 是这条路径的终止点。
56+
> **路径** :图中的一个重要概念,对于图 $G = (V, E),ドル如果存在顶点序列 $v_{i_0}, v_{i_1}, v_{i_2}, ..., v_{i_m},ドル并且每对相邻的顶点都有图中的边连接,即 $(v_{i_0}, v_{i_1}), (v_{i_1}, v_{i_2}), ..., (v_{i_{m-1}}, v_{i_m}) \in E$(对于有向图则是 $\langle v_{i_0}, v_{i_1} \rangle, \langle v_{i_1}, v_{i_2} \rangle, ..., \langle v_{i_{m-1}}, v_{i_m} \rangle \in E$),则称该顶点序列为从顶点 $v_{i_0}$ 和顶点 $v_{i_m}$ 之间的一条路径,其中 $v_{i_0}$ 是这条路径的起始点,$v_{i_m}$ 是这条路径的终止点。
5457
55-
简单来说,如果顶点 $v_{i_0}$ 可以通过一系列的顶点和边,到达顶点 $v_{i_m},ドル则称顶点 $v_{i_0}$ 和顶点 $v_{i_m}$ 之间有一条路径,其中经过的顶点序列则称为两个顶点之间的路径。
58+
简而言之,如果顶点 $v_{i_0}$ 可以通过一系列的顶点和边到达顶点 $v_{i_m},ドル则称这两个顶点之间有一条路径,其中经过的顶点序列则称为两个顶点之间的路径。
5659

57-
- **环(Circle)**:如果一条路径的起始点和终止点相同(即 $v_{i_0} == v_{i_m}$ ),则称这条路径为「回路」或者「环」。
60+
- **环(Circle)**:如果一条路径的起始点和终止点相同(即 $v_{i_0} == v_{i_m}$ ),则称这条路径为「回路」「环」。
5861

5962
- **简单路径**:顶点序列中顶点不重复出现的路径称为「简单路径」。
6063

61-
而根据图中是否有环,我们可以将图分为「环形图」和「无环图」。
64+
根据图中是否有环,我们可以将图分为「环形图」和「无环图」。
6265

6366
- **环形图(Circular Graph)**:如果图中存在至少一条环路,则该图称为「环形图」。
6467
- **无环图(Acyclic Graph)**:如果图中不存在环路,则该图称为「无环图」。
6568

66-
特别的,在有向图中,如果不存在环路,则将该图称为「有向无环图(Directed Acyclic Graph)」,缩写为 DAG。因为有向无环图拥有为独特的拓扑结构,经常被用于处理动态规划、导航中寻求最短路径、数据压缩等多种算法场景
69+
在有向图中,如果不存在环路,则将该图称为「有向无环图(Directed Acyclic Graph, DAG)」。有向无环图因其独特的拓扑结构,广泛应用于诸如动态规划、最短路径问题、数据压缩等算法场景
6770

68-
如下图所示,分别为:无向无环图、无向环形图、有向无环图和有向环形图。其中有向环形图中的顶点 $v_1$、$v_2$、$v_3$ 与相连的边构成了一个环。
71+
下图展示了四种图的类型:无向无环图、无向环形图、有向无环图和有向环形图。在有向环形图中,顶点 $v_1$、$v_2$、$v_3$ 与相连的边构成了一个环。
6972

7073
![环形图和无环图](https://qcdn.itcharge.cn/images/20220317115641.png)
7174

7275
### 2.3 连通图和非连通图
7376

74-
#### 2.3.1 连通无向图和连通分量
77+
#### 2.3.1 连通无向图
7578

76-
在无向图中,如果从顶点 $v_i$ 到顶点 $v_j$ 有路径,则称顶点 $v_i$ 和 $v_j$ 是连通的。
79+
在无向图中,如果存在一条从顶点 $v_i$ 到顶点 $v_j$ 的路径,则称顶点 $v_i$ 和 $v_j$ 是连通的。
7780

78-
- **连通无向图**:在无向图中,如果图中任意两个顶点之间都是连通的,则称该图为连通无向图
79-
- **非连通无向图**:在无向图中,如果图中至少存在一对顶点之间不存在任何路径,则该图称为非连通无向图
81+
- **连通无向图**:如果无向图中任意两个顶点之间都是连通的(即任意两个顶点之间都有路径连接),则称该图为「连通无向图」
82+
- **非连通无向图**:如果无向图中存在至少一对顶点之间没有任何路径连接,则称该图为「非连通无向图」
8083

81-
如下图所示,左侧图中 $v_1$ 与 $v_2$、$v_3$、$v_4$、$v_5$、$v_6$ 都是连通的,所以该图为连通无向图。右侧图中 $v_1$ 与 $v_2$、$v_3$、$v_4$ 都是连通的,但是 $v_1$ 和 $v_5$、$v_6$ 之间不存在任何路径,则该图为非连通无向图。
84+
下图展示了两种情况:
85+
86+
- 在左侧图中,顶点 $v_1$ 与所有其他顶点 $v_2$、$v_3$、$v_4$、$v_5$、$v_6$ 都是连通的,因此该图为连通无向图。
87+
- 在右侧图中,顶点 $v_1$ 与 $v_2$、$v_3$、$v_4$ 是连通的,但与 $v_5$、$v_6$ 没有任何路径连接,因此该图为非连通无向图。
8288

8389
![](https://qcdn.itcharge.cn/images/20220317163249.png)
8490

85-
下面介绍一下无向图的「连通分量」概念。有些无向图可能不是连通无向图,但是其子图可能是连通的。这些子图称为原图的连通子图。而无向图的一个极大连通子图(不存在包含它的更大的连通子图)则称为该图的「连通分量」。
91+
#### 2.3.2 无向图的连通分量
92+
93+
在无向图中,某些图可能不是连通的,但它们的子图可能是连通的。这样的子图称为「连通子图」。对于其中某个连通子图,如果不存在任何包含他的更大连通子图,则该连通子图称为「连通分量」。
8694

87-
- **连通子图**:如果无向图的子图是连通无向图,则该子图称为原图的连通子图
88-
- **连通分量**:无向图中的一个极大连通子图(不存在包含它的更大的连通子图)称为该图的连通分量。
89-
- **极大连通子图**:无向图中的一个连通子图,并且不存在包含它的更大的连通子图
95+
- **连通子图**:如果无向图的子图是连通的,则该子图称为连通子图
96+
- **连通分量**:无向图中的一个极大连通子图(不存在任何包含它的更大的连通子图)称为该图的连通分量。
97+
- **极大连通子图**:无向图中的一个连通子图,且不存在包含它的更大的连通子图
9098

91-
例如上图中右侧的非连通无向图,其本身是非连通的。但顶点 $v_1$、$v_2$、$v_3$、$v_4$ 与其相连的边构成的子图是连通的,并且不存在包含它的更大的连通子图了,所以该子图是原图的一个连通分量。同理,顶点 $v_5$、$v_6$ 与其相连的边构成的子图也是原图的一个连通分量
99+
例如,上图右侧的非连通无向图中,尽管整体图是非连通的,但顶点 $v_1$、$v_2$、$v_3$、$v_4$ 与其相连的边构成的子图是连通的,并且不存在任何包含它的更大的连通子图,因此该子图是原图的一个连通分量。类似地,顶点 $v_5$、$v_6$ 与其相连的边也构成了原图的另一个连通分量
92100

93-
#### 2.3.2 强连通有向图和强连通分量
101+
#### 2.3.3 强连通有向图
94102

95-
在有向图中,如果从顶点 $v_i$ 到 $v_j$ 有路径,并且从顶点 $v_j$ 到 $v_i$ 也有路径,则称顶点 $v_i$ 与 $v_j$ 是连通的
103+
在有向图中,如果从顶点 $v_i$ 到 $v_j$ 存在路径,且从顶点 $v_j$ 到 $v_i$ 也有路径,则称顶点 $v_i$ 与 $v_j$ 是「强连通」的
96104

97-
- **强连通有向图**:如果图中任意两个顶点 $v_i$ 和 $v_j$,从 $v_i$ 到 $v_j$ 和从 $v_j$ 到 $v_i$ 都有路径,则称该图为强连通有向图
98-
- **非强连通有向图**:如果图中至少存在一对顶点之间不存在任何路径,则该图称为非强连通有向图
105+
- **强连通有向图**:如果图中任意两个顶点 $v_i$ 和 $v_j$ 都满足从 $v_i$ 到 $v_j$ 和从 $v_j$ 到 $v_i$ 均有路径,则称该图为「强连通有向图」
106+
- **非强连通有向图**:如果图中存在至少一对顶点之间没有路径连接(即无法相互到达),则称该图为「非强连通有向图」
99107

100-
如下图所示,左侧图中任意两个顶点之间都有路径,则左侧图为强连通有向图。右侧图中顶点 $v_7$ 无法通过路径到达其他顶点,则右侧图为非强连通有向图。
108+
下图展示了两种情况:
109+
110+
- 左侧图中,任意两个顶点之间都存在路径,因此该图为强连通有向图。
111+
- 右侧图中,顶点 $v_7$ 无法通过路径到达其他顶点,因此该图为非强连通有向图。
101112

102113
![](https://qcdn.itcharge.cn/images/20220317133500.png)
103114

104-
与无向图类似,有向图的一个极大强连通子图称为该图的 **强连通分量**
115+
#### 2.3.4 有向图的强连通分量
116+
117+
在有向图中,「强联通分量」是指其内部任意两个顶点之间都强连通的极大强连通子图。以下是具体定义:
105118

106-
- **强连通子图**:如果有向图的子图是连通有向图,则该子图称为原图的强连通子图。
119+
- **强连通子图**:有向图的一个子图,且该子图中任意两个顶点都是强连通的。
120+
- **极大强连通子图**:如果一个强联通子图不能被包含在任何更大的强连通子图中,则称其为极大强连通子图。
107121
- **强连通分量**:有向图中的一个极大强连通子图,称为该图的强连通分量。
108-
- **极大强连通子图**:有向图中的一个强连通子图,并且不存在包含它的更大的强连通子图。
109122

110-
例如上图中,右侧的非强连通有向图,其本身不是强连通的(顶点 $v_7$ 无法通过路径到达其他顶点)。但顶点 $v_1$、$v_2$、$v_3$、$v_4$、$v_5$、$v_6$ 与其相连的边构成的子图(即上图的左侧图)是强连通的,并且不存在包含它的更大的强连通子图了,所以该子图是原图的一个强连通分量(即上图中的左侧图是右侧图的强连通分量)。同理,顶点 $v_7$ 构成的子图也是原图的一个强连通分量。
123+
举个例子来解释一下。
124+
125+
例如,上图右侧的非强连通有向图,其本身不是强连通的(因为顶点 $v_7$ 无法通过路径到达其他顶点)。但顶点 $v_1$、$v_2$、$v_3$、$v_4$、$v_5$、$v_6$ 与它们之间的边构成了一个强连通子图(即上图的左侧图),且不存在包含它的更大的强连通子图,因此这是右侧图的一个强连通分量。类似地,顶点 $v_7$ 构成了一个只有一个顶点的强连通子图,因此它自身也是右侧图的一个强连通分量。
111126

112127
### 2.4 带权图
113128

114-
有时,图不仅需要表示顶点之间是否存在某种关系,还需要表示这一关系的具体细节。这时候我们需要在边上带一些数据信息,这些数据信息被称为 ****。在具体应用中,权值可以具有某种具体意义,比如权值可以代表距离、时间以及价格等不同属性。
129+
有时,图不仅需要表示顶点之间是否存在某种关系,还需要表示这一关系的具体细节。有时候我们需要给边赋予一些数据信息,这些数据信息被称为 ****。在具体应用中,权值可以具有某种具体意义,比如权值可以代表距离、时间以及价格等不同属性。
115130

116-
- **带权图**:如果图的每条边都被赋以一个权值,这种图称为带权图
117-
- **网络**:带权的连通无向图称为网络。
131+
- **带权图**:如果图的每条边都被赋以一个权值,则该图称为带权图。权值通常表示一个非负实数,但在某些场景下也可以是负数
132+
- **网络**:带权的连通无向图被称为网络。
118133

119134
在下面的示意图中,我们给出了一个带权图的例子。
120135

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /