我正在用我写的贪婪算法挣扎;我知道我的算法是不完整的,但我真的不知道改进它:贪婪算法:成本最小化
Algorithme minCost()
while j<n (while all the licences have not been yet bought)
j=next licence bought
If the licence of the current month is available then
buy
EndIf
EndWhile
这个问题的提法: 向市场推出各种产品,公司需要“N”许可证。由于某些法律规定,每个月不能获得一个以上的许可证。另外,许可费用每个月增加 。事实上,虽然目前每种许可证的成本为100.00美元,但许可证j的成本(1≤j≤n)每月增加rj> 1(rj是参数)。 换句话说,购买前四个月的许可费用为100r4,而在第五个月的收购费用则为100美元(r3)^ 5。最后,我们假设ri对于不同的j是不同的。 接下来的问题是,对于一组给定的rj(1≤j≤n),以什么顺序购买“n”个许可证来最小化总体拥有成本。 1.使用贪婪方法开发多项式算法来解决这个问题。在最坏的情况下分析你的算法。 2.证明你的算法很好地返回最优解。 3.说明你在下列情况下的算法:N = 3,R1 = 3,R 2 = 4,R3 = 2
感谢
这显然是一个家庭作业问题。请分享您尝试过的内容,以及您正在努力解决的问题。您的算法在当前形式中没有太大意义,因为'j'是一个数字(在比较行上),但是它会变成下一行的许可证。 – 2011-04-12 23:45:18
大家好, 直觉上,我可以说解决方案是首先选择成本最高的rj。这是我的算法: 'code' 算法minCost(A [1 ... n]空表来存储所选的许可证) while j
cProg
2011-04-13 00:27:50