基于A*算法的复杂权值自寻路贪吃蛇(伪)
来源:互联网 发布:电魂网络新游戏 编辑:程序博客网 时间:2024/05/13 09:25
! 没写完,先别看T.T
贪吃蛇的寻路问题是最简单的一类路径搜索问题, 在我之前的博客中,对于单一路径权值、单一目标、且目标未知的贪吃蛇寻路问题我已经用BFS解决了。但是,我们的终极目标是让蛇可以根据自己的喜好寻找食物,这个时候,就该A*出马了。
算法思路是先使用广度优先搜索将地图中所有的“可能的食物”搜索出来后,使用A*算法进行路径权值评估,最后与所得到的食物权值进行性价比排序,最后得到一个获取最佳食物的最佳路径。
注:本文偏新手向,如有错漏请多指教
1. 基础知识与世界观设定 :)
1. A*算法
在使用A*算法解决问题之前,我们得知道大名鼎鼎的A*算法是啥。其实网上关于A*的教程已经很多了,我这里不再具体细致的说,读者只需要了解以下几点A*的特点即可:
- A*的核心在于设计权重判断函数,合理选择nextstep,这也为我们的多权重自搜索提供了算法基础;
- 相较于BFS来说,A*是一种DFS算法;
- A*是一种已知目标的路径搜索算法,在目标未知时,其算法效率与BFS、DFS等算法近似;
2. 世界观设定
在本文标题中,贪吃蛇的后边有个(伪)字,意思是我们的主角并不仅仅是可爱的蛇,而可以是任何的动物。举个栗子,在一个森林里,有爱吃萝卜的兔子,爱吃青草的羊,还有爱吃兔子的狐狸,和爱吃羊的老虎。对于不同的动物来说,每一种食物的吸引力是不一样的,我们通过权值来对吸引力作出量化。因此,有可能会出现以下情况:森林里没有萝卜的时候,兔子也会选择去吃草,或者森林里没有羊的时候,老虎也会吃兔子,因为这是当前状态下兔子和老虎维持生存的最佳选择。对于我们的算法而言,就可以抽象为一个权重选择的问题,一方面是路径的权重选择(路径行走的难度),另一方面就是得到的食物与路径难度之间的性价比问题,解决了这两个问题,动物们就可以选择最佳的食物,并以最短最优的路径抵达食物了。
那么,我们的世界架构就很清晰了。我把这个世界称作
2. 系统配置
0 0
- 基于A*算法的复杂权值自寻路贪吃蛇(伪)
- 智能寻路贪吃蛇系列之 贪吃蛇AI算法的优化
- A*寻路算法伪代码
- 基于python的贪吃蛇
- 贪吃蛇的算法分析
- 【游戏算法之贪吃蛇】我想的贪吃蛇算法
- 基于单片机的贪吃蛇游戏
- 基于控制台的贪吃蛇小游戏
- 基于c语言的贪吃蛇游戏
- 基于Qt 的贪吃蛇实现
- 基于JS、canvas的小游戏--贪吃蛇
- 贪吃蛇的算法分析(1)
- 贪吃蛇的算法分析(2)
- 贪吃蛇的算法分析(3)
- 贪吃蛇的算法分析(4)
- 贪吃蛇的算法分析(5)
- 贪吃蛇的算法分析(1)
- 贪吃蛇的算法分析(2)
- mysql 5.6.35 源码安装
- 循环语句
- Linux进程间通信——信号量
- TCP传输小数据包效率问题(译自MSDN)
- 使用RecyclerView创建数据列表
- 基于A*算法的复杂权值自寻路贪吃蛇(伪)
- Pandas核心数据结构
- Linux学习——用户信息文件
- hdu 4336 Card Collector (概率与期望+状压DP)
- MapReduce向Map函数传递参数: Configuration类
- 异常: java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ListOrderedMap 解决方法
- 第二次上机作业
- js的arguments
- vs2012 编译jsoncpp和使用jsoncpp lib出现的问题