深度优先搜索算法DFS.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
深度优先搜索算法DFS.doc

深度优先搜索算法DFS1.首先选定图的类别(有向图、无向图),再选定图的存储结构,根据输入的顶点或者边建立图;并把相应的邻接表或者邻接矩阵输出; 2.根据已有的邻接矩阵或邻接表用递归方法编写深度优先搜索遍历算法,并输出遍历结果; ?[dfs.rar] - 深度优先搜索算法解决八码难题 ?[Draw1Doc.rar] - 简单的绘图程序,能画点,直线,多边形等,比较简单 和宽度优先搜索类似,深度优先在搜索过程中也为结点着色以表示结点的状态。每个顶点开始均为白色,搜索中被发现时置为灰色,结束时又被置成黑色(即当其邻接表被完全检索之后)。这一技巧可以保证每一顶点搜索结束时只存在于一棵深度优先树上,因此这些树都是分离的。 除了创建一个深度优先森林外,深度优先搜索同时为每个结点加盖时间戳。每个结点v有两个时间戳:当结点v第一次被发现(并置成灰色)时记录下第一个时间戳d[v],当结束检查v的邻接表时(并置v为黑色)记录下第二个时间截f[v]。许多图的算法中都用到时间戳,他们对推算深度优先搜索进行情况是很有帮助的。 下列过程DFS记录了何时在变量d[u]中发现结点u以及何时在变量f[u]中完成对结点u的检索。这些时间戳为1到2|V|之间的整数,因为对每一个v中结点都对应一个发现事件和一个完成事件。对每一顶点u,有 d[u]f[u] (1) 在时刻d[u]前结点u为白色,在时刻d[u]和f[u]之间为灰色,以后就变为黑色。 下面的伪代码就是一个基本的深度优先搜索算法,输人图G可以是有向图或无向图,变量time是一个全局变量,用于记录时间戳。 procedure DFS(G); begin 1 for 每个顶点u∈V[G] do begin 2 color[u]←White; 3 π[u]←NIL; end; 4 time←0; 5 for 每个顶点u∈V[G] do 6 if color[u]=White 7 then DFS_Visit(G,u); end; procedure DFS_Visit(G,u); begin 1 color[u]←Gray; Δ白色结点u已被发现 2 d[u]←time←time+1; 3 for 每个顶点v∈Adj[u] do Δ探寻边(u,v) 4 if color[v]=White then begin 5 π[v]←u; 6 DFS_Visit(G,v); end; 7 color[u]←Black; Δ完成后置u为黑色 8 f[u]←time←time+1; end; 图2说明了DFS在图1所示的图上执行的过程。被算法探寻到的边要么为阴影覆盖 (如果该边为树枝),要么成虚线形式 (其他情况)。对于非树枝的边,分别标明B(或F)以表示反向边、交叉边或无向边。我们用发现时刻Z完成时刻的形式对结点加盖时间戳。 图1 一个有向图图 图2 深度优先搜索算法DFS在有向图图1上的执行过程 Procedure DFS(ga,g,i:integer); Var j:integer; Begin Write(ga.vex.data[i]); Visited[i]:=true; {访问顶点一出发点} For i:=1 to ga.vex.;ast do If (ga.mx[I,j]=1) and (not visited[j]) Then DFS(ga,j); {从新顶点出发} End. Procedure DFS1(gb,g,i:integer); Var p:link; Begin Write(gb.adjlist[i].first); Visited[i]:=true; {访问顶点} P:= gb.adjlist[i].first; {取顶点的边表指针} While pnil do begin If not visited[p^.adjvex] Then DFS1(gb,p^.adjvex); {从下一点出发搜索} P:=p^.next; End. h g f e d c b a

文档评论(0)

gshbzl + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档