寻路
文章平均质量分 87
[奋斗不止]
这个作者很懒,什么都没留下…
展开
-
AStar(A*) 算法
A*算法是一种静态网格中求解最短路径最有效最直接的搜索方法,估计值与实际值越接近,估价函数取得就越好。除了A*算法还有很多其他算法,当然有很多寻路算法比A*算法寻路快很多倍,在此主要说A*算法,其他算法不做过多介绍。A*算法公式为 : f ( n ) = g ( n ) + h ( n ).其中 f(n) 是从初始点经由节点n到目标点的估价函数,g(n) 是在状态空间中从初始节...原创 2014-12-28 23:09:49 · 3729 阅读 · 1 评论 -
Dijkstra 寻路算法
Dijkstra 寻路算法Dijkstra 是解决单源最短路径问题的算法,是贪婪算法的经典例子,是广度优先搜索算法,是一种发散式的搜索,计算源点(起点)到所有节点的最短路径,解决的是有权图中最短路径问题(注意:权值不能为负)。时间复杂度和空间复杂度都比较高。优点:当目标不确定时,DijkStra算法是更好的选择。示例:假如有N个目标,只需要找到一个路径最近的目标,DijkStra算法会从源点开始,一层一层不断扩大范围的搜索,则最先被搜索到的目标即为路径最近的最优选择。如果使用 AStar,JPS算法原创 2021-07-14 19:22:01 · 1897 阅读 · 3 评论 -
D-Star 寻路算法
D*算法:D* 算法”的名称源自 Dynamic A Star,最初由Anthony Stentz于“Optimal and Efficient Path Planning for Partially-Known Environments”中介绍。它是一种启发式的路径搜索算法, 适合面对周围环境未知或者周围环境存在动态变化的场景。原创 2024-03-14 14:51:08 · 1125 阅读 · 0 评论 -
JPS(jump point search)寻路算法
JPS(jump point search)寻路算法JPS(jump point search)跳跃点寻路算法是对AStar寻路算法的一个改进。AStar 算法在扩展节点时会把所有相邻的节点考虑进去,当地图比较大时,openList 中的节点数量会很多,搜索效率较低。在两点之间没有障碍物时,那么中间的节点对我们来说是没有用的,不希望添加到 openList如下可以看到JPS 算法不是每个节点都紧密连接的,而是跳跃性的或者说只有需要转弯的节点(也叫拐点)才会被考虑,所以叫跳跃点(Jump Poin原创 2021-07-16 12:30:13 · 14271 阅读 · 37 评论 -
JPS+(Jump point search plus)寻路算法
JPS+ 是在 Jps 的基础上对地图进行了预处理,将数据记录在节点上JPS 是运行时计算节点在某个方向上的跳点JPS+ 预处理则是将 每个节点每个方向上的跳点、障碍信息记录,在运行时,不需要经过计算,直接获取某个方向上的跳点,节省大量时间和空间,提升计算速度JPS+ 地图预处理前提条件1:地图必须是静态的,预处理时和运行时地图必须是一样的,不对在运行时添加、删除、修改节点状态2:预处理需要每个节点存储一些数据,对内存占用较大3:预处理需要时间较长,地图内每个节点都要进行数据处理,时间复杂原创 2024-03-19 17:37:53 · 1001 阅读 · 0 评论 -
逃离大迷宫:寻路、回溯算法
逃离大迷宫:寻路、回溯算法在一个 N * M 的网格中,每个格子的坐标为(x, y),从一个entry(迷宫入口) 开始到所有exit(迷宫出口可能有多个)的路径创建一个二维数组 int[][] grid; 作为迷宫数据grid[x][y] == 0 或者 出界的节点 视为路(可走)grid[x][y] == 1 视为障碍物(不可走)思路:利用回溯算法思想和剪枝函数来完成路径搜索1.初始化路径:路径中节点个数为0,从入口格子节点开始,加入到路径中,并记录入口节点已经加入过路径中了。2.获取路径原创 2021-08-04 16:42:09 · 716 阅读 · 0 评论