算法设计与分析背包问题.docVIP

  • 54
  • 0
  • 约 4页
  • 2017-08-17 发布于重庆
  • 举报
算法设计与分析背包问题.doc

0/1背包问题的分枝-限界法 用优先队列式分枝限界法解决0/1背包问题(作为极大化问题),需要确定以下四个问题:解空间树中结点的结构、如何生成一个给定结点的儿子、如何组织活结点表、如何识别答案结点。 我们采用完整的二叉树作为解空间树,放在活结点表中的每个结点具有6个信息段:Parent、Level、Tag、CC、CV、CUB。其中Parent是结点X的父亲结点连接指针;Level标志出结点X在解空间树中的级数,通过置表示生成X的左儿子,置表示生成X的右儿子;信息段Tag用来输出最优解各个分量的值;信息段CC记录背包在结点X处的可用空间(即剩余空间),在确定X左儿子的可行性时用;CV记录在结点X处背包中已装物品的价值(或效益值),等于;信息段CUB用来存放结点X的Pvu值。这里,Pvu表示在结点X所表示的状态下,可行解所能达到的可能值的上界。也即是说,当的值确定后,可行解所能达到的效益值的上界。类似地,当的值确定后,可行解所能达到的最大效益值的下界记做Pvl。如果到目前为止所知道的可行解的最大效益值CV不小于Pvl,则当PvuCV时,就应该杀死结点X。所以,Pvu(X)可以作为限界函数和优先级函数。关于它们的计算将由一个子程序给出。 作为极大化问题处理的优先队列式分枝限界法解0/1背包问题的程序LCKNAP采用了六个子程序:LUBound、NewNode、Finish、Init

文档评论(0)

1亿VIP精品文档

相关文档