2015-05-05 48 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始终< =图中的节点总数和独特的图形