(一)深度优先搜索遍历算法
深度优先搜索的过程
深度优先搜索所遵循的搜索策略是尽可能“深”地搜索图。在深度优先搜索中,对于最新发现的节点,如果它还有以此为起点而未搜索的边,就沿此边继续搜索下去。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v有那条边的始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被发现为止。即
⒈以给定的某个顶点V0为起始点,访问该顶点;
⒉选取一个与顶点V0相邻接且未被访问过的顶点V1,用V1作为新的起始点,重复上述过程;
⒊当到达一个其所有邻接的顶点都已被访问过的顶点Vi时,就退回到新近被访问过的顶点Vi- 1,继续访问Vi-1尚未访问的邻接点,重复上述搜索过程; ⒋直到从任意一个已访问过的顶点出发,再也找不到未被访问过的顶点为止,遍历便告完成。
这种搜索的次序体现了向纵深发展的趋势,所以称之为深度优先搜索。
深度优先搜索算法描述:
程序实现有两种方式--递归与非递归。 一、递归
递归过程为:
Procedure DEF-GO(step) for i:=1 to max do
if 子结点符合条件 then 产生新的子结点入栈;
if 子结点是目标结点 then 输出 else DEF-GO(step+1); 栈顶结点出栈; endif; enddo; 主程序为: Program DFS; 初始状态入栈; DEF-GO(1);
二、非递归
Program DEF(step); step:=0; repeat
step:=step+1; j:=0;p:=false repeat j:=j+1;
if 结点符合条件 then
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新人文社科广度优先搜索全文阅读和word下载服务。
相关推荐: