游戏中的AI---寻路算法A* [1](上篇 Dijkstra算法铺垫)

本文深入探讨了A*算法的原理与应用,通过对比Dijkstra算法,详细解析了A*算法如何高效解决寻路问题。文章通过实例图解算法流程,并提供了C++代码实现,适合初学者和开发者参考。

0.简介

网上A*算法介绍已经很多很多了,不过我作为学习和实现,我还会把我的经历记录下来。

1.算法简介

A*算法,听到这个算法后,很难直接判断出这个算法是解决什么问题,这是解决寻路问题的,为什么叫A*?,据考证,最早是有A1,A2算法,后来发展了更优秀的算法就叫A*了,应该和B语言,C语言,C++的叫法类似吧。

2.算法详细介绍

现在进入正题,学习A*算法之前就先理解 一些迪杰斯特拉最短路径算法,首先简述一下Dijkstra算法流程。文字不太好叙述,画图的话用软件画比较不方便,所以我采用手画图,方便快捷。

图1 例子图1

图1是例举的一个图。

在往下继续前,思考一个问题,假如从A点开始,那么找到与A连接的最短的边e,这条边另外一头与某点X相连,那么e是不是X到A的最短路径,答案:是。因为我们无法找到不走e并且还比e更短的路径了(没有负权值),因为此时e就是让X到A最短的路径。在知道了这个前提之后,我们将这个理论简单命名为理论S,方便后面叙述,继续往下看。

图2 例子图2

图2中少

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值