Я борюсь со следующим жадным алгоритмом, который я написал; Я знаю, что мой алгоритм не завершен, но я действительно не знаю, как его улучшить.
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 долларов США, стоимость разрешения j (1 ≤ j ≤ n) увеличивается с коэффициентом rj> 1 каждый месяц (rj являются параметрами).
Другими словами, покупка лицензии в течение первых четырех месяцев стоит 100р4, в то время как ее приобретение в течение пятого месяца, например, будет стоить $ 100 (р3) ^ 5. Наконец, мы предполагаем, что ri отличается от rj для i, отличного от j.
Тогда возникает вопрос, для какого набора rj (1 ≤ j ≤ n), в каком порядке покупать разрешения «n», чтобы минимизировать общую стоимость владения.
1. Разработайте полиномиальный алгоритм, используя жадный подход, для решения этой проблемы. Проанализируйте свой алгоритм в худшем случае.
2. Докажите, что ваш алгоритм хорошо возвращает оптимальное решение.
3. Проиллюстрируйте свой алгоритм на следующем примере: n = 3, r1 = 3, r2 = 4, r3 = 2.
Спасибо