eg12_4

看书上为啥广度优先算法需要用到队列?
可能还是很迷糊

详细讲解或推到一下,广度优先为什么要用到队列

广度搜索的核心

深度搜索的核心就是一个人一直往前走,不停试错,直到终点

广度搜索的核心就是,一群人,每个岔路口都分出去一部分,同时往前跑,有一个到底终点即可

广度搜索

为了便于观察,把障碍点由1,改成-1

0-1000
0-10-10
00000
0-1-1-10
000-10

从左上出发

0-1678
1-15-17
23456
3-1-1-17
456-18

如果安装访问顺序,画出树状图

0,0
1,0
2,0
3,0
2,1
4,0
2,2
4,1
2,3
1,2
4,2
2,4
0,2
3,4
1,4
0,3
4,4
0,4

整个前进图时间顺序,就是从上往下流动,到达同一层级点的时间时完全一致的
但是计算机的数据存储就是一个一维数组
所以将同一层级的点,再按照从左往右的顺序,把他变成一个小的整体的数组
按序访问这个小数组的每个点的下一个到达点
最后的queue就是以时间顺序,各层数组再拼接为一个最后的数组

广度搜索与先进先出的关系

理论上在A层搜索完成后得到B层,就需要再对B层搜索
时序上是一致的,就和排队一样,先排队的先结账

如何递归

递归写法是肯定能写的
但是下一层的访问点数量不固定,这需要动态分配内存,至少当前阶段无法写出来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值