Java — A*算法(一)

A*算法在许多即时战略游戏(如LOL)中被广泛应用。敌我双方都可以找到一条能到达目的地,且在过程中不和障碍物相撞的路径。

A*算法的思路:

1、首先从开始节点出发,将其放到开放的列表中

2、如果开放列表中有节点,那么继续进行以下过程

3、从开放列表中取出第一个节点,将其作为当前节点。(假设开放列表已经按最小代价排序)

4、获取当前节点的相邻节点,不包括障碍物节点

5、对于每个相邻节点,检查该节点是否在封闭表中。如果不在就用公式F=G+H计算(后面详细注释);

6、将总值存储于相邻节点中,同时把当前相邻节点存储为父节点。使用父节点数据来回溯实际路径

7、将该相邻节点放到开放列表中。把开发列表已到达目标点升序排序。

8、如果没有相邻节点要处理,就把当前节点放入封闭列表中,并从开发列表中移除

9、返回第2步

转载于:https://my.oschina.net/quantou/blog/738074

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值