私が書いた次の貪欲なアルゴリズムに苦労しています。アルゴリズムが完全ではないことはわかっていますが、それを改善する方法は本当にわかりません.:
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" 個のライセンスを必要とします。特定の法律により、1 か月に複数の許可を取得することはできません。さらに、許可の費用は毎月増加します。実際、各許可証の費用は現在 $100.00 ですが、許可証 j, (1 ≤ j ≤ n) の費用は毎月 rj > 1 ずつ増加します (rj はパラメーターです)。つまり、最初の 4 か月でライセンスを購入すると 100r4 の費用がかかりますが、たとえば、5 か月でライセンスを取得するには 100(r3)^5 の費用がかかります。最後に、i が j と異なる場合、ri は rj とは異なると仮定します。問題は、与えられた rj (1 ≤ j ≤ n) のセットに対して、総所有コストを最小化するために "n" パーミットをどのような順序で購入するかです。1. この問題を解決するために、貪欲なアプローチを使用して多項式アルゴリズムを開発します。最悪の場合のアルゴリズムを分析します。2. アルゴリズムが最適解を適切に返すことを証明します。3. 次の場合のアルゴリズムを説明してください: n = 3、r1 = 3、r2 = 4、r3 = 2.
ありがとう