深度优先搜索算法框架
递归算法:
Program DFS;
Procedure DFS-TRY(i);
For i=1 to maxr do
If 子结点mr符合条件 then 产生的子结点 mr 压入栈;
If 子结点 mr 是目标结点 then 输出
Else DFS-TRY(I+1);
栈顶元素出栈(删去Mr)
Endif
Enddo;
Begin
初始状态入栈;
DFS-TRY(1);
End.
非递归算法:
Program DFS(dep);
Dep:=0;
Repeat
Dep:=Dep+1;
J:=0;p:=false;
Repeat
j:=j+1;
if mr 符合条件 then 产生子结点mr并将其记录;
if 子结点是目标结点 then 输出并出栈
Else p:=true;
else
if j>=maxj then 回溯 else p:=false;
Endif;
Until p=true;
Until dep=0;
其回溯过程如下:
Procedure backtracking;
Dep:=Dep-1;
if dep>0 then 取回栈顶元素 else P:=true;
说明:不同问题的深度优先搜索基本算法是一样的,但在具体处理方法上和编程的技巧上,
不尽相同,甚至会有很大的区别。
本文档为【深度优先搜索算法框架】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。