Please enable JavaScript.
Coggle requires JavaScript to display documents.
Programação Dinâmica - Coggle Diagram
Programação Dinâmica
Técnica de design de algoritmos criada por Richard Bellman nos anos 50.
Resolver problemas com subproblemas sobrepostos.
Uso da recorrência para relacionar a solução de um problema à solução de instâncias menores.
Resolve cada um dos subproblemas uma vez e armazena os resultados em uma tabela. Ex: armazenar uma quantidade de elementos da sequência Fibonacci em um array.
Uma aplicação mais direta de programação dinâmica pode ser vista como uma variação especial de space-for-time trade off.
Bottom-Up: resolve todos os subproblemas.
Top-Down: resolve alguns subproblemas.
Princípio da Otimalidade: uma solução ideal para qualquer instância de um problema de otimização é composta por soluções ótimas para suas subinstâncias.
Coin row problem
Uma fila de n moedas com valores inteiros positivos e não necessariamente distintos. Objetivo: pegar a quantia máxima de dinheiro com a restrição que duas moedas adjacentes na fila inicial não podem ser escolhidas. Assim, a seguinte recorrência é formada:
1 more item...
Change making problem
Dar o troco para uma quantidade n usando o menor número de denominações de moedas:
d1 < d2 < ... < dm
d1 = 1 e m é o número de denominações distintas de moedas.
1 more item...
Coin collecting problem
Algumas moedas são colocadas em células de um tabuleiro nxm (não mais de 1 moeda por célula). Um robô, localizado na célula superior esquerda do tabuleiro, precisa coletar o máximo de moedas possível e trazê-las para a célula inferior direita. A cada passo, o robô pode mover uma célula para a direita ou uma célula para baixo da sua posição atual. Sempre que ele visitar uma célula com uma moeda, ele a pega.
1 more item...