C++ 多起点的bfs(五十九)【第六篇】

今天我们来学习多起点的bfs

1.多起点的bfs

在普通的广度优先搜索问题中,为了得到从初始状态到达目标状态的最小操作数,则将初始状态放入队列中。离初始状态由近及远地不断扩展出新的状态,直到搜索到目的状态,或队列为空(无法搜索到目标状态),得到结果。

在一些问题中,希望找到离 
n 个初始状态距离最小的操作数。在实现这样的问题,主要有两种思路,一是我们可以进行 
n 次广度优先搜索,并不断更新表示步数的数组。

而另一种是我们可以将多个初始状态放入队列中,这些状态在队列中扩展得到的结果仍是一个步数不下降的序列,所以当第一次搜索到目标状态时,仍旧是最小的操作数。

例如:在迷宫问题中有多个起点 
S1,S2,S3,⋯,求起点(可以为任意一个)到终点 
T 的最短距离。

图片

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值