基于A*算法,BFS,DFS解决八数码难题并证明A*算法是解决八数码难题最优的设计和实现

通过比较A*算法,广度优先搜索策略,深度优先搜索策略这三种算法,可以得出结论:
在初始状态为283104765,目标状态为123804765的八数码时,使用A-Star算法,从时间和步骤上都是最优的,并且可以看到:

  • A-Star_Time used: 0.00011650000000007488 共5步
  • BFS_Time used: 0.00011709999999975906 共5步
  • DFS_Time used: 0.0004444000000205506 共1579步

解释一下:
初始状态为283104765代表一个3*3的矩阵,这个矩阵是这样的:
| 2 | 8 | 3 |
| 1 | 0 | 4 |
| 7 | 6 | 5 |

在第4版<<人工智能原理及其应用>>这本书中,八数码的题目中,初始状态即283104765

同理,目标状态为123804765表示的矩阵是这样的:
| 1 | 2 | 3 |
| 8 | 0 | 4 |
| 7 | 6 | 5 |

八数码的问题描述为:在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字。棋盘中留有一个空格,空格用-1来表示。空格周围的棋子可以移到空格中。要求解的问题是:给出一种初始布局(初始状态)和目标布局,找到一种最少步骤的移动方法,实现从初始布局到目标布局的转变。
在这里插入图片描述

好的,有了以上基础,我们就可以开始解决八数码问题了!

猜你喜欢

转载自blog.csdn.net/zbp_12138/article/details/102540170