中科院陈玉福算法讲义ch7.pdfVIP

  • 17
  • 0
  • 约3.73万字
  • 约 21页
  • 2017-07-05 发布于天津
  • 举报
中科院陈玉福算法讲义ch7.pdf

第七章 分枝限界算法 157 第七章 分枝-限界法 §1 算法基本思想 分枝限界法同回溯法类似,它也是在解空间中搜索问题的可行解或最优解, 但搜索的方式不同。回溯法采用深度优先的方式,朝纵深方向搜索,直至达到问 题的一个可行解,或经判断沿此路径不会达到问题的可行解或最优解时,停止向 前搜索,并沿原路返回到该路径上最后一个还可扩展的节点。然后,从该节点出 发朝新的方向纵深搜索。分枝限界法则采用宽度优先的方式搜索解空间树,它将 活节点存放在一个特殊的表中。其策略是:在扩展节点处,首先生成其所有的儿 子节点,将那些导致不可行解或导致非最优解的儿子节点舍弃,其余儿子节点加 入活节点表中。然后,从活节点表中取出一个节点作为当前扩展节点,重复上 述节点扩展过程。 从活节点表中选择下一扩展节点的不同方式导致不同的分枝限界法。最常见 的有以下两种方式: 1). 队列式 这种方式是将活节点表组织成一个队列或者一个栈,并按队列的先进先出 (FIFO)或后入先出(LIFO)原则选取下一个节点作为当前扩展节点。 2). 优先队列式 这种方式是将活节点表组织成一个优先队列,并按优先队列给节点规定的优 先级选取优先级最高的下一个节点作为当前扩展节点。 这两种方式各有优缺点,第一种方式组织活节点表简单省时,但是搜索解的 路线比较单一,可能会绕道找到解;第二种方式在搜索方向上有所选择,可能会 取近道找到解,但是组织节点表较复杂,有时会占用不少的时间。 队列式分枝限界法搜索解空间树的方式类似于解空间树的宽度优先搜索,不 同的是队列式分枝限界法不搜索不可行节点(已经被判定不可能导致可行解或不 可能导致最优解的节点)为根的子树。为达此目的,算法不把这样的节点列入活 节点表。在选择当前扩展节点上是按照某种固定顺序,可称为静态选择法。 优先队列式分枝限界法的搜索方式是根据活节点表中节点的优先级确定下 一个扩展节点。节点的优先级常用一个与该节点有关的数值p来表示。最大优先 队列规定p值较大的节点的优先级较高。在算法实现时通常用一个最大堆来实现 最大优先队列,用最大堆的Deletemax运算抽取堆的根节点作为当前扩展节点, 体现最大效益优先的原则。类似地,最小优先队列规定p值较小的节点的优先级 较高。在算法实现时,常用一个最小堆来实现,用最小堆的Deletemin运算抽取 堆的根节点作为当前扩展节点,体现最小优先的原则。采用优先队列式分枝限界 算法解决具体问题时,应根据问题的特点选用最大优先或最小优先队列,确定各 158 第七章 分枝限界算法 个节点的p值。 例7.1.1 旅行商问题,n=4,其解空间树是一棵排列树。对于如下的赋权图 G表示的旅行商问题,我们分别说明队列式分支限界算法和优先队列分枝限界算 法的执行过程。 30 A 1 2 1 5 6 10 4 B 1 2 4 3 4 25 3 20 30 C 8 6 D 3 4 E 2 (a)

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档