滚动广搜的简单介绍.pdfVIP

  • 7
  • 0
  • 约5.36千字
  • 约 5页
  • 2018-03-07 发布于河南
  • 举报
滚动广搜的简单介绍

滚动广搜 我们知道朴素广搜的空间浪费很严重,原因很简单,朴素广搜将从初始节点开始可以达 到的所有状态全都记录下来了,而这样需要消耗的空间代价是指数级的。所有使用广搜时, 空间就显得很宝贵。于是我们开始寻找对状态储存的优化,以减小对空间的消耗。一类典型 的题目(求迷宫中到达某一个位置的最少步数),可以用到一种思想———滚动广搜。 滚动广搜的思想就是用到两个表来储存前一个阶段可以达到的所有状态和当前阶段可 以达到的所有状态。因为这一步能到达的所有位置只由上一步的位置决定,而所有的位置的 集合规模是 n*m(分别表示迷宫的长和宽)。我们只需要开两个大小为 n*m 的表就可以保证 能记录所有可能达到的位置了。每次取出前一阶段所有状态节点,并按照产生式规则对其扩 展并存入当前阶段的表内。然后通过 now:=1-now 不断切换前一阶段与当前阶段,(注意:每 次要对当前阶段的表和标记数组进行清空)。 1.下面给出滚动广搜的数据结构: type rec=record{节点的描述,包括横纵、坐标,根据题目不同可适当添加} x,y:integer; end; var q:ar

文档评论(0)

1亿VIP精品文档

相关文档