图基本操作——生成树

1.求图的联通分支

  对图DFS或者BFS,如果联通这visited 全部true,否则图非联通的。对非联通图求联通分支,只要重复调用DFS。

void connected(void)
{
  for(int i=0;i<n;i++)
  {
    if(!visited[i])
       DFS(i);
      printf("\n");
  }
}

2.生成树

  如果图是联通的,那么广度/深度搜索,都能访问到G的所有顶点,生成树就是有G的所有顶点和边构成的树。

3.联通分支

4.双联通分支与关节点

  关节点:图G中当地一个顶点v,如果删除v以及v上所有边后,得到的新图G‘至少包含两个联通分支

  双联通图:没有关节点的连通图

  无向联通图双联通分支:是图G中的最大双联通子图H

利用图的任意一个深度优先搜索树,可以找出图G的双联通分支。

在深度优先搜索中,顶点的访问顺序为每个顶点的深度优先编号,在一个深度优先生成树中,如果顶点u是顶点v的祖先顶点,dfn(u)<dfn(v),在图中,非树边为(u,v)为回退边。  

  当且仅当,深度优先搜索生成树根结点至少有两个儿子,他就是一个关节点,而任何顶点u非关节点,当且仅当u至少有一个儿子w,从w出发,不能通过w的后代顶点个一条回退边到达u的祖先顶点。

low(u)等于从u出发,经过一条后代顶点路径和一条回退边,所能到达的具有最小深度优先编号的

low(u)=min(dfn(u),min(low(w),w是u的儿子),min(dfn(w)|(u,w)是一条回退边))。

 **************************************************************************************************************

一、定义及应用

  在某图中,若删除顶点V以及V相关的边后,图的一个连通分量分割为两个或两个以上的连通分量,则称顶点V为该图的一个关节点。一个没有关节点的连通图称为重连通图。

  在重连通图中,任意一对顶点之间至少存在两条路径,则再删去某个顶点即相关各边后也不破坏图的连通性。若在图的连通图上删去k个节点才能破坏图的连通性,则称K为此图的连通度。

  他们常常在通信网络的图或航空网中应用,K越大,系统越稳定,反之,战争中若要摧毁敌方的运输线,只须破坏其运输网中的关节点即可。

  二、求解算法

  利用深度优先搜索便可以求的图的关节点,本由此可判别图是否重连通。

  从任一点出发深度优先遍历得到优先生成树,对书中任一顶点V而言,其孩子节点为邻接点。由深度优先生成树可得出两类关节点的特性:

  (1)若生成树的更有两棵或两棵以上的子树,则此根顶点必为关节点。因为图中不存在连接不同子树顶点的边,若删除此节点,则树便成为森林。

  (2)若生成树中某个非叶子顶点V,其某棵子树的根和子树中的其他节点均没有指向V的祖先的回边,则V为关节点。

  求关节点—对图进行一次先深搜索边可求出所有的关节点

  由先深生成树可得出两类关节点的特性: 

  1.若生成树的根有两株或两株以上子树,则此根结点必为关节(第一类关节点)。因为图中不存在连接不同子树中顶点的边,因此,若删去根顶点,生成树变成生成森林。

  2.若生成树中非叶顶点v,其某株子树的根和子树中的其它结点均没有指向v 的祖先的回退边,则v 是关节点(第二类关节点)。 因为删去v,则其子树和图的其它部分被分割开来 

  定义 

  low[v] 设对连通图G=(V,E)进行先深搜索的先深编号为dnf[v],产生的先深生成树为S=(V,T),B试回退边之集。对每个顶点v,low[v]定义如下 

  算法5.5 求无向图的双连通分量 

  输入:连通的无向图G=( V, E )。L[v]表示关于v的邻接表

  输出:G的所有双连通分量,每个连通分量由一序列的边组成。 

  算法要点: 

  1.计算先深编号:对图进行先深搜索,计算每个结点v的先深编号dnf[v],形成先深生成树S=(V,T)。

  2.计算low[v]:在先深生成树上按后根顺序进行计算每个顶点v的 low[v], low[v]取下述三个结点中的最小者: 

  (1) dfn[v];

  (2) dfn[w],凡是有回退边(v,w)的任何结点w;

  (3) low[y],对v的任何儿子y。 

  3.求关节点: 

  (1)树根是关节点,当且仅当它有两个或两个以上的儿子(第一类关节点);

  (2)非树根结点v是关节点当且仅当v有某个儿子y,使low[y]≥dnf[v](第二类关节点)。 

  

 

  

posted on 2011-09-09 20:58  youngkang  阅读(4828)  评论(0)    收藏  举报