贪心算法 - 折旧成本

时间:2013-09-09 13:01:14

标签: algorithm math optimization analysis greedy

这是我在Kleinberg和Tardos的算法设计中发现的另一个问题。

假设我们试图以r i <<每月1美元,从100美元开始,所以如果你从现在开始销售它,你会收到100.r i t

如果您每月只能销售一件商品,那么最佳销售顺序是什么?

输入(3/4; 1/2; 1/100)

最佳顺序为[100x {1/2 +(3/4) 2 +(1/100) 3 }]。

我不确定如何解决这个问题。

2 个答案:

答案 0 :(得分:0)

假设有N个项目具有单独的Ri。

  1. 计算N x N矩阵,其中Cij = Power(Ri,j)。

  2. 问题现在归结为分配问题,N个对象放在N个位置,每个对象都有相应的利润。

  3. 使用匈牙利算法等任何算法最大化总利润。

答案 1 :(得分:0)

贪婪的方法应该有效。每个月出售最大化Ri ^月的项目 - Ri ^(月+ 1)。这意味着我们出售的物品在下个月将失去最大价值。

在示例输入中:

  • 1/2 ^ 1 - 1/2 ^ 2 = 0.25
  • 3/4 ^ 1 - 3/4 ^ 2 = 0.1875
  • 1/100 ^ 1 - 1/100 ^ 2 = 0.0099

所以第一个月我们卖的物品是R = 1/2

  • 3/4 ^ 2 - 3/4 ^ 3 = 0.046875
  • 1/100 ^ 2 - 1/100 ^ 3 = 0.000099

R = 3/4作为第二项,而1/100作为最后一项。

我不是数学家,所以我不能给你一个证明,但很明显,如果你接受形式的函数a ^ xa ^(x + 1)= b ^ xb ^(x + 1 )只有一个解决方案。