Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


07 - programação - dinamica, Notas de estudo de Engenharia Elétrica

Estratégia algorítmica de programação dinamica em java

Tipologia: Notas de estudo

2011

Compartilhado em 27/04/2011

leandro-watanabe-2
leandro-watanabe-2 🇧🇷

4 documentos

1 / 21

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Fundamentos de Programação II
Estratégias algorítmicas para resolução de
problemas
Prof. MSc. Ana Paula Chaves Steinmacher
2011/01
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15

Pré-visualização parcial do texto

Baixe 07 - programação - dinamica e outras Notas de estudo em PDF para Engenharia Elétrica, somente na Docsity!

Fundamentos de Programação II

Estratégias algorítmicas para resolução de

problemas

Prof. MSc. Ana Paula Chaves Steinmacher

Nos episódios anteriores...

Divisão e conquista
Balanceamento
Tentativa e erro
Recursividade

Programação dinâmica

“A vida só pode ser compreendida andando para trás,

mas tem de ser vivida andando para a frente”

(Kierkegaard)

• Método para construção algorítmica mais utilizado

em problemas de otimização

• Aplicável a problemas nos quais a solução ótima

pode ser computada a partir da combinação de

soluções ótimas previamente calculadas e

memorizadas

Programação dinâmica

• Características dos algoritmos

– Subestrutura ótima

• Uma solução ótima para o problema contém em seu interior

soluções ótimas para subproblemas

– Superposição de subproblemas

• Um algoritmo recursivo reexamina o mesmo problema muitas

vezes

Programação dinâmica

Programação dinâmica

• Cálculo do Fatorial

– Para calcular 5!, fazemos:

– E se, depois de efetuar esse cálculo, calcularmos o 8!?

• 5!... Daqui para frente, todas as operações seriam repetidas!

Programação dinâmica

• Estratégia

– Na próxima interação,

calcula-se apenas o que não

se sabe

  • 8! = 8 * 7!
  • 7! = 7 * 6!
  • 6! = 6 * 5!

– O resultado de 5!, é obtido

do Map (5, 120)

– Atualiza o Map com os

novos resultados

Índice (!) Resultado
Índice (!) Resultado

Programação dinâmica

Programação dinâmica

• O algoritmo de Fibonacci

– Para calcular o número Fibonacci, diversos valores são

calculados mais de uma vez

Programação dinâmica

• Estratégia

– Armazenar todos os valores de Fibonacci já calculados

– Cada vez que um valor já calculado for solicitado,

nenhum cálculo precisa ser novamente realizado

– Apenas valores novos serão calculados

Programação dinâmica

Dúvidas

O problema da mochila

• Supõe-se uma mochila com capacidade para 5

quilos e um total de 4 itens

– Qual é o máximo em valores que ele vai conseguir

levar?

Peso Valor

O problema da mochila