路径规划之Best-First Search算法

系列文章目录

路径规划之Dijkstra算法
路径规划之Best-First Search算法


路径规划之Best-First Search算法

  • 系列文章目录
  • 前言
  • 一、Best-First Search算法
    • 1.1 起源
    • 1.2 过程
  • 三、简单使用


前言

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算法
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/215497.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

<C++> 继承

目录 前言 一、继承概念 1. 继承概念 2. 继承定义格式 3. 继承关系和访问限定符 4. 继承基类成员访问方式的变化 二、基类和派生类对象赋值转换 三、继承中的作用域 四、派生类的默认成员函数 五、继承与友元 六、继承与静态成员 七、菱形继承及菱形虚拟继承 1. 菱形继承 2. 虚…

万字解析设计模式之模板方法与解释器模式

一、模板方法模式 1.1概述 定义一个操作中算法的框架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业…

HTTP/2:多路复用、服务器推送和首部压缩的革命

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

系统优化软件Bitsum Process Lasso Pro v12.4,供大家学习研究参考

1、自动或手动调整进程优先级;将不需要抑制的进程添加到排除列表; 2、设置动态提升前台运行的进程/线程的优先级 3、设置进程黑名单,禁止无用进程(机制为启动即结束,而非拦截其启动)。 4、优化I/O优先级以及电源模式自动化。 5、ProBalance功能。翻译成中文是“进程平衡…

【从删库到跑路】MySQL数据库 — E-R图 | 关系模型

🎊专栏【MySQL】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 文章目录 🌹简述什么是E-R图⭐核心概念 🌹E-R图…

Windows power shell for循环

有时候需要重复执行某个shell命令 for($i1;$i -lt 10;$i$i1){echo $i}如果是cmd for /l %i in (1,1,5) do echo %i

typora中的快捷键shift enter 和 enter的交换

1 问题: 我最近在用 typora 进行写作,但是在合格 typora 的 markdown 编辑器很奇怪,它的一个回车符是两次换行,而用 shfit ent 找了半天都不知道怎么解决的这个问题,然后我就去了这个 typora 在 github 开源的问题仓库…

vitis AIE graph

https://zhuanlan.zhihu.com/p/661255763 在前文中,我们首先认识了 Vitis™ 2022.1 统一软件平台内适用于 Versal™ 的 AI 引擎 (AIE) 应用。 我们认识了 Vitis IDE 2022.1 中 AIE 应用工程的结构,还了解了用于计算图初始化、运行和终止的一些 API。在本文中,我们将进一步深…

忘记跟进客户?CRM系统来帮您

销售人员要同时跟进多个客户,经常容易忘记跟进客户,导致客户流失。这就代表您的企业需要使用CRM系统了。下面我们就来对这个问题聊聊,销售总忘记跟进客户?CRM客户管理了解一下。 CRM如何帮助销售跟进转化客户: 管理客…

【华为数通HCIP | 网络工程师】821-IGP高频题、易错题之OSPF(6)

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…

0基础能不能转行做网络安全?网络安全人才发展路线

最近有同学在后台留言,0基础怎么学网络安全?0基础可以转行做网络安全吗?以前也碰到过类似的问题,想了想,今天简单写一下。 我的回答是先了解,再入行。 具体怎么做呢? 首先,你要确…

单链表的反转?太细了哥们!细到离谱!

单链表的反转(面试常出): ​ 单链表的反转,可以通过很多种方法实现。包括迭代法,递归法, 迭代法: 定义三个指针:prev、current和next,它们分别表示前一个节点、当前节点…