移动机器人运动规划---基于图搜索的基础知识---广度优先遍历与深度优先遍历

news2024/12/27 12:16:52

移动机器人运动规划---基于图搜索的基础知识---广度优先遍历与深度优先遍历

      • 广度优先搜索(BFS)
      • 深度优先搜索(DFS)
      • BFS vs DFS

图搜索优化的方向就是
按照什么规则去访问节点,按照什么规则弹出节点,使我们尽可能快的找到终止节点。

图遍历算法:

  • 广度优先搜索
  • 深度优先搜索

广度优先搜索 遵循先进先出的原则,维护的是一个队列
在这里插入图片描述
弹出元素,总是从队列的头弹出的
深度优先搜索 遵循的是后进先出的原则,维护的是一个堆栈
在这里插入图片描述
弹出从最上面弹出,最后进入容器的,最先被弹出来

广度优先搜索(BFS)

特点:每次弹出层级最浅的一个节点,维护的是一个队列的结构
所以搜索过程是一层一层进行的
在这里插入图片描述
最直观的理解就是一层一层的进行

BFS步骤的拆分
在这里插入图片描述
这样的一个图结构,BFS的步骤是下面这样的

初始化容器是空的,首先放入开始节点S
在这里插入图片描述
弹出(访问)S节点,容器就再次变为空的
在这里插入图片描述
对S进行扩展,
从图上上可以看出,S可以扩展的是d\e\p
在这里插入图片描述
安照定义的规则,将扩展的节点以规则顺序放入容器中
在这里插入图片描述
与DFS区别就是,从下面弹出节点,先弹出p节点
在这里插入图片描述
然后再进行循环
在这里插入图片描述
最终找到终止节点,结束循环,完成图搜索。

深度优先搜索(DFS)

特点:每次弹出的节点是最深层级的一个节点,维护的是一个堆栈
在这里插入图片描述
直观的理解就是没次把一个分支走到底

DFS步骤的拆分:
注意—维护的是一个栈的结构
在这里插入图片描述
这样的一个图结构,DFS的步骤是下面这样的

初始化容器是空的,首先放入开始节点S
在这里插入图片描述
弹出(访问)S节点,容器就再次变为空的
在这里插入图片描述
对S进行扩展,
从图上上可以看出,S可以扩展的是d\e\p
在这里插入图片描述
安照定义的规则,将扩展的节点以规则顺序放入容器中
在这里插入图片描述
然后深度优先搜索是弹出容器中的,后入的节点(层级最深的),即d节点
然后再扩展d节点,将扩展节点放入容器,再弹出该弹出的节点,再扩展,再放入的循环操作

在这里插入图片描述
最终找到终止节点,结束循环,完成图搜索。

BFS vs DFS

从最终的遍历结果图中,可以看到两者的区别
在这里插入图片描述

  • BFS是从开始节点一层一层的去向外扩展,直到扩展到了目标节点,然后回溯去找到最短路径。
  • DFS是从开始节点一条路走到头,去找到目标节点。

由结果来看,BFS 找到的路径是最短的

所以对应移动机器人,在做路径规划找最短路径时,做好的方法就是BFS

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

快速了解 TypeScript

目录 1、简介 2、安装TypeScript 3、编译代码 4、类型注解 5、接口 6、类 7、运行TypeScript Web应用 1、简介 TypeScript是JavaScript类型的超集,它可以编译成纯JavaScript。 TypeScript可以在任何浏览器、任何计算机和任何操作系统上运行,并且…

【哈士奇赠书活动 - 23期】-〖你好 ChatGPT〗

文章目录 ⭐️ 赠书 - 《你好 ChatGPT》⭐️ 内容简介⭐️ 作者简介⭐️ 精彩书评⭐️ 赠书活动 → 获奖名单 ⭐️ 赠书 - 《你好 ChatGPT》 ⭐️ 内容简介 人工智能(AI)时代已经来临,AIGC(人工智能生成内容)正在进一步…

【精选】各种节日祝福(C语言,可修改),Easyx图形库应用+源代码分享

博主:命运之光✨✨ 专栏:Easyx图形库应用📂 目录 ✨一、程序展示 范例一:❤新年祝福❤ 范例二:❤母亲节祝福❤ ✨二、项目环境 简单介绍一下easyx图形库应用 Easyx图形库 ✨三、运行效果展示(视频&am…

【C++起飞之路】初级——缺省参数、函数重载、引用

C:函数重载、引用 一、缺省参数🛫1.1 🚝什么是缺省参数1.2 🚝缺省参数的分类a. 全缺省参数b. 半缺省参数(部分缺省参数) 1.3 🚝注意事项 二、函数重载🛫2.1 🚝什么是函数…

时间复杂度:根号n一般来说大于log(n)

f ( x ) x − l o g 2 x f(x)\sqrt{x}-log_2 x f(x)x ​−log2​x 对这函数求导后,比较分母大小,可以得到结论 f ( x ) f(x) f(x)先减后增,分界点为 x 4 ( l n 2 ) 2 x \frac{4}{(ln2)^2} x(ln2)24​ f ( x ) f(x) f(x)的图像如下所示&a…

PPT技能之文字格式,转身的文字这样做

只要用PPT,一定需要设置文字格式。好的文字格式,给人惊艳的感觉,是一种愉悦的享受。 你的关注,是我最大的动力!你的转发,我的10W!茫茫人海有你的支持,给我无限动力。 1、字体。 按…

什么是Java中的阻塞队列?它有什么作用?

在Java中,阻塞队列是一种特殊的队列,它可以在队列为空或队列已满时阻塞添加或移除元素的操作。阻塞队列通常用于多线程编程中,可以帮助我们更加方便地进行线程通信和协作。在本文中,我将从面试的角度,详细讲解Java中的…

在线办公时代,如何选择合适的云办公软件?

文章目录 在线办公时代,如何选择合适的云办公软件?在线文档石墨文档腾讯文档飞书文档 远程控制ToDesk向日葵 会议协同腾讯会议ZOOM 总结 在线办公时代,如何选择合适的云办公软件? 随着数字经济的发展和疫情的影响,云办…

100天精通Python(可视化篇)——第87天:matplotlib绘制不同种类炫酷雷达图参数说明+代码实战(普通、堆叠、多个、矩阵、极坐标雷达图)

文章目录 专栏导读1. 雷达图1)介绍2)参数说明 2. 基本雷达图3. 堆叠雷达图4. 六边形战士5. 多个雷达图6. 雷达图矩阵7. 极坐标雷达图 专栏导读 🔥🔥本文已收录于《100天精通Python从入门到就业》:本专栏专门针对零基础…

做一名活动策划是什么体验

在一些不了解的人眼中,活动策划就是那种外表光鲜亮丽,气场十足,眼神犀利,跷着二郎腿,情绪饱满的完成一场又一场的完美的秀。 好像确实是这样,但是你们又知不知道这背后的一切我们活动策划到底付出了什么&a…

SpringMVC的三大功能

目录 一、初识SpringMVC 1.1 MVC的定义 1.2 MVC和SpringMVC的关系是什么? 1.3 SpringMVC的重要性 二、Spring MVC的三大功能 2.1 连接功能 2.1.1 RequestMapping 注解介绍 2.1.2 GetMapping 和 PostMapping 2.2 获取参数功能 2.2.1 传递普通参数 2.2.2 传递对象 2…

【K8s】Ingress的使用

文章目录 一、Ingress介绍1、Ingress的作用2、Ingress工作流程 二、Ingress使用1、测试数据准备2、HTTP代理3、HTTPS代理 一、Ingress介绍 1、Ingress的作用 上一章中,NotePort和LoadBalancer类型的Service可给集群外部机器提供访问,但这两种类型都有缺…

JavaScript数组

1.数组是什么 2.数组的基本使用 3.操作数组 4.数组案例 一、数组是什么? 1.数组(Array)是一种可以按顺序保存数据的数据类型2.为什么要使用数组?例如:如果想保存一个班所有同学的姓名怎么办?场景:如果有多个数据可以用…

vue3中ts定义对象,pinia中使用ts定义状态对象

文章目录 引入reactive中使用数组reactive中定义对象类型pinia中定义状态对象 引入 用惯了js,突然使用ts属实有点不习惯,这里介绍一下自己在vue3中使用ts初始化内容的一些小技巧 reactive中使用数组 例如下面所示的代码,我们就像写js代码一…

数组a与数组b作内积:即a和b所有对应位置两元素相乘 将所有的相乘结果(积)求和 numpy.inner(a,b)

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 数组a与数组b作内积: 即a和b所有对应位置两元素相乘 将所有的相乘结果(积)求和 numpy.inner(a,b) [太阳]选择题 请问关于以下代码的输出结果是? import numpy as np …

招银网络科技-2024届暑期实习-Java后端开发

目录 1.SpringBoot 中的 SpringBootApplication注解的作用是什么?2.SpringBoot 中你们是如何加载配置信息的?3.RabbitMQ 如何保证消息不丢失?4.如果消费者这边消费到一半宕机了怎么办?5.RabbitMQ 如何保证消息没有被重复消费&…

C语言函数大全-- w 开头的函数(3)

C语言函数大全 本篇介绍C语言函数大全-- w 开头的函数 1. wcsdup 1.1 函数说明 函数声明函数功能wchar_t *wcsdup(const wchar_t *str);用于复制宽字符字符串 参数: str : 待复制的宽字符串 返回值: 如果成功复制,则返回指向该…

跨域解决方案

同源策略 同源策略是一种约定,它是浏览器最核心也是最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSRF等攻击。 所谓的同源是指【协议域名端口】三者相同,即便两个不同的域名,指向同一个IP地址&#xf…

手把手教你下载darknet_ros

前两天下载darknet_ros,好怪啊,是我太菜了,根本看不懂这都啥啊,所以记录一下 首先附上链接 这里是github上的代码:https://github.com/leggedrobotics/darknet_ros 这里是gitcode上的代码:https://gitcode…

软件技术体系汇总-Spring篇

Spring源码学习总结 版本说明 系列文章是本人在学习 Spring 源码的过程中总结 Spring 版本:5.2.8.RELEASE 调试工具:IDEA2020.3 作者:虎哥 常见面试题 1. 什么是 Spring Framework ? 官方文档: Spring makes it eas…