eightdigitalproblem.docVIP

  • 5
  • 0
  • 约8.88千字
  • 约 13页
  • 2016-09-21 发布于重庆
  • 举报
eightdigitalproblem

八数码问题本文描述了八数码问题,对该问题进行了形式化和可解性判定解八数码问题实际上就是找出从初始状态到达目标状态所经过的一系列中间过渡状态数码问题一般使用搜索法来解。搜索法有度优先搜索法、深度优先搜索法、A*算法等。这里通过用搜索法解八数码问题。分析了使用搜索算法时的性能,Abstract This paper describes eight digital questions, about this problem formalized and existence judgement. Learned that solution is to find eight digital problems actually from initial state to reach a target state a series of intermediate intermediate state through. Eight digital problems generally use search method for solutions. Common search method has breadth first search method, depth first search method, A *algo- rithm, etc. Here A * search method by using digital problem solving eight. Analyzed the use of A * search algorithm, the performance of the search is A general echanism of solving the problem, which constitute A kind of artificial intelligence system, its framework state space method constitute the basis of artificial intelligence method. Key words: eight digital state search 朗读 显示对应的拉丁字符的拼音 字典 要求解决的问题是:给出一个初始状态和一个目标状态,找出一种从初始转变成目标状态的移动棋子步数最少的移动步骤。数码问题也称为九宫问题。在3×3的棋盘,摆有八个棋子,每个棋子上标有1至8的某一数字,不同棋子上标的数字不相同并用0表示空格。棋盘上还有一个空格,与空格相邻的棋子可以移到空格中。棋子移动后,状态就会发生改变。八数码问题的一个状态就是八个数字在棋盘上的一种放法。 8 3 1 6 4 7 5 1 2 3 8 4 7 6 5 思路分析 2.1.搜索算法基类 1.八数码问题的状态表示 八数码问题的一个状态就是八个数字在棋盘上的一种放法。每个棋子用它上面所标的数字表示,并用0表示空格,这样就可以将棋盘上棋子的一个状态存储在一个一维数组p[9]中,存储的顺序是从左上角开始,自左至右,从上到下。也可以用一个二维数组来存放。 结点 搜索算法中,问题的状态用结点描述。结点中除了描述状态的数组p[9]外,还有一个父结点指针last,它记录了当前结点的父结点编号,如果一个结点v是从结点u经状态变化而产生的,则结点u就是结点v的父结点,结点v的last记录的就是结点u的编号。在到达目标结点后,通过last 可以找出搜索的路径。 结点扩展规则 搜索就是按照一定规则扩展已知结点,直到找到目标结点或所有结点都不能扩展为止。 八数码问题的结点扩展应当遵守棋子的移动规则。按照棋子移动的规则,每一次可以将一个与空格相邻棋子移动到空格中,实际上可以看作是空格作相反移动。空格移动的方向可以是右、下、左、上,当然不能移出边界。棋子的位置,也就是保存状态的数组元素的下标。空格移动后,它的位置发生变化,在不移出界时,空格向右、下、左和上移动后,新位置是原位置分别加上1、3、-1、-3,如果将空格向右、下、左和上移动分别用0、1、2、3表示,并将-3、3、-1、1放在静态数组d[4]中,空格位置用spac表示,那么空格向方向i移动后,它的位置变为spac+d[i]。空格移动所产生的状态变化,反映出来则是将数组p[]中,0的新位置处的数与0交换位置。 八数码问题的基类 八数码问题的基类及其成员函数的实现如下: #define Num 9 class TEight { public: TEight(){} TEight(char *fname); //用文件数据构造节点 virtual void Search()=0; //搜索 protecte

文档评论(0)

1亿VIP精品文档

相关文档