图不连接时怎么完成遍历?

来源:互联网 发布:omarion知乎 编辑:程序博客网 时间:2024/04/30 10:30

连通:如果从V到W存在一条(无向)路径,则称V和W是连通的。
路径:V到W的路径是一系列顶点{V,V1,V2,V3,….,Vn, W}的集合,其中任一对相邻的顶点间都有图中的边。路径的长度是路径中的边数(如果图为带权图,则是所有边的权重和)。如果V到W之间的所有顶点都不同,则称简单路径。
回路:起点等于终点的路径。
连通图:图中任意两顶点均连通。
连通分量无向图极大连通子图。

  • 极大顶点数:再加1个顶点就不连通了
  • 极大边数:包含子图中所有顶点相连的所有边

连通分量指的是无向图,有向图有对应的概念:

  • 强连通:有向图中顶点V和W之间存在双向路径,则称V和W是强连通的。
  • 强连通图:有向图中任意两顶点均强连通。
  • 强连通分量:有向图的极大强连通子图。
void DFS( Vertex V ) {    visited[ V ] = true;    for( V的每个邻接点W ){        if( !visited[ W ] ){            DFS( W );        }    }}

没调用一次DFS(V), 就把V所在的连通分量遍历了一遍。BFS也是一样。如果这个图本身不连通,以为着这个图存在好几个连通分量。于是:

void ListComponents( Graph G ){    for ( each V in G ){        if ( !visited[ V ] ){            DFS( V );//or BFS( v )        }    }}
0 0
原创粉丝点击