Programação dinâmica
Estados, recorrências, ordem de cálculo e reconstrução na mochila, trocos, subconjuntos e subvetor máximo.
Definir estado antes de preencher
Escreve significado da célula, bases, alternativas e ordem com dependências prontas. Memoização evita inalcançáveis; tabulação explicita ordem. Custo é estados vezes trabalho por estado.
Tabelas essenciais
é valor da mochila, é número de moedas, é existência booleana e é melhor soma terminada em . O objeto tem peso e valor ; a moeda tem valor facial e stock . é a capacidade da mochila, é o alvo de soma ou trocos, é o maior stock e é a quantidade usada da denominação atual.
| Problema | Estado e transição | Custo |
|---|---|---|
| Mochila 0-1 | se ; senão | |
| Trocos ilimitados | ; ignora a segunda se | |
| Trocos com stock | com | direto |
| Soma de subconjuntos | ||
| Subvetor não vazio | com ; resposta é o máximo global |
Bases: mochila zero; trocos com alvo zero custa zero e alvo positivo sem moedas custa infinito; soma com verdadeiro. Reconstruir exige pais ou decisões; vetor único economiza espaço mas apaga histórico.
Regras que evitam erros
- Linha anterior impede repetir objeto na 0-1. Percorre por ordem decrescente no vetor único; crescente resolveria a ilimitada.
- Com 1 objeto de peso 2 e valor 3, com , percorrer por ordem crescente dá 6 por reutilizar o objeto duas vezes; por ordem decrescente dá 3, o valor correto da mochila 0-1.
- e são pseudopolinomiais com em binário.
- DAG com destino : , em ordem inversa; sem caminho mantém infinito.
- Combinações: ; reduz memória com decrescente.