DFS深度优先搜索

来源:互联网 发布:centos 7 企业邮箱 编辑:程序博客网 时间:2024/05/01 19:03

深度优先搜索是一个递归的过程。

它从图中某个满足要求的顶点v出发,访问此节点并将访问位更改,然后从v的未被访问的邻接点出发,深度优先遍历图,直到图中所有和v有路径相通的顶点都被访问到。

DFS函数的意义依据情况而定,比如说要在图中搜索是否有某条路径,将返回值设为boolean;另外,DFS时还经常为每个结点盖上一个时间戳,从起始点出发达到某个邻接点所需要的最大步数,则利用一个int []path的数组保存遍历遇到的最大值等等。

深搜更适合在图中进行目标确定的查找。

遍历过程如下:

 DFSfunc(){//DFS起始的接口函数   boolean[][] flag=new boolean[][];//访问标记的数组,指明一个顶点是否被访问过。   for(any顶点v in {顶点需要满足的条件}){//对满足条件的顶点进行DFS   if(flag(v) == false) {//对未访问过的顶点调用DFS,若是连通图,只会执行一次   DFS(map,v,flag);//DFS为所要搜索的图,一般为矩阵。   }   }   }   def: DFS(map,v,flag){//DFS递归算法   if(v超出边界条件)//比如矩阵越界或访问位为true等条件   return;  flag(v) =true;//将v的访问位置为已访问  if(满足条件){  do something;//像是树的前序遍历。  }  for(any v1  :  顶点v的邻接点){//递归调用DFSif(flag(v1) == false){DFS(map,v1,flag);}}




0 0
原创粉丝点击