博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
双向BFS
阅读量:5933 次
发布时间:2019-06-19

本文共 401 字,大约阅读时间需要 1 分钟。

我们知道,BFS是往广处去搜索,我们把这想象成一个以起点为圆心的一个圆,每向前走一步,就是圆的半径增大一个单位,而圆的每个单位面积上是一种状态,当圆增大到目标点那么大时,找到了答案,搜索结束。那么显然的,当半径较大时,每走一步就会有十分大量的状态需要来储存( S=πr² )。通常的,我们用“判重”的方法来解决,但是在这里,还有一种优化方法:双向搜索。

双向搜索适用于起点和终点状态都很明确的搜索题。试想,我从起点推算到终点,与我从终点推算到起点,最后得到的最少步骤数一定是相等的,所以我们可以从起点和终点同时搜索。同样用圆来打比方,假设以起点为圆心画圆时,最终半径为r,以终点为圆心画圆时,最终半径为R。那么显然有:

πr²+πR²≤π(r+R)²

所以当害怕BFS会TLE时,不妨打一打双向BFS。

转载于:https://www.cnblogs.com/Roni-i/p/9311347.html

你可能感兴趣的文章
对称的二叉树
查看>>
编译器的原理
查看>>
【解决】Windows Mobile 6 Professional SDK Refresh.msi 在xp上一直卡死
查看>>
C#Winform限制Textbox只能输入数字
查看>>
There is no getter for property named 'id' in 'class java.lang.Integer'
查看>>
一步步实现windows版ijkplayer系列文章之三——Ijkplayer播放器源码分析之音视频输出——音频篇...
查看>>
[笔记].如何使用Nios II Software Tools for Eclipse导入已有工程
查看>>
hdu Wooden Sticks
查看>>
PHP任意文件上传漏洞CVE-2015-2348浅析
查看>>
java代码。。重温JPassword,JLabel,JPanel
查看>>
序列化与transient
查看>>
hdoj1241 Oil Deposits
查看>>
shell中cut命令的使用方法
查看>>
人工智能的hello.world,感觉挺爽,就像养个小孩儿一样,我要慢慢养下去!
查看>>
Java的基本数据类型与运算符
查看>>
centos django nginx uwsgi
查看>>
Java杨辉三角
查看>>
饼状图
查看>>
工程编码过滤器
查看>>
USACO 3.1.4 [Shaping Regions]
查看>>