没有合适的资源?快使用搜索试试~ 我知道了~
首页Java编程实现A*算法完整代码
资源详情
资源评论
资源推荐

Java编程实现编程实现A*算法完整代码算法完整代码
主要介绍了Java编程实现A*算法完整代码,简单介绍了a星算法,然后分享了完整测试代码,具有一定借鉴价
值,需要的朋友可以参考下。
前言
A*搜寻算法俗称A星算法。这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。常用于游戏中
通过二维数组构建的一个迷宫,“%”表示墙壁,A为起点,B为终点,“#”代表障碍物,“*”代表算法计算后的路径
本文实例代码结构:
% % % % % % %
% o o o o o %
% o o # o o %
% A o # o B %
% o o # o o %
% o o o o o %
% % % % % % %
=============================
经过A*算法计算后
=============================
% % % % % % %
% o o * o o %
% o * # * o %
% A o # o B %
% o o # o o %
% o o o o o %
% % % % % % % <
算法理论
算法的核心公式为:F=G+H
把地图上的节点看成一个网格。
G=从起点A,沿着产生的路径,移动到网格上指定节点的移动消耗,在这个例子里,我们令水平或者垂直移动的耗费为10,对
角线方向耗费为14。我们取这些值是因为沿对角线
的距离是沿水平或垂直移动耗费的的根号2,或者约1.414倍。为了简化,我们用10和14近似。
既然我们在计算沿特定路径通往某个方格的G值,求值的方法就是取它父节点的G值,然后依照它相对父节点是对角线方向或
者直角方向(非对角线),分别增加14和10。例子中这
个方法的需求会变得更多,因为我们从起点方格以外获取了不止一个方格。
H=从当前格移动到终点B的预估移动消耗。为什么叫”预估“呢,因为我们没有办法事先知道路径的长度,这里我们使用曼哈顿
方法,它计算从当前格到目的格之间水平和垂直
的方格的数量总和,忽略对角线方向。然后把结果乘以10。
F的值是G和H的和,这是我们用来判断优先路径的标准,F值最小的格,我们认为是优先的路径节点。
实现步骤
算法使用java写的,先看一看节点类的内容
package a_star_search;
/**
* 节点类
* @author zx
*
*/
public class Node {
private int x; //x坐标
private int y; //y坐标
private String value; //表示节点的值
















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0