路径规划之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算法

相关推荐
优宁维生物1 天前
DNA 提取的基础方法
人工智能·算法
@Aurora.1 天前
优选算法【专题二:滑动窗口】
算法
小石头 100861 天前
【Java】String类(超级详细!!!)
java·开发语言·算法
.柒宇.1 天前
力扣hot100---42.接雨水(java版)
java·算法·leetcode
youngee111 天前
hot100-41验证二叉搜索树
算法
迈巴赫车主1 天前
蓝桥杯20534爆破 java
java·数据结构·算法·职场和发展·蓝桥杯
坚持就完事了1 天前
数据结构之链表
数据结构·python·算法·链表
c#上位机1 天前
halcon图像去噪—均值滤波
图像处理·算法·均值算法·halcon
曾几何时`1 天前
347. 前 K 个高频元素 分别使用sort和priority_queue 对哈希结构自定义排序
算法
小李小李快乐不已1 天前
图论理论基础(3)
数据结构·c++·算法·图论