Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过BFS解决8字难题_Java_Breadth First Search_Sliding Tile Puzzle - Fatal编程技术网

Java 通过BFS解决8字难题

Java 通过BFS解决8字难题,java,breadth-first-search,sliding-tile-puzzle,Java,Breadth First Search,Sliding Tile Puzzle,我听说8字谜问题可以通过BFS解决,但我不知道如何解决。我想知道我需要从这样的板上获得的中间步骤: 3 1 2 6 4 5 0 7 8 到 BFS搜索的中间步骤是否为“级别” 顺便说一下,这是基本的家庭作业,我不关心最优性 这几乎是任何BFS搜索的模板 function next_boards(board) yields a set of reachable in one move from the current board queue = [start_board] while

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

3 1 2
6 4 5
0 7 8

BFS搜索的中间步骤是否为“级别”


顺便说一下,这是基本的家庭作业,我不关心最优性

这几乎是任何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。

这几乎是任何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。

是的,基本上使用FIFO队列并将每个节点扩展到每个可能的下一个节点。如果我没有弄错的话,在最坏的情况下,8-puzzle可能需要扩展近一百万个节点,因此请确保您的状态对象很小,或者允许虚拟内存增长,以避免内存错误。一般情况下,扩展的节点数应大于100K。是的,基本上使用FIFO队列,将每个节点扩展到每个可能的下一个节点。如果我没有弄错的话,在最坏的情况下,8-puzzle可能需要扩展近一百万个节点,因此请确保您的状态对象很小,或者允许虚拟内存增长,以避免内存错误。平均情况下,扩展的节点数应大于100K。