2015-05-05 43 views
-5

我一直在努力解決迷宮和輸出路徑從開始到結束。無論我做什麼,它都不會100%真正起作用。它設法回溯到整個迷宮,就像它應該找到結尾......但實際上只輸出它應該採取的路徑是行不通的。它適用於一些生成的迷宮,但不是一般的。它還包括一些死衚衕。迷宮算法,實際工作

問題是我可能已經嘗試了10種不同的DFS算法,但都沒有成功。令人困惑的是,許多不同的網站似乎都有不起作用的算法,我幾乎從字面上實現了它們。

如果有人可以給出一個實際的工作僞代碼,說明如何使用顯示相關路徑的堆棧編寫簡單的迷宮求解器,那將會非常友善。經過20-25小時的試驗後,我不認爲我會再到任何地方。

+2

請選擇您的嘗試之一併在此發佈。然後我們可以一起調試它:-) – Kevin

+0

你的問題有點令人困惑,因爲它似乎認爲是作品「喜歡它應該」,但也「從未真正有效100%」。也許你期望的一個小例子,以及你實際得到的東西在這裏會有所幫助。 – gilleain

+0

ops編輯傳入 –

回答

0

不完全是僞代碼,但它應該工作

define node: {int id} 
define edge: {node a , b ; int weight (default=1)} 

define listNeighbours: 
input: node n 
output: list of neighbours 

define dfs: 
input: list nodes, list edges, node start, node end 
output: list path 

bool visited[length(nodes)] 
fill(visited , false) 

list stack 
add(stack , start) 
visited[start.id] = true 

while ! isEmpty(stack) 
    node c = first(stack) 

    if c.id == end.id 
      return stack 

    list neighbours = listNeighbours(c) 
    bool allVisited = true 
    node next 

    for node n in neighbours 
      if visited[n.id] 
       continue 
      else 
       allVisited = false 
       next = n 

     if allVisited 
      pop(stack) 
     else 
      push(stack , next) 

return null 

注:節點的ID始終< =圖中的節點總數和獨特的圖形