A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Análise de algoritmos Programação Dinámica UNISUL Ciência da Computação Prof. Maria Inés Castiñeira, Dra.

Apresentações semelhantes


Apresentação em tema: "Análise de algoritmos Programação Dinámica UNISUL Ciência da Computação Prof. Maria Inés Castiñeira, Dra."— Transcrição da apresentação:

1 Análise de algoritmos Programação Dinámica UNISUL Ciência da Computação Prof. Maria Inés Castiñeira, Dra.

2 2 Exemplo: Fibonacci Números de Fibonacci Entrada:Um número inteiro n. Saída:O número de Fibonacci Fn, definido da seguinte forma: F0 = 0, F1= 1, Fn= Fn-1+ Fn-2 para n 2

3 3 Fibonacci recursivo Solução clásica recursiva: Fib(n) if n 1 then return n else return Fib(n – 1) + Fib(n - 2)

4 4 Análise de Fibonacci Análise através da resolução de uma relação de recorrência: – T(n) = T(n – 1) + T(n – 2) + c – O(2^n) Solução ineficiente. Qual o motivo da ineficiência?

5 5 Solução para Fibonacci Árvore espaço das soluçoes para Fibonacci

6 6 Solução ineficiente Cálculos repetidos!

7 7 Solução Fibonacci alternativa Solução alternativa: – Utilizar um array f[0,..., n] para guardar os valores calculados. – Inicialmente, f contém apenas símbolos especiais. Fib1(n) if f[n] then return f[n] if n 1 then return f[n] n return f[n] Fib1(n – 1) + Fib1(n - 2)

8 8 Fibonacci f1 F3 F4 F5 %%%

9 9 Fibonacci f1 F3 F4 F5 %%% F2 F3

10 10 Fibonacci f1 F3 F4 F5 %%% F2 F3 F1F2

11 11 Fibonacci f1 F3 F4 F5 %%% F2 F3 F1F2 F0F1

12 12 Fibonacci f1 F3 F4 F5 01%% F2 F3 F1F2 F0F1

13 13 Fibonacci f1 F3 F4 F5 011%% F2 F3 F1 F2 F0F1

14 14 Fibonacci f1 F3 F4 F5 011%% F2 F3 F1 F2 F0F1

15 15 Fibonacci f1 F3 F4 F % F2 F3 F1 F2 F0F1

16 16 Fibonacci f2 Uma outra solução alternativa: – Eliminar as chamadas recursivas. – Utilizar o array para armazenar dados calculados. – Estratégia bottom-up. Fib2(n) f[0] 0 f[1] 1 For i 2 to n do f[i] f[i – 1] + f[i - 2] return f[n]

17 17 Comparando soluções Podemos identificar que Fib2 é O(n). Fib1 é também O(n). Ainda usa recursão. Abordagem utilizada: – Encontrar função recursiva apropriada. – Adicionar memorização para armazenar resultados de subproblemas. – Determinar uma versão bottom-up, iterativa

18 Programação dinâmica Fib2 é PROGRAMAÇÃO DINÂMICA!!!!! Programação dinâmica = resolver bottom-up, usar estrutura auxiliar (tabela ou array) para guardar valores intermediários

19 Programação Dinámica Quando a soma dos tamanhos dos subproblemas é O(n) então é provável que o algoritmo recursivo tenha complexidade polinomial. Quando a divisão de um problema de tamanho n resulta em n subproblemas de tamanho n-1 então é provável que o algoritmo recursivo tenha complexidade exponencial..

20 Programação Dinámica Nesse caso, a técnica de programação dinâmica pode levar a um algoritmo mais eficiente. A programação dinâmica calcula a solução para todos os subproblemas, partindo dos subproblemas menores para os maiores, armazenando os resultados em uma tabela. A vantagem é que uma vez que um subproblema é resolvido, a resposta é armazenada em uma tabela e nunca mais é recalculado.

21 Programação dinâmica Aplicado quando recursão produz repetição dos mesmos subproblemas. Proposta: reusar computação. PD = DC + tabela. Versão bottom-up é mais compacta e fácil de efetuar análise. Estratégia utilizada em problemas de otimização.

22 22 Quando aplicar Prog. Dinâmica? Aplicar em problemas que, em princípio, parece requerer muito tempo para ser resolvido (em geral é de ordem exponencial). Principais características: Princípio da Otimalidade (subproblemas ótimos): o valor ótimo global pode ser definido em termos dos valores ótimos dos subproblemas. Overlap de Subproblemas:os subproblemas não são independentes. Existe um overlap entre eles (logo, devem ser construídos bottom-up).

23 Bibliografia Cormen, Leiserson e Rivest, ALGORITMOS: teoria e prática. Rio de Janeiro: Campus, FIGUEREDO, Jorge. Material didático de Técnicas e análise de algoritmos. UFCG. Disponível em


Carregar ppt "Análise de algoritmos Programação Dinámica UNISUL Ciência da Computação Prof. Maria Inés Castiñeira, Dra."

Apresentações semelhantes


Anúncios Google