mirror of
https://github.com/krahets/hello-algo.git
synced 2026-04-26 19:41:26 +08:00
Replace ":" with "。"
This commit is contained in:
@@ -34,7 +34,7 @@ $$
|
||||
|
||||

|
||||
|
||||
图的常用术语包括:
|
||||
图数据结构包含以下常用术语。
|
||||
|
||||
- 「邻接 adjacency」:当两顶点之间存在边相连时,称这两顶点“邻接”。在上图中,顶点 1 的邻接顶点为顶点 2、3、5。
|
||||
- 「路径 path」:从顶点 A 到顶点 B 经过的边构成的序列被称为从 A 到 B 的“路径”。在上图中,边序列 1-5-2-4 是顶点 1 到顶点 4 的一条路径。
|
||||
@@ -52,7 +52,7 @@ $$
|
||||
|
||||

|
||||
|
||||
邻接矩阵具有以下特性:
|
||||
邻接矩阵具有以下特性。
|
||||
|
||||
- 顶点不能与自身相连,因此邻接矩阵主对角线元素没有意义。
|
||||
- 对于无向图,两个方向的边等价,此时邻接矩阵关于主对角线对称。
|
||||
|
||||
@@ -125,11 +125,11 @@
|
||||
=== "删除顶点"
|
||||

|
||||
|
||||
以下是基于邻接表实现图的代码示例。细心的同学可能注意到,**我们在邻接表中使用 `Vertex` 节点类来表示顶点**,这样做的原因有:
|
||||
以下是基于邻接表实现图的代码示例。细心的同学可能注意到,**我们在邻接表中使用 `Vertex` 节点类来表示顶点**,而这样做是有原因的。
|
||||
|
||||
- 如果我们选择通过顶点值来区分不同顶点,那么值重复的顶点将无法被区分。
|
||||
- 如果类似邻接矩阵那样,使用顶点列表索引来区分不同顶点。那么,假设我们想要删除索引为 $i$ 的顶点,则需要遍历整个邻接表,将其中 $> i$ 的索引全部减 $1$ ,这样操作效率较低。
|
||||
- 因此我们考虑引入顶点类 `Vertex` ,使得每个顶点都是唯一的对象,此时删除顶点时就无须改动其余顶点了。
|
||||
1. 如果我们选择通过顶点值来区分不同顶点,那么值重复的顶点将无法被区分。
|
||||
2. 如果类似邻接矩阵那样,使用顶点列表索引来区分不同顶点。那么,假设我们想要删除索引为 $i$ 的顶点,则需要遍历整个邻接表,将其中 $> i$ 的索引全部减 $1$ ,这样操作效率较低。
|
||||
3. 因此我们考虑引入顶点类 `Vertex` ,使得每个顶点都是唯一的对象,此时删除顶点时就无须改动其余顶点了。
|
||||
|
||||
=== "Java"
|
||||
|
||||
|
||||
@@ -247,7 +247,7 @@ BFS 通常借助队列来实现。队列具有“先入先出”的性质,这
|
||||
[class]{}-[func]{graph_dfs}
|
||||
```
|
||||
|
||||
深度优先遍历的算法流程如下图所示,其中:
|
||||
深度优先遍历的算法流程如下图所示。
|
||||
|
||||
- **直虚线代表向下递推**,表示开启了一个新的递归方法来访问新顶点。
|
||||
- **曲虚线代表向上回溯**,表示此递归方法已经返回,回溯到了开启此递归方法的位置。
|
||||
|
||||
Reference in New Issue
Block a user