深度限制搜索递归伪代码

时间:2014-02-19 22:47:24

标签: algorithm search pseudocode depth

我正在查看深度限制搜索的伪代码实现,而我无法理解它。

伪代码是:

Function Recursive-DLS(node, problem, limit)
    cutoff-occurred? = false
    if Goal-Test(problem, State[node]) then return node
    else if Depth[node] = limit then return cutoff
    else for each successor in Expand(node, problem) do
            result = Recursive-DLS(successor, problem, limit-1) 
            if result = cutoff then cutoff-occurred? = true
            else if result != failure then return result        
    if cutoff-occurred? then return cutoff else return failure

我主要是难以理解每个继任者以限制-1重复算法的原因。有人可以和我一起经历这个吗?哈哈有一些图形解释。

与此同时,我会考虑其他来源。谢谢你的阅读!

1 个答案:

答案 0 :(得分:1)

伪代码似乎是错误的。 (如果节点深度/限制值相互跳过 - 在每次递归调用中同时增加和减少,则实际上可能永远不会遇到基本情况。)

递归案例是用limit - 1编写的,因此可以达到基本案例(而不是“限制”,认为“剩余”)。

但是,限制的基本情况是if Depth[node] = limit then return cutoff。根据David Chan的建议,它应该是if 0 = limit then return cutoff,这与递归案例中的limit - 1一致。

或者,只需在递归情况下传递limit并保留当前的基本情况。