![ff18a32f088a16949bf4a29a739b1baf.png](https://img-blog.csdnimg.cn/img_convert/ff18a32f088a16949bf4a29a739b1baf.png)
深度优先搜索遍历图
相关文章
关于图论算法
深度优先搜索
深度优先搜索(DFS)每次沿着路径到达不能再前进时,退回到最近的岔道口向下继续遍历。换句话说每次路径不可达时,代表一条完整路径形成。
实现过程
连通分量:在无向图中,如果两个顶点可以相互到达(可以通过一定路径间接到达),那么称这个两个顶点连通,如果图G中任意两个顶点都连通,则称图G为连通图, 否则称为非连通图,其中极大连通子图称为连通分量。
强连通分量:在有向图中,如果两个顶点可以各自通过一条有向路径到达另一顶点,就称这两个顶点强连通,如果图G任意两个顶点都能强连通,那么图G称为 强连通图,否则称为非强连通图,其中极大强连通子图称为强连通分量
可以知道如果遍历整个图,就需要对所有连通块(连通分量和强连通分量)进行遍历。基本思想就是在遍历的过程中,将经过的顶点设置为已遍历。
实现代码(C++)
基于上一篇图的构建,我们主要实现一下DFS核心代码
//DFS顶点void DFS(int v){ //邻接表 cout<