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

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

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

图遍历算法:

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

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

广度优先搜索(BFS)

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

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

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

深度优先搜索(DFS)

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

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

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

扫描二维码关注公众号,回复: 15189701 查看本文章

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

BFS vs DFS

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

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

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

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

猜你喜欢

转载自blog.csdn.net/qq_32761549/article/details/130648120