问题描述
Seriling公司购买长钢条,将其切割为短钢条出售。切割工序本身没有成本支出。公司管理层希望知道最佳的切割方案。
假定我们知道Serling公司出售一段长为 i i i英寸的钢条的价格为 p i p_i pi( i = 1 , 2 , . . . , i=1, 2, ... , i=1,2,...,单位为美元)。钢条的长度均为整英寸。下表给出一个价格表样例。
长度 i i i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
价格 p i p_i pi | 1 | 5 | 8 | 9 | 10 | 17 | 17 | 20 | 24 | 30 |
正式的问题描述为:给定一段长度为n英寸的钢条和一个价格表 p i ( i = 1 , 2 , . . . , n ) p_i(i=1, 2, ..., n) pi(i=1,2,...,n),求切割方案,使得销售的收益 r n r_n rn最大。注意,如果长度为n英寸的钢条价格 p n p_n pn足够大,最优解可能就是完全不需要切割。
考虑n=3的情况,我们用一组数字来表示一种可能的切割情况,共有(3),(1, 2),(2, 1),(1, 1, 1)四种可能。卖出获得的收益分别是8,6,6,3美元。
对一个长度为n的钢条,在距离左端 i i i英寸处我们可以选择切或不切,所以总共有 2 n − 1 2^{n-1} 2n−1种切割方案。假设最优的方案是切为k段( 1 ≤ k ≤ n 1 \leq k \leq n 1≤k≤n),每段长为 i k i_k ik,那么最优切割方案可表示为
n = i 1 + i 2 + . . . + i k n=i_1 + i_2 + ... + i_k n=i1+i2+...+ik
该方案下的最大收益为
r n = p i 1 + p i 2 + . . . + p i k r_n = p_{i_1} + p_{i_2} + ... + p_{i_k} rn=pi