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