连通图
连通图
图还有一些有关路径的术语:
-
连通:如果从顶点V到W存在一条路径,则称V和W是连通的。
-
路径:顶点V到W的路径是有序顶点序列,其中任意一对相邻的顶点间都有图中的边。
-
路径长度:路径中边的个数,如果是带权图(网络),则是所有边的权重和。
-
简单路径:顶点V到W之间的路径中所有顶点都不同。
-
回路:起点等于终点的路径。
如果无向图中任意两顶点均连通,那么称这个图是一个连通图。
一个图的连通分量指的是图的极大连通子图,极大连通子图需要满足两点要求:
-
顶点数达到极大,即再加一个顶点就不连通了。
-
边数达到极大,即包含子图中所有顶点相连的所有边。
互动实验
连接分量:加桥、断边与双向可达
访问权限PRO
PRO EXCLUSIVE探索不止于此
尊享 Pro 权益解锁完整互动实验、进阶解析与精选参考答案。
对于有向图而言,如果有向图中任意一对顶点V和W之间存在双向路径,既可以从走到,也可以从走到,但这两条路径不一定是同一条,则称该图为强连通图。
如果有向图不是强连通图,但将所有的有向边替换为无向边之后可以变为连通图,则称该图为弱连通图。
有向图的极大强连通子图称为强连通分量。
非连通图的遍历
如果一个图不是连通图,那么无论使用深度优先遍历还是广度优先遍历,都会有顶点无法被访问到。解决这个问题的方式是每调用一次dfs(V)或bfs(V),就把顶点V所在的连通分量遍历一遍。
非连通图的深度优先遍历
dfs(Vertex V)
isVisited[V] = true
for v in neighbors(V)
if !isVisited[v]
DFS(v)
listComponents(Graph G)
for V in vertices(G)
if !isVisited[V]
DFS(V)知识测验
题目
无向图有3个连通分量,至少加多少条合适的边才能使它连通?
知识测验
题目
A→B→C,另有C→A。这三个顶点是什么关系?
动手练习
从分量到整体连通
无向图顶点A到F,只有A—B、B—C、D—E。列出连通分量,并加最少的边让图连通。另一个有向图是A↔B、B→C、C↔D:写出强连通分量,判断弱/强连通,再加一条边使它强连通。