Section-1 Traverse 第1节 遍历 - KnowledgePoint 知识要点

优质
小牛编辑
130浏览
2023-12-01

图 G = lt V,E gt 是由顶点集合 V 和边集合 E 组成的数据结构。一个边为连接两个顶点的曲线,若两个顶点 u 和 v 为一条边的两个端点,则称 u 和 v 相邻。

子图(Subgraph)

一个所有顶点和边都属于图 G 的图,称为 G 的子图。

完全图(Complete Graph)

所有顶点两两相邻的图称为完全图。

无向边

若无向边 e 的两端点是 u 和 v ,则可以从 u 出发到达 v ,也可以从 v 出发到达 u 。

有向边

若有向边 e 从 u 指向 v ,则只能从 u 出发到达 v ,而不能反向。无向边也可以看作相同两个端点之间的两条反向有向边的叠加。

出度

节点 u 的出度是从节点 u 出发的边的数量,也称为出度度数,从节点 u 出发的边也称为出弧边。对于无向边和无向图来说,节点 u 的所有边都可以看作出弧边,即边数等于出度。

入度

节点 u 的入度是到达节点 u 的边的数量,也称为入度度数,到达节点 u 的边也称为入弧边。对于无向边和无向图来说,节点 u 的所有边也都可以看作入弧边,即边数等于入度。无向图中每个节点的出度和入度相等。

度数

图 G 中的节点 u 所关联的边数,称作该节点的度数。无向图的任意节点 v_i 的度数等于出度度数,也等于入度度数。有向图的任意节点 v_i 的度数等于出度度数与入度度数之和。

KnowledgePoint1.svg

上面两个图中,图 A 为有向图,节点 0 - 6 的出度分别为 2, 2, 1, 1, 2, 1 ,入度分别为 1, 1, 2, 2, 0, 2 。图 B 为无向图,节点 0 - 6 的出度分别为 3, 4, 3, 3, 2, 3 ,入度与出度一样。

n times n 的矩阵 g 可以表示一个拥有 n 个节点的图,节点下标范围为 [1,n] 。 g[i,j] 表示从节点 i 到 j 的距离( i,j in [1,n] ),也可以是其他信息,比如节点 i 是否可以直接到达节点 j 等等。无向图中相连的两个节点,可以看作有向图中两个节点之间有权值相等,方向相反的两条边。图 A 和 B 可以表示为:


A =
begin{bmatrix}
0{0,0} & 1{0,1} & 0{0,2} & 0{0,3} & 0{0,4} & 1{0,5}
0{1,0} & 0{1,1} & 1{1,2} & 1{1,3} & 0{1,4} & 0{1,5}
0{2,0} & 0{2,1} & 0{2,2} & 0{2,3} & 0{2,4} & 1{2,5}
0{3,0} & 0{3,1} & 1{3,2} & 0{3,3} & 0{3,4} & 0{3,5}
1{4,0} & 0{4,1} & 0{4,2} & 1{4,3} & 0{4,4} & 0{4,5}
0{5,0} & 1{5,1} & 0{5,2} & 0{5,3} & 0{5,4} & 0{5,5}
end{bmatrix}
quad
B =
begin{bmatrix}
0{0,0} & 1{0,1} & 0{0,2} & 0{0,3} & 1{0,4} & 1{0,5}
1{1,0} & 0{1,1} & 1{1,2} & 1{1,3} & 0{1,4} & 0{1,5}
0{2,0} & 1{2,1} & 0{2,2} & 1{2,3} & 0{2,4} & 1{2,5}
0{3,0} & 1{3,1} & 1{3,2} & 0{3,3} & 1{3,4} & 0{3,5}
1{4,0} & 0{4,1} & 0{4,2} & 1{4,3} & 0{4,4} & 0{4,5}
1{5,0} & 1{5,1} & 1{5,2} & 0{5,3} & 0{5,4} & 0{5,5}
end{bmatrix}

若图 G 中存在一个节点 i ,从它出发可以返回自己,则称这条路径为一个环。不存在环的图称为无环图。下图是一个五向有环图:

KnowledgePoint2.svg

拓扑排序

不存在环的有向图中存在拓扑排序。在可以拓扑排序的有向图 G 中,节点可以分为三类:起点,终点和中间点。起点只有出弧边,没有入弧边;终点只有入弧边,没有出弧边;中间点既有出弧边也有入弧边。下图是一个有向无环图的拓扑排序:

KnowledgePoint3.svg

欧拉路径(Eulerian Path)

图 G 中存在这样的一条路径,经过每条边一次且仅一次(同一个顶点可以经过多次),可以遍历图中的所有边,则这条路径称为欧拉路经。有向图 DG 中存在一个起始顶点 v1 满足 degree{out} = degree{in} + 1 (出度比入度大1),存在一个终止顶点 v_2 满足 degree{in} = degree_{out} + 1 (入度比出度大1),其余所有顶点的入度等于出度,则该有向图 DG 中存在欧拉路经。无向图 UG 中存在两个顶点 v_1 和 v_2 满足度数为奇数,其余节点的度数都是偶数,则该无向图 UG 中存在欧拉路经。

欧拉回路(Eulerian Cycle)

若图 G 中存在欧拉路经,且该路径为一个回路,则称该路径为欧拉回路。有向图 DG 的任意顶点 vi 满足 degree{in} = degree_{out} ,出度等于入度,则该有向图 DG 中存在欧拉回路。无向图 UG 的任意顶点 v_i 满足读数为偶数,则该无向图 DG 中存在欧拉回路。

欧拉图(Eulerian Diagram)

拥有欧拉回路的图 G 称为欧拉图。

汉密尔顿路径(Hamilton Path)

图 G 中存在这样的一条路径,经过每个顶点一次且仅一次(同一条边可以经过多次),可以遍历图中的所有顶点,则这条路径称为汉密尔顿路径。求解汉密尔顿路径是一个NP完全问题。

汉密尔顿回路(Hamilton Cycle)

图 G 中存在汉密尔顿路径,且该路径为一个回路,则称该路径为汉密尔顿回路。

汉密尔顿图(Hamilton Diagram)

拥有汉密尔顿回路的图 G 称为汉密尔顿图。完全图必然是汉密尔顿图。


图论术语