algoritmo de programação dinâmica js

A programação dinâmica (Programação Dinâmica, abreviadamente DP) é uma ideia algorítmica comumente usada para resolver problemas de otimização. Geralmente é usado para resolver problemas com propriedades de subproblemas sobrepostas e propriedades ótimas de subestrutura.

Aqui está um exemplo que mostra como usar o algoritmo de programação dinâmica para resolver o problema da mochila:

function knapsack(items, capacity) {
  const n = items.length;
  const dp = Array(n + 1).fill(Array(capacity + 1).fill(0));

  for (let i = 1; i <= n; i++) {
    const weight = items[i - 1].weight;
    const value = items[i - 1].value;
    for (let j = 1; j <= capacity; j++) {
      if (weight <= j) {
        dp[i][j] = Math.max(value + dp[i - 1][j - weight], dp[i - 1][j]);
      } else {
        dp[i][j] = dp[i - 1][j];
      }
    }
  }

  return dp[n][capacity];
}

const items = [
  { weight: 2, value: 6 },
  { weight: 2, value: 10 },
  { weight: 3, value: 12 }
];
const capacity = 5;

console.log(knapsack(items, capacity)); // 输出:22

O exemplo acima resolve um problema de mochila com três itens, cada um com peso e valor correspondentes. Precisamos escolher itens que maximizem o valor total para uma determinada capacidade de mochila. Na programação dinâmica, um array bidimensional `dp` é usado para salvar o estado, onde `dp[i][j]` representa o valor máximo que pode ser obtido quando a capacidade da mochila é `j` entre os primeiros `i ` itens. valor. Ao preencher esta matriz bidimensional, podemos obter o valor máximo final.

Espero que os exemplos acima possam ajudá-lo a compreender o algoritmo de programação dinâmica. Se você tiver mais dúvidas, fique à vontade para perguntar!
 

Acho que você gosta

Origin blog.csdn.net/weixin_39273589/article/details/132539486
Recomendado
Clasificación