通过BFS解决8难题

时间:2009-12-10 02:18:35

标签: java breadth-first-search 8-puzzle

我听说过8-puzzle问题可以通过BFS解决,但我不明白怎么做。我想知道我需要从这样的板上得到的中间步骤:

3 1 2
6 4 5
0 7 8

1 2 3
4 5 6
7 8 0 

BFS搜索中的中间步骤是“级别”吗?

顺便说一下,这是基本的功课,我不关心最优性。

1 个答案:

答案 0 :(得分:4)

这几乎是任何BFS搜索的模板

function next_boards(board)
   yields a set of reachable in one move from the current board

queue = [start_board]

while true:
   current = queue.pop()
   if current = goal: break

   queue.push for all next_boards(current)

请注意,我们没有像检查周期或任何事情那样做任何事情。如果是的话,将队列更改为堆栈,然后获得DFS。