我有一份论文作业,我绝不会要求任何代码帮助,只是帮助理解如何解决这个问题。
我们提供最少的材料,而教授只是浏览广度优先搜索的内容。
我们需要通过迷宫找到自己的方式,迷宫就会被创造,你的人每次都会落在一个随机的空间里。
当按下该键时,当前位置被发送到该功能,从那里我们必须使用广度优先搜索来找到最短路径。
现在我从这个搜索算法中理解的是:
我究竟如何解决这类问题?
我们知道开始和结束,而且我们可以轻松获得当前块的所有邻居块。
非常感谢。
答案 0 :(得分:0)
你似乎错过了广度搜索的一些细微差别。
必须在级别
中搜索树或图
这是对的。虽然你不一定会跟踪一组不同的等级,但你可以自然地继续完成下一个等级。
我们需要将路径存储在队列(FIFO)
中
不是真的。您通常将未来节点存储在队列中进行探索,而不是整个路径。如果需要,维护路径是一个额外的问题。
然后找到最终项目的所有路径中的最短路径
在具有均匀边缘权重的图形中,这是不必要的。您找到的第一条路径最短。 (请注意,对于BFS来说,均匀边缘权重的要求是正确的)
目标节点的BFS的一般代码如下所示:
q := new Queue
q.enqueue(start)
goal_found := false
while( q is not empty )
n := q.dequeue()
if n is goal then
goal_found := true
break
for each neighbour v of n
q.enqueue(v)
if(goal_found)
//do something (success)
else
//do something else (failure)
如果您希望跟踪遍历的路径,可以添加到此骨架中,还可以防止在路径上加倍(在无向图中这对于确保终止非常重要),防止重复处理节点一般(必要时如果有周期而你想终止),跟踪长度等等。但这是它的基本框架。