Você está na página 1de 4

Centro Universitrio Baro de Mau

Programao dinmica

Matheus Felipe Piscioneri

Ribeiro Preto - SP

Programao Dinmica significa planejamento e refere-se construo da tabela que armazena as solues das subinstncias. um mtodo para a construo de algoritmos para a resoluo de problemas computacionais, desenvolvendo algoritmos coerentes e vlidos para solucionar problemas e implement-los utilizando uma linguagem de programao, atravs da anlise de uma sequncia de problemas mais simples do que o problema original. Muitos algoritmos eficientes seguem o paradigma. A resoluo do problema original de N variveis caracterizada pela determinao de uma varivel e pela resoluo de um problema que possua uma varivel a menos (N-1). A estratgia tima para resolver um problema continua a ser tima quando este subproblema de um problema de maior dimenso e aplicvel a problemas nos quais a soluo tima pode ser computada a partir da soluo tima previamente calculada e memorizada. Este por sua vez resolvido pela determinao de uma varivel e pela resoluo de um problema de N-2 variveis e assim por diante. A caracterstica distintiva da programao dinmica a tabela que armazena as solues das vrias subinstncias. Como em um algoritmo recursivo, cada instncia do problema resolvida a partir da soluo de instncias menores e o consumo de tempo do algoritmo em geral proporcional ao tamanho da tabela. O problema dividido em diferentes nveis naturais e em cada uma delas estabelece-se um plano de decises. Cada etapa ter associado um determinado nmero de estados (finito ou infinito, discreto ou contnuo dependendo da natureza do problema), em geral os estados so as vrias condies possveis nos quais o sistema se pode apresentar numa dada etapa. Segundo um determinado plano o seu efeito em cada etapa transformar o estado corrente num outro estado associado etapa seguinte, essa transformao pode eventualmente obedecer a uma distribuio de probabilidade, contudo os casos apresentados so de carter determinstico e no probabilstico. Todo o problema resolvel por Programao Dinmica tem de obedecer a este princpio, isto , as suas caractersticas tm de ser tais que o conhecimento do estado corrente do sistema contenha toda a informao cerca do seu prvio comportamento, necessria determinao do plano timo a partir dele. O processo de resoluo comea por determinar o plano timo para cada estado da ltima etapa at encontrar o plano timo para a etapa inicial, esta a nica maneira correta de proceder

relativamente a problemas cujas etapas correspondem a perodos de tempo. O que um problema de otimizao deve ter para que a programao dinmica seja aplicvel so duas principais caractersticas: subestrutura tima e superposio de subproblemas. Um problema apresenta uma subestrutura tima quando uma soluo tima para o problema contm em seu interior solues timas para subproblemas. A superposio de subproblemas acontece quando um algoritmo recursivo reexamina o mesmo problema muitas vezes.

Exemplos
Como exemplo simples de programao dinmica, com alguma frequncia, alguns textos, utilizam a determinao da Sequncia de Fibonacci, quando implementada de forma recursiva. Isso porque quando a forma recursiva implementada sem maiores cuidados, sem memorizao, o seu clculo de tempo cresce exponencialmente. Observe que a rigor esse caso no um problema de programao dinmica, visto que o clculo do n-simo nmero de Fibonacci cresce linearmente e no exponencialmente. Porm este exemplo ainda assim utilizado, pois a simplicidade grande. Se n <= 1 ento F(n) := 1 caso contrrio F(n) := F(n-1) + F(n-2)

Bibliografia

http://www.ufjf.br/epd015/files/2010/06/ProgramacaoDinamica.pdf http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_din %C3%A2mica http://www.dca.fee.unicamp.br/~gomide/courses/IA718/transp/IA718 IntroducaoProgramacaoDinamica_2.pdf http://www.ime.usp.br/~pf/analise_de_algoritmos/aulas/dynamicprogramming.html http://www.estv.ipv.pt/PaginasPessoais/jsantos/MetOptimEngInf/Pro gramacaoDinamica.pdf