NecerBac 5级 2010-10-30 深度优先搜索我也是深有其感啊,当年也是就结了很久
以下是我的看法和我的框架,你看看能不能帮到你
深度优先搜索法有两个显著特点 (1)对已产生的结点按深度排序存储,深度大的先得到扩展,即先产生它的子结点; (2)深度大的结点是后产生的,但先得到扩展,即“后产生先扩展”。因此该算法应该用堆栈作为的主要数据结构存储产生的结点:先把产生的数入栈,然后产生栈顶(即深度最大的结点)的子结点。子结点产生完后,出栈(pop)再产生栈顶的子结点。
深度优先搜索算法描述 程序实现有两种方式--递归与非递归。 递归过程为: 两种方式本质上是等价,但两者也时有区别的。 1. 递归方式实现简单,非递归方式较之比较复杂; 2. 递归方式需要利用栈空间,如果搜索量过大的话,可能造成栈溢出,所以在栈空间无法满足的情况下,选用非递归实现方式较好。 其他回答(1)- + 5级 2010-10-30 dfs就是不断向深层扩展 procedure dfs(x:longint); var i,j,k,t:longint; begin if x>深度 then begin 输出结果; exit; end else 枚举与x相连的点j; if j 可扩展 then begin 操作 ; dfs(j); 回溯; end; end;
|
|