【原创】浅谈搜索(下-bfs)
2017-07-15 17:38
363 查看
浅谈搜索 下
2016-09:浅谈搜索 上:http://blog.csdn.net/c20182030/article/details/526824752016-10:浅谈搜索 中:http://blog.csdn.net/c20182030/article/details/52796321
2016-11:枚举枚上天,暴力出奇迹:http://blog.csdn.net/c20182030/article/details/5312789
dce4
0
2017-07:浅谈搜索 下:这篇博客
时隔九个月,我们来完结暴力系列。
想想心里还是有点小伤感的。
现在来讲讲当初还没有理解现在很理解的广搜。
开场白
搜索,一种最基本,也是最重要的算法。无数高级思想都建立在搜索的基础上。当你学会搜索时,你就跨入了一个新的阶段。所以说,搜索,是每个编程人的进阶科目。搜索,分为深搜(英文缩写dfs)和广搜(又叫宽搜,英文缩写bfs)。相比较来说,深搜较为简单,广搜更为管用。
深搜,就是有路就走,画成图片来看,就像植物的根,扎根很深,故名深搜。
广搜,我也不知道为什么叫广搜。
废话不多说,让我们在更加深入的了解搜索吧!
开始
开场白是不是很愚蠢?我也这么觉得。bfs是什么呢?
我们举几个例子你就明白了。
你的眼镜掉地上了,你先摸你最近的,然后稍远一点的,再远一点,再远一点……
在画树状图求概率的时候,你仔细检查每一次有没有写对,第一次,第二次……
是不是很简单明了地没有明白?
在正式讲bfs以前,我们先来看一看dfs的坏处。
如果我们想要求迷宫里从起点到终点的最短路径,dfs就是把所有路径都走一遍,计算各条路径的长度。
假设你是真的在走迷宫,你要把所有路走完,那不累死!如果我们有分身术,能够派分身去走那些分支的路,而我本人就安安心心的走一条路。如果有分身到了终点,那就合体,走出去。
bfs的实现
上文的“分身”诠释是我最能诠释bfs的诠释。那么,我们可以看出,bfs是个分层次的搜索。
我们要达到的效果是这样:
我们可以考虑用队列来存储当前的层次的结点。
naive-队列
队列
naive-优先队列
优先队列
我们把层次1的结点入队,在一一取出来,记为结点i,把与i直接相邻的层次2的结点入队。此时层次2在队列后面,而我们可以继续畅通无阻的取其他层次1的结点。把层次1的结点取完以后,队列里只剩层次2的结点了。以此类推。
结语
对,本篇博客很水,连个代码都没有。只是了了个心愿,哎。相关文章推荐
- 【原创】浅谈搜索-中(dfs)(红与黑,Dungeon Master)
- hdu 1026 Ignatius and the Princess I(bfs搜索+输出路径)
- 【算法入门】广度/宽度优先搜索(BFS)
- HDU 1495 非常可乐!!!(隐式图状态搜索+bfs+map状态查重)
- HDU 1312Red and Black(简单搜索 bfs或dfs)
- POJ 3126 Prime Path BFS搜索
- 【原创】LoadRunner如何获得参数化中每个关键字的搜索响应时间
- hdu 1043 八数码 经典搜索问题 BFS+MAP
- hdu 1254 推箱子 很好的嵌套搜索 双层BFS
- 广度/宽度优先搜索(BFS)
- 【LeetCode121-130】买卖锁,二叉树搜索,回文检测,恶心的wordladder2 BFS, 围棋消除BFS
- HDU/HDOJ 2102 A计划 广度优先搜索BFS
- 【算法】利用随机化算法对顺序表进行搜索【原创技术】
- 搜索 BFS
- hdu 1401 双向搜索(bfs)
- nyoj 1321信息战(九)——水淹七军(搜索bfs)
- 浅谈网页搜索排序中的投票模型 推荐
- ACM之八数码问题----BFS搜索----数独游戏的模拟(下)
- UVA - 11624 Fire!(15.10.10 搜索专题)bfs
- 走进全文搜索[NP博士原创]