博舍

DFS深度优先遍历算法简单分析 深度优先算法应用实例分析

DFS深度优先遍历算法简单分析

一般在涉及图论的算法题的时候都会用到遍历有关方面的思想!而DFS也是最常用的一种方法,下面简单地DFS算法作下简单的分析

DFS基本思想:DFS是一个递归的过程(当然也可以不用递归,而且效率更高,但是递归让我们更加容易理解,应用更加方便)也是一个有回退的过程,对于一个无向连通图,访问图中某个顶点v0后,然后访问它的某一个邻接顶点v1,然后再从v1出发,访问v1的未访问过的邻接顶点(需要一个isVisited数组),如此下去,直至到达所有的领接顶点都被访问过。然后回退一步,回到前一次被访问的顶点,看是否还有没有访问的顶点,如果有,则从这个顶点出发,进行向上述的过程一样进行访问,如果没有,则再回退一步,进行类似的访问,直至所有的顶点都被访问为止!

DFS主要的数据结构有邻接表和临街矩阵

邻接矩阵数据结构edge[max][max]

临街矩阵的数据结构vectoredge;或更高级的mapedge;下标为非整型

实现的伪代码:

1.如果图是用邻接表存储

dfs(顶点i){visited[i]=1;//p是i的边链表表头指针while(p非空){if(i顶点对应的另一个顶点没有被访问过,设为k){//递归搜索前要准备的工作的代码在这些dfs(k);//回退过程中,应该在这里写代码!}p=p->next;}

2如果图是用邻接矩阵存储

dfs(顶点i){visited[i]=1;for(j=0;j

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇