- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 深圳市股权有偿资助项目申请指南.doc
- 深圳市腾讯计算机.doc
- 深圳市茶叶流通协会会员登记表.doc
- 深圳市血液中心招考职员面试工作方案.DOC
- 深圳市装饰工程优秀施工班组申报表.doc
- 深圳市装饰工程优秀项目工程师申报表.doc
- 深圳市装饰行业协会专家库专家推荐表.doc
- 深圳市计算信息网络国际联网单位备案表(样表).doc
- 深圳市限制房地产权利登记表.doc
- 深圳市青少年高尔夫巡回赛2010总决赛.doc
- 商社行业2025年投资策略分析报告:产品上行周期黄金机遇.pdf
- 金属行业2025年投资策略分析报告:工业金属篇,莫听穿林打叶声,何妨吟啸且徐行.pdf
- 全球电竞运动行业市场前景及投资研究报告.pdf
- 和铂医药-市场前景及投资研究报告:依托Harbour Mice平台,BD新篇章.pdf
- 证券行业2025年投资策略分析报告:蓄势待发.pdf
- 2025年固定收益投资策略分析报告:风浪未平,蓄势待发,震荡.pdf
- 农林牧渔行业2025年投资策略分析报告:养殖风起,后周期顺势而上.pdf
- 深圳国际-市场前景及投资研究报告-国企优质资源禀赋,物流园转型升级,业绩弹性.pdf
- 汽车行业市场前景及投资研究报告:双轮驱动,智能引领.pdf
- 整车与电池行业板块2025年投资策略分析报告:新技术新领域景气共振,优选板块,结构性机遇.pdf
文档评论(0)