- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
滚动广搜By 孔鸡猪八肉 我们知道朴素广搜的空间浪费很严重,原因很简单,朴素广搜将从初始节点开始可以达到的所有状态全都记录下来了,而这样需要消耗的空间代价是指数级的。所有使用广搜时,空间就显得很宝贵。于是我们开始寻找对状态储存的优化,以减小对空间的消耗。一类典型的题目(求迷宫中到达某一个位置的最少步数),可以用到一种思想———滚动广搜。 滚动广搜的思想就是用到两个表来储存前一个阶段可以达到的所有状态和当前阶段可以达到的所有状态。因为这一步能到达的所有位置只由上一步的位置决定,而所有的位置的集合规模是n*m(分别表示迷宫的长和宽)。我们只需要开两个大小为n*m的表就可以保证能记录所有可能达到的位置了。每次取出前一阶段所有状态节点,并按照产生式规则对其扩展并存入当前阶段的表内。然后通过now:=1-now不断切换前一阶段与当前阶段,(注意:每次要对当前阶段的表和标记数组进行清空)。 1.下面给出滚动广搜的数据结构: type rec=record{节点的描述,包括横纵、坐标,根据题目不同可适当添加} x,y:integer; end; var q:array[0..1,1..maxn*maxm] of rec; {0、1分别表示当前阶段和前一个阶段} r:array[0..1] of longint; {两个表对应的尾指针} used:array[1..maxn,1..maxm] of Boolean;{标记(u,v)是否以可到达} 2.以下是滚动广搜的核心算法部分。 procedure rollbfs; var i,f,u,v:integer; begin now:=0;r[now]:=1;q[now,1].x:=fx;q[now,1].y:=fy;{初始化,将起点位置入队} repeat now:=1-now; r[now]:=0; fillchar(used,sizeof(used),0);{切换到当前阶段,置队列为空,将used标记数组清空} for f:=1 to r[1-now] do{取出前一阶段的所有状态节点并对其进行扩展} begin for i:=1 to maxway do{枚举对于该位置所有可能的扩展方向} begin u:=q[1-now,f].x+a[i];{a,b分别为横、纵方向上的增量} v:=q[1-now,f].y+b[i]; if (map[u,v]可达到) and(not(used[u,v]){(u,v)未被标记过} then begin inc(r[now]); if (r[now] n*m) then exit; q[now,r[now]].x:=u;, q[now,r[now]].y:=v; used[u,v]:=true; if (u=ex)and(v=ey) then{如果达到终点则打应并结束算法} begin writeln(time);close(output);halt; end; end; end; end; until 0 1; end; 参考题目:《穿越封锁线》《最后的战犯》《SEARCH》《迷宫》 Chapter 4: 最后的战犯 题目描述:话说Lucky和Feli以3721部队为诱饵,歼灭了大批日军。但顽固的日军军官小犬蠢一狼(以下简称小犬)在全军覆灭之后仍然不肯认输。他躲在山区的一个岩洞中,等待日军的救援部队。他妄图凭借复杂的地形躲避我军的追踪。于是,总部派出足智多谋的Feli前往岩洞搜寻小犬。Feli来到岩洞入口,发现岩洞其实是一个巨大的迷宫。迷宫地形极为复杂,为一个正方形,其中布满了障碍物。迷宫可以分为N*N(2≤N≤100)个区域,每个区域或者是空地,或者是不可逾越的障碍物。小犬就躲藏在其中某一个区域内。由于小犬已经忍受了几天的饥饿,Feli进入迷宫时他已经失去思维处于迷乱状态。小犬每秒钟只会沿着他的方向直线前进,如果遇到障碍物或者迷宫边界,他会立刻向右转90度(不会花去时间),继续沿直线前进(初始方向向北)。Feli每秒钟可以自主决定往哪个方向走。如果同一时刻Feli与小犬位于同一个区域,或者相邻的区域(非对角线相邻),Feli可以立刻将小犬抓住。Feli本来打算先确定小犬的位置,然后沿最短路线抓住他,但是Feli前进时小犬同时也在移动,就不能采取这种方法了。请你帮助Feli确定一种方案,使Feli抓获小犬所用的时间最短。 数据说明: 输入数据第一行是一个整数N。以下N行每行N个字符,“*”表示岩洞中的障碍物,“.”表示空地,“J”表示小犬(一开始他会向北走),“
您可能关注的文档
最近下载
- 科室全成本核算.ppt VIP
- (完整版)幼儿园五年发展规划【可编辑版】.docx VIP
- 福克纳 A Rose for Emily 献给艾米丽的玫瑰 (英文原文+译文).pdf VIP
- 高考数学总复习《函数性质》专项测试卷及答案.pdf VIP
- 课题申报书:核心素养引领下的小学数学课堂教学方式的转变研究.docx VIP
- 人教版数学五年级上册第七单元教案(含单元备课).pdf VIP
- 湖北省武汉2025届高三上学期10月月考物理试题含答案.docx VIP
- 2025年秋期部编人教版六年级上册语文全册核心素养教案(教学反思有内容+二次备课版).docx
- 初中整本书阅读系列之《红星照耀中国》第8-9篇 同红军在一起PPT课件.pptx VIP
- 2024年初级会计职称《经济法基础》精讲课件.pptx VIP
文档评论(0)