Le temps de la Complexité de sac à Dos de la Programmation Dynamique de la solution

J'ai vu le récursive de la programmation dynamique solution à 0-1 problème de sac-à-Dos ici. Je memoized la solution et est venu avec le code suivant.

private static int knapsack(int i, int W, Map<Pair<Integer, Integer>>, Integer> cache)
{
 if (i < 0) {
    return 0;
 }
Pair<Integer, Integer> pair = new Pair<>(i,W);
if (cache.contains(pair)) {
  return cache.get(pair)
}
int result = -1;
if (weights[i] > W) {
    result = knapsack(i-1, W);
} else {
    result = Math.max(knapsack(i-1, W), knapsack(i-1, W - weights[i]) + values[i]);
}
cache.put(pair, result);
return result;
}

Quelqu'un peut m'expliquer pourquoi la complexité temporelle O(nW) où n est le nombre d'éléments et W est la restriction sur le poids.

InformationsquelleAutor Lee | 2014-06-15