应用广度搜索BFS和深度搜索DFS解决八数码问题,广度搜索和深度搜索都是盲目搜索,相关理论知识,算法过程:问题求解:状态空间图和盲目搜索。
参考:7种方法求解八数码问题
Python实现A*算法解决N数码问题
1.八数码问题描述
在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字。棋盘中留有一个空格,空格用0来表示。空格周围的棋子可以移到空格中(空格上下左右移动)。要求解的问题是:给出一种初始布局(初始状态设为283104765)和目标布局(目标状态设为123804765),找到一种最少步骤的移动方法,实现从初始布局到目标布局的转变。
2.Python实现
首先明确初始状态,目标状态,操作集合,定义OPEN表用于存放待扩展节点:
# Initialization
# Initial State and Goal State
InitS0 = [[2, 8, 3], [1, 0, 4], [7, 6, 5]]
GoalS = [[1, 2, 3], [8, 0, 4], [7, 6, 5]]
# Set of Operations
Operations = [[-1, 0], [0, -1], [1, 0</