现在的位置: 首页 > 综合 > 正文

39 求一个有向连通图的割点

2018年01月20日 ⁄ 综合 ⁄ 共 695字 ⁄ 字号 评论关闭
/*
(2).
求一个有向连通图的割点,割点的定义是,如果除去此节点和与其相关的边,
有向图不再连通,描述算法。

1. 最简单也是最直接的算法是,删除一个点然后判断连通性,如果删除此点,图不再连通,
则此点是割点,反之不是割点(图的连通性一般通过深搜来判定,是否能一次搜索完全部顶点);

2. 通过深搜优先生成树来判定。从任一点出发深度优先遍历得到优先生成树,
对于树中任一顶点V而言,其孩子节点为邻接点。

由深度优先生成树可得出两类割点的特性:
    1若生成树的根有两棵或两棵以上的子树,则此根顶点必为割点。
因为图中不存在连接不同子树顶点的边,若删除此节点,则树便成为森林;
    2若生成树中某个非叶子顶点V,其某棵子树的根和子树中的其他节点均没有指向V的祖先的回边,则V为割点。
因为删去v,则其子树和图的其它部分被分割开来。

仍然利用深搜算法,只不过在这里定义visited[v]表示为深度优先搜索遍历图时访问顶点v的次序号,
定义low[v]=Min{visited[v],low[w],visited[k]},其中w是顶点v在深度优先生成树上的孩子节点;
k是顶点v在深度优先生成树上由回边联结的祖先节点。
   
   割点判定条件:如果对于某个顶点v,存在孩子节点w且low[w]>=visited[v],
则该顶点v必为关节点。因为当w是v的孩子节点时,
low[w]>=visited[v],表明w及其子孙均无指向v的祖先的回边,
那么当删除顶点v后,v的孩子节点将于其他节点被分割开来,从来形成新的连通分量。

http://www.cnblogs.com/mfryf/archive/2012/08/23/2652102.html

*/

抱歉!评论已关闭.