我正在用我寫的貪婪算法掙扎;我知道我的算法是不完整的,但我真的不知道改進它:貪婪算法:成本最小化
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