0

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

3 1 2
6 4 5
0 7 8

1 2 3
4 5 6
7 8 0 

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

顺便说一句,这是基本功课,我不在乎最优性。

4

1 回答 1

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。

于 2009-12-10T02:25:46.297 回答