Algorithm——A*路径规划算法原理详解
文章目录
- 算法简介
- 算法核心公式(启发函数\代价函数)
- 启发函数\代价函数公式
- 预估距离函数h(n)
- 算法简单实现思路
- (1)已知条件
- (2)待求解量
- (3)代价函数
- (4)实现过程
算法简介
A*算法本质上是一种启发式的搜索算法。
- 启发式: 即有一定的评价指标来引导算法运行,从而尽可能得到最优解。
- 搜索算法: 已知起点和终点,但是过程路径未知,我们要去通过一定的方法(启发式的方法)来找到最优路径的一种算法。
从以上概念可以看出,应用该算法时:
- 已知条件
- 起点位置
- 终点位置
- 待求解量:
- 最优路径(即每个最优路径点的集合)
- 方法:
- 启发式的评价指标(即某个启发函数或叫代价函数,就是该算法的核心公式)
算法核心公式(启发函数\代价函数)
启发函数\代价函数公式
- f(n) 是节点n的综合代价。当我们选择下一个最优的节点时,我们总会选取综合代价最小的节点。
- g(n) 是节点n距离起点的代价。
- h(n) 是节点n距离终点的估计代价。
A*算法通过代价函数来计算每个节点的代价,从而选择代价最小的那一个节点进行移动。
预估距离函数h(n)
关于距离的计算,主要有两种方法:
欧式距离,即物体移动时可以朝八个方向移动,其计算公式如下:
曼哈顿距离,即物体移动时只能朝四个方向移动,不能斜向移动,其距离计算公式如下:
一般采用欧式距离更为灵活,可以根据自己的需要进行选择。
算法简单实现思路
(1)已知条件
起点位置(S)终点位置(E)
(2)待求解量
周围下一个潜在最优节点的代价值(根据代价函数算得)
(3)代价函数
f(n) = g(n) + h(n)
(4)实现过程
这里采用欧式距离进行实现:
1:初始化操作:- 起点、终点坐标- 地图尺寸- 障碍物个数和位置2:寻路主程序(循环,直至到达终点):(1)计算当前点周围的八个点的代价值f(n)(2)选择代价值最小的点作为下一个点(如果是障碍物则忽略)
参考文章:
- 路径规划之 A* 算法
- 利用Python实现A*算法路径规划
Algorithm——A*路径规划算法原理详解相关推荐
- Dijkstra 路径规划算法原理详解及 Python 代码实现
荷兰数学家 E.W.Dijkstra 于 1959 年提出了 Dijkstra 算法,它是一种适用于 非负权值 网络的 单源最短路径算法,同时也是目前求解最短路径问题的理论上最完备.应用最广的经典算法 ...
- CRF(条件随机场)与Viterbi(维特比)算法原理详解
摘自:https://mp.weixin.qq.com/s/GXbFxlExDtjtQe-OPwfokA https://www.cnblogs.com/zhibei/p/9391014.html C ...
- 机器学习,深度学习基础算法原理详解(图的搜索、交叉验证、PAC框架、VC-维(持续更新))
机器学习,深度学习基础算法原理详解(图的搜索.交叉验证.PAC框架.VC-维.支持向量机.核方法(持续更新)) 机器学习,深度学习基础算法原理详解(数据结构部分(持续更新)) 文章目录 1. 图的搜索 ...
- XGBoost核心算法原理详解
XGBoost算法原理详解 前言 boosting和bagging的区别 bagging boosting 提升树-基于残差的训练 学习路径 构造目标函数 Additive Training(叠加式的 ...
- TOPSIS(逼近理想解)算法原理详解与代码实现
写在前面: 个人理解:针对存在多项指标,多个方案的方案评价分析方法,也就是根据已存在的一份数据,判断数据中各个方案的优劣.中心思想是首先确定各项指标的最优理想值(正理想值)和最劣理想值(负理想解),所 ...
- 离线强化学习(Offline RL)系列3: (算法篇)策略约束 - BRAC算法原理详解与实现(经验篇)
论文原文:[Yifan Wu, George Tucker, Ofir Nachum: "Behavior Regularized Offline Reinforcement Learnin ...
- 一致性哈希算法原理详解
一.普通 hash 算法 (取模算法): 在了解一致性哈希算法之前,我们先了解一下缓存中的一个应用场景,了解了这个应用场景之后,再来理解一致性哈希算法,就容易多了,也更能体现出一致性哈希算法的优点,那 ...
- DES加解密算法原理详解与实现
[DES密码编写] 1. Equipment (1) operating system version :WIN 10 (2) CPU instruction set: x 64 (3) softwa ...
- CORDIC算法原理详解及其Verilog实现
CORDIC算法原理详解及其Verilog实现 本文的verilog代码 链接:https://pan.baidu.com/s/1GGbRjxO5CxoIODQAg1l6Lw 提取码:jo0h *本文 ...
- 局部路径规划器teb_local_planner详解3:跟随全局planner
局部路径规划器teb_local_planner详解3:跟随全局planner 前言 一.相关优化项 二.与topologies相关的参数 前言 在局部路径规划器teb_local_planner详解 ...
最新文章
- 企业网站制作要以简约为主
- 剑指offer-斐波那契数列
- MapStruct 常用操作
- 【CCF】 201809-1 卖菜
- python 百度识图_用python做图片识别(调用百度API)
- abstract interface java_Java -- abstract 和 interface 的理解
- JAVA异常和基础类库
- 每日一道剑指offer-反转链表
- c语言出现源文件未编译,dev运行C语言出问题
- 显示计算机配置的命令是,查看电脑配置命令
- Error: Cannot find module ‘@/xxx‘
- 东海学计算机,田东海_北京理工大学计算机学院
- 一对同居男女同一天的日记
- JavaWeb(2)CSS
- 差错控制之检错编码与纠错编码
- get_article_info
- gnu binutils_9个基本的GNU binutils工具
- JavaScript模块 commonJS、AMD、UMD、ES6
- 关于 aws 免费使用12月注意事项
- [山东科技大学OJ]1168 Problem C: 输出连续的整数序列 之二
热门文章
- 豆瓣app签名sig
- 物业计算机管理系统论文,小区物业管理系统设计毕业论文
- 计算机论文物业管理系统,物业小区管理系统 计算机专业毕业论文
- 在PSP上玩《大旋风 Twin Hawk》
- 借助创客匠人玩转视频号
- 印象笔记Mac版的快捷键有哪些?Evernote for Mac快捷键大全
- 最新emoji表情代码大全_抖音不用考虑我我没感受铁打的图片,最新表情包高清大全[多图]-软件教程...
- Android版本caj阅读器,CAJViewer安卓版
- Popclip的JSON格式化扩展
- 内核进程回调遍历【记录】