机器人第八章 迷宫的搜索算法实现.pptVIP

  • 21
  • 0
  • 约2.55千字
  • 约 24页
  • 2018-05-02 发布于湖北
  • 举报
机器人第八章 迷宫的搜索算法实现

迷宫的搜索算法实现 主 讲:吴 东 本章内容 1、迷宫的构成 迷宫场地 1、迷宫的构成 数据文件 2、迷宫的深度优先搜索 用二元组S=(i,j)表示问题的状态, i表示小球所在的行号,j表示小球所在的列号。 初始状态:(0,1) 目标状态:(6,6) 2、迷宫的深度优先搜索 算符有如下四类: A(i,i+1)表示小球从第i行移到第i+1行; B(i,i-1)表示小球从第i行移到第i-1行; C(i,i+1)表示小球从第i列移到第i+1列。 D(i,i-1)表示小球从第i列移到第i-1列。 2、迷宫的深度优先搜索 算法流程 2、迷宫的深度优先搜索 搜索过程要使用的两个表 2、迷宫的深度优先搜索 为了表示节点,定义如下的结构体: struct point { int row; //行坐标 int column; //列坐标 point* father; //父指针 }; 2、迷宫的深度优先搜索 Open表、Closed表的建立: listpoint* open_list; listpoint* close_list; 2、迷宫的深度优先搜索 起点(即初始状态)的建立: point* start_point = new point; start_point-row = 0; start_point-column = 2; start_point-father = NULL; 2、迷宫的深度优先搜索 后继节点的建立: 2、迷宫的深度优先搜索 已在搜索图G中的节点的判断 使用 maze_data[mazerow*mazecolumn]; 值是1表示在G中,值是0表示不在G中。 2、迷宫的深度优先搜索 例程 3、迷宫的A*搜索 用二元组S=(i,j)表示问题的状态, i表示小球所在的行号,j表示小球所在的列号。 初始状态:(0,1) 目标状态:(6,6) 3、迷宫的A*搜索 算符有如下四类: A(i,i+1)表示小球从第i行移到第i+1行; B(i,i-1)表示小球从第i行移到第i-1行; C(i,i+1)表示小球从第i列移到第i+1列。 D(i,i-1)表示小球从第i列移到第i-1列。 3、迷宫的A*搜索 3、迷宫的A*搜索 搜索过程要使用的两个表 3、迷宫的A*搜索 为了表示节点,定义如下的结构体: struct point { int row; //行坐标 int column; //列坐标 point* father; //父指针 int G; //到当前节点的实际费用 int F; //当前节点的估计费用 }; 3、迷宫的A*搜索 F=G+H 每前进一步付出1的代价,G是走到当前位置要付出的实际代价。 H是当前位置到目标位置的直接距离的平方,即 3、迷宫的A*搜索 Open表、Closed表的建立: listpoint* open_list; listpoint* close_list; 3、迷宫的A*搜索 起点(即初始状态)的建立: point* start_point = new point; start_point-row = 0; start_point-column = 2; start_point-father = NULL; start_point-F = 0 + calculate_h(start_row,start_col); start_point-G = 0; 3、迷宫的A*搜索 例程 补充知识 STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库。 该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。 表的介绍,初始状态、搜索图 表的介绍,初始状态、搜索图 * * 1. 迷宫的构成 2. 迷宫的深度优先搜索 3. 迷宫的A*搜索 入口 出口 maze[mazerow][mazecolumn] = {1,2,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,1,1,1,1,1,1,1,1,1,1,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,1,0,0,1,0,1,1,0,1,0,1}, {1,0,0,0,1,0,0,0

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档