计算机算法动态规划精选.ppt

* 0-1背包问题 设所给0-1背包问题的子问题 的最优值为m(i,j),即m(i,j)是背包容量为j,可选择物品为i,i+1,…,n时0-1背包问题的最优值。由0-1背包问题的最优子结构性质,可以建立计算m(i,j)的递归式如下。 算法复杂度分析: 从m(i,j)的递归式容易看出,算法需要O(nc)计算时间。当背包容量c很大时,算法需要的计算时间较多。例如,当c2n时,算法需要Ω(n2n)计算时间。 * 算法改进 由m(i,j)的递归式容易证明,在一般情况下,对每一个确定的i(1≤i≤n),函数m(i,j)是关于变量j的阶梯状单调不减函数。跳跃点是这一类函数的描述特征。在一般情况下,函数m(i,j)由其全部跳跃点唯一确定。如图所示。 对每一个确定的i(1≤i≤n),用一个表p[i]存储函数m(i,j)的全部跳跃点。表p[i]可依计算m(i,j)的递归式递归地由表p[i+1]计算,初始时p[n+1]={(0,0)}。 * 一个例子 n=3,c=6,w={4,3,2},v={5,2,1}。 x (0,0) m(4,x) x (2,1) m(4,x-2)+1 x (0,0) (2,1) m(3,x) (3,2) x m(3,x-3)+2 (5,3) x (0,0) (2,1) m(2,x) (3,2) (5,3) x m(2,x-4)+5 (4,5) (6,6) (7,7) (9,

文档评论(0)

1亿VIP精品文档

相关文档