- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
谢家晔家一起来广搜
从DFS说起……广度优先搜索与深度优先搜索在控制结构和产生系统上都很相似(控制结构——状态搜索树;产生系统——状态转移规则)。不同点在于对节点的扩展顺序不同,因而采用了不同的数据结构实现。因此,这两种算法在性能和适用范围上有较大区别。如可行解问题用深搜来解决,而最优解问题用广搜来解决。另外,由于深度优先搜索一般用递归实现,调用栈的层数限制也在一定程度上限制了适用的问题规模。以下就给大家介绍一下广度优先搜索算法及其优化。
主要内容广搜的基本概念广搜的基本操作(队列实现)广搜的优化广搜的应用
搜索的基本概念状态对问题在某一时刻进展情况的数学描述。我们将一个状态简化为一个节点处理。状态转移问题从一种状态到转移到另一种(或几种)状态的操作。状态空间问题可以处于的所有状态。搜索树 将初始状态作为根节点,由状态转移操作扩展出其他节点作为其子节点,并对其他节点按一定规则重复同样的操作,得到的一个树结构。
广度优先搜索的思想刚才我们在搜索树中提到“对其他节点按一定规则重复同样的操作”。在广搜中,这个规则即为按层遍历。即:从根节点(第0层)开始,依次扩展完该层的所有节点,再扩展下一层的节点。由此可知,广搜可以用来解决最少步数的问题:同一层的步数都是相等的(都等于层数),而每次都是搜完较浅层的才搜较深层的,因此最先搜索到的解一定是最少步数的解。
广度优先搜索的基本操作现在我们来看广搜与队列的关系:由广搜扩展节点的顺序可知,应当用先进先出的队列实现。初始时队列仅包括初始节点,每次以队头节点作为父节点扩展,扩展出的子节点入队,已扩展出所有子节点的父节点出队。另外,对于已经进过队的状态,应进行标记以避免重复搜索。伪代码如下:Initialize(queue)while(!empty_queue)state-queue_frontpusheverypossiblestateextendedfromcurrentstatepopcurrentstate
Poj2882Foodcubes给定三维空间内若干个单位立方体的坐标,求这些立方体围成了多少个空穴。空穴指在空间的6个方向被包围的连续空间。坐标范围在1~100之间。典型的搜索题,不过用深搜的话,100^3层调用栈是会爆的=_=|||所以……由于数据范围不大,简单的广搜就可以过。O(∩_∩)O~每次搜索连续空间,搜到队列为空时空穴数+1.此题还有一个需要处理的细节就是外围不被包围的空间是不算在空穴里的。我的处理方法是在最外围包一层立方体,最后将空穴数-1.Let’sturntoBFS!
以下为伪代码…Inputinitialize //createawalloutsidethe //wholespaceForevery(i,j)initializemap[i][j]//recordif(i,j)canbevisitedans-0Foreveryunvisited(i,j)BFS(i,j) //extendfrom(i,j)tothelargestholeans++ans--Output(ans)
广搜的优化广搜的平均时间复杂度是平均搜索到的状态数的常数倍,最坏时间复杂度是所有可能搜索到的状态数的常数倍。因此,广搜的优化方法比较有限,主要是从减少平均搜索到的状态数入手。且优化后不能改变解的性质,仍然要得到最优解。
广搜的优化一种效率比较高、但适用范围较窄的优化就是双向广搜,它有效地减少了平均搜索到的节点数,大大提高了广搜的效率。双向广搜的一般方法是:分别从初始节点和目标节点开始广搜,每次检查两边的节点是否有重合,若有重合即为最优解。可以按顺序交替扩展两个方向的队列,但在很多情况下我们也可以进行这样的优化,即每次扩展完之后总是选择节点数较少的一边进行下一次扩展,而不是机械地两边交替,这样一般能提高搜索的效率。
广搜的优化双向广搜的伪代码如下:Initialize(queue[0])Initialize(queue[1])while(!empty_queue[0]!empty_queue[1]solution_not_found)findthequeuewiththeleastnodesqueue[m]whilequeue[m]_frontbelongstocurrentlayerstate-queue[m]_frontpusheverypossiblestateextendedfromcurrentstate
您可能关注的文档
- 抗生素英文精品——Discovery-of-Antimicrobial-Drugs.ppt
- 第三章---影响微生物生长的因素.ppt
- 液压元件、系统及装置相关行业项目建议书.docx
- 口唇发绀原因及护理措施.doc
- 第三章-演播室人物布光.ppt
- 桡骨开放性骨折护理措施.doc
- 牵引变电所概念.ppt
- 肝衰竭的内科综合治疗.ppt
- 人教课标六下成正比例的量.ppt
- 压疮预防养老护理措施.doc
- 深度解析(2026)《SNT 2497.23-2010 进出口危险化学品安全试验方法 第 23 部分:细胞器的分离实验方法》.pptx
- 深度解析(2026)《SNT 2517-2010 进境羽毛羽绒检疫操作规程》.pptx
- 深度解析(2026)《SNT 2755.2-2011 出口工业产品企业分类管理 第 2 部分:企业分类基本要求》.pptx
- 深度解析(2026)《SNT 2782-2011 原油中盐含量的测定 电测法》.pptx
- 深度解析(2026)《SNT 3016-2011 石脑油中汞含量测定 冷原子吸收光谱法》.pptx
- 深度解析(2026)《ISOTS 19567-12016 Photography — Digital cameras — Texture reproduction measurements — Part 1 Freque标准解读.pptx
- 深度解析(2026)《SNT 3082.5-2012 出口烟花爆竹产品检验规范 第 5 部分:喷花类》.pptx
- 深度解析(2026)《SNT 3086-2012 出境活鳗现场检疫监管规程》.pptx
- 深度解析(2026)《ISOTR 173022015 Nanotechnologies — Framework for identifying vocabulary development for nanotechnol标准解读.pptx
- 深度解析(2026)《SNT 2982-2011 牙鲆弹状病毒病检疫技术规范》.pptx
原创力文档


文档评论(0)