路径规划之Best-First Search算法

系列文章目录

路径规划之Dijkstra算法

路径规划之Best-First Search算法


路径规划之Best-First Search算法


前言

Best-First Search算法和Dijkstra算法类似,都属于BFS的扩展或改进

一、Best-First Search算法

1.1 起源

Best-First Search算法又称最佳优先搜索算法 ,属于BFS的扩展,最开始人们也尝试过使用DFS来实现路径规划,效果图如下

上图中可以看出,在实际情况中DFS处于不撞南墙不回头 的状态,它找到的路径并不是机器人运行的最优路径;相比之下BFS虽然耗费时间长,代价大,但是可以找到机器人运行的最优路径。

虽然BFS能有效找到最优路径,但是它耗费的代价过大,时间过长,于是在BFS的基础上提出了最佳优先搜索(Best-First Search)。

Best-First Search和Dijkstra不同的地方在于每次选择新的遍历节点时,Dijkstra选择离起点代价最小 的点,而Best-First Search选择离终点代价最小的节点。

1.2 过程

  1. 初始化一个优先队列用于存储已遍历但未找到离终点最短路径的结点,队列开始只有起点;
  2. 遍历当前节点相邻的结点,将它们加入优先队列中,选择其中到终点代价最小的结点作为下一次遍历的结点(该结点从优先队列中踢出,成为已扩展的结点);
  3. 如果相邻的结点中已存在优先队列中,更新它到终点的代价;否则加入优先队列;
  4. 重复2、3步骤直至到达终点。

该算法到终点的代价可以使用欧氏距离或者曼哈顿距离来计算,如图所示

三、简单使用

以下就是Best-First Search算法在一个比较简单的地图中进行路径规划的过程,但该算法在应用中非常容易陷入局部最优解,使用频率远低于Dijkstra算法

相关推荐
weixin_3077791311 小时前
C++代码实现MATLAB中的dlarray函数功能
开发语言·c++·算法·matlab
hetao173383716 小时前
2026-10-03~04 hetao1733837 的刷题记录
c++·算法
Zootopia62617 小时前
飞行力学知识梳理1|飞行性能与稳定性
人工智能·python·算法·机器学习·无人机·学习方法·信息与通信
longlongzihan17 小时前
从LeetCode 70. 爬楼梯看动态规划:如何精准推导状态转移方程?
c++·算法·leetcode·动态规划
2601_9603563818 小时前
2027校招采购岗解析:数学基础如何迁移到需求预测、成本与供应商分析
人工智能·算法
h_a_o777oah18 小时前
【树论】树链剖分:将树形结构转化为线性结构以处理树上路径问题(洛谷 P3384 附C++代码模板)
数据结构·算法·线段树·acm·树链剖分·树论·重链剖分
HEJOO919 小时前
指针的算术运算详解
java·数据结构·算法
Coder-magician19 小时前
《代码随想录》刷题打卡day47:并查集-part01
数据结构·算法·图论
垆边人似月.19 小时前
VLAN 资源池(100~200 分档)
数据结构·算法
潼心1412o20 小时前
C++初阶(长期更新)第6讲:类和对象(下)
开发语言·c++·算法