有向图的强连通

来源:互联网 发布:筑龙投标软件 编辑:程序博客网 时间:2024/05/01 07:37
有向图的强连通分量输出PDF 打印E-mail
2007-07-18

  深度优先遍历是求有向图的强连通分量的一个有效方法,具体求解步骤如下:

  ⑴ 在有向图中,从某个顶点出发进行深度优先遍历,并按其所有邻接点的访问都完成(即出栈)的顺序将顶点排列起来。

  ⑵ 在该有向图中,从最后完成访问的顶点出发,沿着以该顶点为头的弧作逆向的深度优先遍历,若此次遍历不能访问到有向图中所有顶点,则从余下的顶点中最后完成访问的那个顶点出发,继续作逆向的深度优先遍历,依次类推,直至有向图中所有顶点都被访问到为止。

  ⑶ 每一次逆向深度优先遍历所访问到的顶点集便是该有向图的一个强连通分量的顶点集,若仅作一次逆向深度优先遍历就能访问到图的所有顶点,则该有向图是强连通图。

  例如对图6-3(a)所示有向图,从顶点v1出发作深度优先遍历,在访问顶点v2后,顶点v2不存在未访问的邻接点从而成为一个“死结点”,如图(b)所示。将v2从栈顶弹出后,再从顶点v1出发,在访问顶点v3 v4后,顶点v4不存在未访问的邻接点从而也成为“死结点”,如图(c)所示。将v4从栈顶弹出后,顶点v3不存在未访问的邻接点从而也成为“死结点”,将v3从栈顶弹出后,顶点v1不存在未访问的邻接点从而也成为“死结点”,将v1从栈顶弹出,所以,得到出栈的顶点序列为v2, v4, v3, v1;再从最后一个出栈的顶点v1出发作逆向的深度优先遍历(逆着有向边的箭头方向),得到一个顶点集{ v1, v3, v4},如图(d)所示;再从顶点v2出发作逆向的深度优先遍历,得到一个顶点集{v2},如图(e)所示。这就是该有向图的两个强连通分量的顶点集。

Image

Image

< 上一篇 下一篇 >
长春工业大学
计算机科学与工程学院 数据结构课程组
原创粉丝点击