图搜索算法——宽度优先算法BFS、最短路径算法Dijkstra、A*、Hybrid A*

本文详细介绍了图搜索算法,包括宽度优先搜索(BFS)、Dijkstra算法、A*算法以及Hybrid A*算法。BFS适用于无权或等权图,找到最短路径;Dijkstra处理有权图,找到最短路径;A*算法通过启发式函数提高搜索效率;Hybrid A*考虑非完整性约束,适配移动机器人路径规划,采用连续空间搜索并平滑路径。
摘要由CSDN通过智能技术生成


做个正直的人

1、符号说明

C:closed list,里面存储的是所有已经处理过的节点
O:open list,里面存储的是所有已经发现但是还没有被放进closed list中的节点
U(x):表示所有可以对x采取的动作的集合,其返回结果是x的相邻节点
predecessor:父节点

2、宽度优先搜索BFS

BFS发表于1961年,它是工作在无权图或者等权图上的搜索算法。所以,图中的每一个边的权重都是相等的,那么影响一条路径长短的就只剩下边的个数了,也就是BFS中的层数。很明显,既然是宽度优先,那么BFS找到的路径一定是最优的。

它的步骤描述如下:

  1. 设置 C 和 O 为空集,设置起点 x s t a r t x_{start} xstart的predecessor 为null
  2. x s t a r t x_{start} xstart压入O,BFS的O是一个先入先出的队列
  3. 弹出O的首节点x,并将x压入C
  4. 对x的下一个相邻节点 x s u c c x_{succ} xsucc
  5. 如果 x s u c c x_{succ} xsucc∈C,换下一个相邻节点;否则转6
  6. 如果 x s u c c x_{succ} xsucc∈O,换下一个相邻节点,否则转7
  7. x s u c c x_{succ} xsucc的predecessor设为x;如果 x s u c c = x g x_{succ}=x_g xsucc=xg,到达目标,算法结束,否则转8
  8. x s u c c x_{succ} xsucc压入O;如果x的相邻节点已经处理完,转3;否则转4

在这里插入图片描述

很明显,BFS必须遍历所有的节点之后才能够找到最优的路径,并且BFS只能工作在等权图上。

3、Dijkstra 算法

我们知道BFS是工作在等权图上,但是这种图真的是很少见。Dijkstra算法算是对BFS算法的一种改进,虽然Dijkstra算法的发表比BFS还早了两年,1959。

Dijkstra是工作在有权图上的一种最短路径算法。Dijkstra算法把所有的节点分成了三类:扩展过的、正在扩展的、未扩展的。

Dijkstra算法的步骤描述如下:

  1. 设置 C 和 O 为空集,设置起点 x s t a r t x_{start} xstart的predecessor 为null
  2. x s t a r t x_{start} xstart
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值