A*算法的JAVA实现
2016-08-23
0 0 0
暂无评分
其他
如何获取积分?
本实验使用JAVA编写实现,是Eclipse工程,代码在src文件夹下。整个工程可以直接Import进Eclipse中测试。
本实验设计的A*算法是在一个有边界、有不可跨越地形的方格阵中,给出起始方格和终点方格,在其中进行寻路的算法。
含有三个代码文件,其中Map.java包含用于寻路的地图的数据结构和方法。Node.java包含地图每个方格的数据结构和方法。A8.java是主类,包含A*的具体实现相关的函数、子函数和数据结构。
地图的详细信息保存在Map.txt文件中,文件内已经有一个用于调试的规模为7*5的地图样例,同样支持其他任意符合格式的地图。而起终点信息是需要在开始运行前手动输入的。
地图文件Map.txt的格式是:第一行是宽m(格数),第二行是高n(格数),之后各行是按从(1,1)-》(1,n)-》(2,1)-》。。。-》(m,n)的顺序保存的单元格信息。其中0表示可通过地形,1表示不可通过地形。
在本实验中,每次递归扩展仅限于位于父单元格正上、正下、正左、正右的四个单元格,扩展时的F值检查顺序为右、下、左、上。如有其它要求可以通过修改surround数组的大小和处理方式来修正。
在本实验中,H的计算使用简单的“横向距离+纵向距离”估算,如有其它要求,可以通过修改A8.java中的CalAllH方法实现。
本实验的终止条件是OPENLIST被清空(无可用路径)或CLOSELIST中检查到终点格(有路径),这时可以根据各节点内保存的父节点信息逆推出完整路径。
本实验设计的A*算法是在一个有边界、有不可跨越地形的方格阵中,给出起始方格和终点方格,在其中进行寻路的算法。
含有三个代码文件,其中Map.java包含用于寻路的地图的数据结构和方法。Node.java包含地图每个方格的数据结构和方法。A8.java是主类,包含A*的具体实现相关的函数、子函数和数据结构。
地图的详细信息保存在Map.txt文件中,文件内已经有一个用于调试的规模为7*5的地图样例,同样支持其他任意符合格式的地图。而起终点信息是需要在开始运行前手动输入的。
地图文件Map.txt的格式是:第一行是宽m(格数),第二行是高n(格数),之后各行是按从(1,1)-》(1,n)-》(2,1)-》。。。-》(m,n)的顺序保存的单元格信息。其中0表示可通过地形,1表示不可通过地形。
在本实验中,每次递归扩展仅限于位于父单元格正上、正下、正左、正右的四个单元格,扩展时的F值检查顺序为右、下、左、上。如有其它要求可以通过修改surround数组的大小和处理方式来修正。
在本实验中,H的计算使用简单的“横向距离+纵向距离”估算,如有其它要求,可以通过修改A8.java中的CalAllH方法实现。
本实验的终止条件是OPENLIST被清空(无可用路径)或CLOSELIST中检查到终点格(有路径),这时可以根据各节点内保存的父节点信息逆推出完整路径。
java
算法
实现
相关源码推荐
使用Java开发Android AOA Android开放式附件
0
0
暂无评分
VPN源码加速器
0
0
暂无评分
VPN源码
0
0
暂无评分
springboot校园招聘系统
0
0
暂无评分
java智能二维码门禁管理系统
0
0
暂无评分
暂无评论