Реализация математической формулы - PullRequest
0 голосов
/ 23 ноября 2018

Я хочу реализовать следующую математическую формулу в Python:

оптимальный [i] [s] = max {оптимальный [i + 1] [s], оптимальный [i + 1] [sJ [i]] + V [i-1] (s> J [i])}

Я попробовал следующее:

W={1:3,2:2,3:1,4:4,5:5,6:9,7:6,8:7}
V=[25,20,15,40,50,55,45,58]
optimal=[[]]
J=list(W.values())
s=12
for i in range(1,len(W)):
    while J[i]<s:
        optimal[i][s]=max(optimal[i+1][s],optimal[i+1][s-J[i]]+V[i-1])
print(optimal)

Но я получаю сообщение об ошибке:

Индекс списка вне диапазона.

1 Ответ

0 голосов
/ 23 ноября 2018

Ваша формулировка похожа на динамическое программирование.Если вы ищете с динамическим программированием и ключевыми словами Python, вы можете найти хорошие примеры.Особенно https://www.geeksforgeeks.org/0-1-knapsack-problem-dp-10/ и https://codereview.stackexchange.com/questions/20569/dynamic-programming-knapsack-solutionhttps://www.geeksforgeeks.org/0-1-knapsack-problem-dp-10/

...