最新版本参考(含代码实现):【机器人】路径规划 - 图解A* 搜索算法 - 知乎

A* 算法是启发式搜索算法,是根据Dijkstra算法改进而来。

问题引入

如下图所示,S为起始(start)节点,G为目标(goal)节点。

  • 节点之间连线是两点的路径长度,如A到E的路径长度c(A,E) = 9。
  • 节点旁的h值时当前节点到达目标节点(G)的预估值,如h(A)=15, 表示从当前点A到达目标点G的估计路径长度为15,此处h(x)即为启发函数,启发函数的设计有很多方法,具体可参考链接,此处不再扩展。
  • 从起点S到达当前节点x的路径长度表示为g(x) 。
  • 从起点S到达目标G并经过点x的估计距离长度表示为f(x) = g(x) + h(x),该公式是A*算法的核心公式。
  • A*算法通过不断的选择估计距离f最小的节点,逐渐构建最短路径。

逻辑流程

创建两个集合OPEN集,CLOSED集,算法核心是从OPEN集中选择最优(f值小最优,或f相同时,h小的更优)的节点到CLOSED集中,然后将其后继节点放入OPEN集中,然后重复操作选取最优节点,直到到达目标,或者OPEN为空为止。最后再CLOSED集中根据目标G所包含的前序节点逆序查找最后到达起点S,这个链路的逆序即最优路径,具体流程如下图。

搜索过程

以下是前面网络的搜索过程展开图。

组合块中:

  • 灰色为前序节点
  • 蓝色当前节点x
  • g:起点S到当前节点x的路径距离。
  • h:当前节点x到终点G的估计距离
  • f:起点S途径x到达终点G的估计距离,即 f = g + h
  • 绿色框为当前OPEN集合中的最优节点
  • 红色框表示当前OPEN集合中需要被删除的节点

在OPEN、CLOSED中每一行表示一次完整迭代完成时两集合中的节点集合。

最后的最优路径是:S->B->F->k->G

注:当两个节点f相同时,h小的更优

更多阅读

【机器人】 D*算法-动态路径规划

【算法】图解A* 搜索算法相关推荐

  1. 算法(三):图解广度优先搜索算法

    算法(三):图解广度优先搜索算法 算法简介 广度优先搜索算法(Breadth First Search),又称为"宽度优先搜索"或"横向优先搜索",简称BFS: ...

  2. 《算法图解》读书笔记—像小说一样有趣的算法入门书

    前言 学习算法课程的时候,老师推荐了两本算法和数据结构入门书,一本是<算法图解>.一本是<大话数据结构>,<算法图解>这本书最近读完了,读完的最大感受就是对算法不再 ...

  3. 算法图解第六章笔记与习题(广度优先搜索)

    算法图解第六章笔记与习题(广度优先搜索) 文章目录 算法图解第六章笔记与习题(广度优先搜索) 6.1 图(graph) 6.2 广度优先搜索 6.3.1 查找最短路径 6.3.2 队列 6.4 实现图 ...

  4. 《算法图解》学习笔记(六):图和广度优先搜索(附代码)

    欢迎关注WX公众号:[程序员管小亮] python学习之路 - 从入门到精通到大师 文章目录 欢迎关注WX公众号:[程序员管小亮] [python学习之路 - 从入门到精通到大师](https://b ...

  5. 读书笔记《算法图解》:像小说一样有趣

    算法图解 正如封面一样所说的一样 "像小说一样有趣的算法入门书",其面的插画一样正诠释了其有趣性. 读完这本书,所以个人觉得这本书适合小白作为 "课外读物"一样 ...

  6. 机器学习入门及基本算法图解

    基本算法 最近在学习神经网络,整理了一些算法,写出来给自己一点交代吧,本人刚入算法没多久,如果有不对的地方,请指出来大家一起学习,谢谢. 费曼算法(Feynman algorithm) 将这个算法放在 ...

  7. python算法书pdf_Python算法很难吗?python神书《算法图解》PDF电子版分享给你!

    许多小伙伴后台私信柠檬说,python算法让自己很头疼,有没有可以让算法像小说一样有趣的书籍资料呢?看这里吧!柠檬为大家找到了这本<算法图解>的PDF电子版!让你在学习python的路上变 ...

  8. 与word2vec_Word2vec算法图解(一)

    今天的主题是:Word2vec算法图解(一) 一.word2vec算法简介 Sikp-grams(SG) 给定中心词去预测上下文单词. Continuous Bag of Words(CBOW) 给定 ...

  9. c语言a 寻路算法,JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例

    本文实例讲述了JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法.分享给大家供大家参考,具体如下: 完整实例代码如下: A*寻路算法 #stage { border: 1px solid lig ...

最新文章

  1. c++ 怎么读取rtf文件_最全集合!Word、PPT、Excel、PDF文件转换方法大全!建议收藏...
  2. Tkinter的entry组件
  3. SpringMVC获取Request,Response, Session对象
  4. 以数据为核心的SOC3.0时代到来
  5. 基于Node的PetShop,RESTful API以及认证
  6. edusoho linux 500错误,EduSoho网校系统如何处理500 Internal Server Error? - EduSoho官网
  7. POST请求转换为其他请求失效 input type=“hidden“ name=“_method“ value=“put“无效
  8. 【Excel】统计不重复数据的个数,设置单元格不允许出现重复数据
  9. TikZ绘图示例——尺规作图:线段的任意等分
  10. 微博开放第三方协议 媒体机构能重掌话语权吗?
  11. 中国水稻种子行业市场供需与战略研究报告
  12. UI Maker,界面设计sample
  13. php 回显,PHP实时回显 实时输出结果的方法 实时反馈结果到浏览器
  14. 【干货】前端开发者最常用的六款IDE
  15. Freemarker - 根据模板动态生成word文档
  16. vue 使用three.js 实现3D渲染
  17. Java+spring 基于ssm的幼儿园管理系统程序#毕业设计
  18. NDK-r25交叉编译qemu-7.0.0 第651步报错
  19. java redis实现抢购_【抢购/秒杀】redis实现高并发下的抢购/秒杀功能
  20. JDBC 学习笔记3

热门文章

  1. 统一gis平台地图服务发布流程及使用
  2. 才云 Caicloud 开源 Nirvana:让 API 从对框架的依赖中涅槃重生
  3. java中slacc意思,家用联通光纤开启IPv6
  4. 三维地图app的发展,离不开Infortrend GSe Pro 高效NAS共享
  5. unix/linux 经典书籍推荐
  6. scrollTo 平滑滚动
  7. nodejs require/import导包报错以及解决方法,chalk-animation库使用
  8. Box-constrained L-BFGS 相关知识拓展
  9. 桥接路由器总是掉线_无线路由器桥接完整教程(不会断网)【图文详解】
  10. 白鹭引擎的微信分享接口