2014-02-19 53 views
0

我正在查看Depth-Limited Search的僞代碼實現,但我無法理解它。深度受限搜索遞歸僞代碼

僞代碼:

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的重複的算法中每一個繼任者的原因。有人能和我一起跑過這個嗎?一些圖形解釋將是很好的哈哈。

我打算在此期間查看其他來源。謝謝閱讀!

+2

看起來像僞代碼可能有錯誤。我認爲測試(否則,如果深度[節點] =限制,然後返回截止)應該是(否則如果0 ==限制,然後返回截止) –

回答

1

該僞代碼似乎是錯誤的。 (如果節點深度/限制值跳過彼此,實際上可能不會遇到基本情況 - 在每次遞歸調用中同時增加和減少)

遞歸情況是用limit - 1寫的,所以基本情況下可以達到(而不是「限制」,認爲「剩餘」)。

但是,限制的基本情況是if Depth[node] = limit then return cutoff。大衛陳的建議後,它應該是if 0 = limit then return cutoff,這將與遞歸情況下的limit - 1一致。

或者,只需在遞歸情況下傳遞limit,並保留當前的基本情況。

+0

是的,我有那一部分。但我想知道它爲搜索做了什麼。我想知道它在高層如何做,如果沒有意義。我看了一下wiki的僞代碼,它看起來很簡單......感謝迄今爲止的幫助! – user1846359

+0

它「限制深度」。 – user2864740