1 / 20

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos. Celso Carneiro Ribeiro http://www.inf.puc-rio.br/~celso. Parte 1. Introdução. Alguns exemplos. Totalizar uma folha de pagamento Ordenar uma lista de números Multiplicar dois números inteiros Multiplicar duas matrizes

Download Presentation

Projeto e Análise de Algoritmos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Projeto e Análise de Algoritmos Celso Carneiro Ribeiro http://www.inf.puc-rio.br/~celso Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro

  2. Parte 1 Introdução Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro

  3. Alguns exemplos • Totalizar uma folha de pagamento • Ordenar uma lista de números • Multiplicar dois números inteiros • Multiplicar duas matrizes • Dado um tabuleiro de xadrez, obter o melhor movimento para as peças brancas. • Obter o conjunto de rotas ótimas para um determinado número de veículos, que devem distribuir um certo número de produtos em determinados pontos de venda de certas cidades. • Dado um programa R escrito em uma linguagem L e uma entrada X qualquer para R, decidir se R termina se for submetido à entrada X. Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro

  4. O que é um algoritmo? • Do dicionário Aurélio: processo de cálculo ou de resolução de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restrições, regras formais para a obtenção do resultado, ou da solução do problema. • Conjunto predeterminado e bem definido de regras e processos destinados à solução de um problema, com um número finito de etapas. Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro

  5. O que é um algoritmo? • Sequência finita de instruções elementares e bem definidas (não-ambíguas), que levam à solução de um problema específico. • Operações válidas • Definidas (some 6 ou 7 a x) • Efetivas ( ) (aritmética de inteiros versus reais) • Término em tempo finito (procedimento computacional) Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro

  6. Qual algoritmo utilizar para resolver um problema? Quando se resolve um problema, é necessário decidir-se pelo algoritmo a ser utilizado. Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro

  7. Exemplo 1: Multiplicação de dois números inteiros com n dígitos Algoritmo 1: ~n2 Algoritmo 3: ~n1.59 Algoritmo 2: ~n2 Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro

  8. Exemplo 2: MDC – Algoritmo ingênuo Entrada: x, y  Z* Saída: MDC(x, y) = Max{ z  Z |  a,b  Z, x = az, y=bz } Function mdc(x, y: integer): integer var t: integer início se x<y então t  x senão t  y enquanto (x mod t <>0) ou (y mod t<>0) faça t  t-1; mdc  t fim fim_function Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro

  9. Exemplo 2: MDC – Algoritmo de Euclides Function mdc_e(x, y: integer): integer início se y=0 então mdc_ex senão mdc_emdc_e(y, x mod y) fim fim_function_mdc_e MDC (54180, 13125) = ? MDC (54180, 13125) = 105 Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro

  10. Exemplo 2: MDC Algoritmo ingênuo realiza 13020 iterações. Algoritmo de Euclides realiza 5 iterações! Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro

  11. Exemplo 2: MDC – Algoritmo de Euclides Eliminação da recursão function mdc(x, y: integer): integer var t: integer início enquanto y<>0 faça início t x mod y x y y t fim mdc_e_i  x fim fim_function_mdc Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro

  12. Exemplo 3:Cálculo do n-ésimo elemento da seqüência de Fibonacci Seqüência de Fibonacci: an = an-1 + an-2 a0 = 0 a1 = 1 Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro

  13. Exemplo 3:Cálculo do n-ésimo elemento da seqüência de Fibonacci Algoritmo 1 function fib1(n) se n<2 então retorne n senão retorne fib1(n-1) + fib1(n-2) fim_function_fib1 Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro

  14. Exemplo 3:Cálculo do n-ésimo elemento da seqüência de Fibonacci Algoritmo 2 function fib2(n) i  0 j  1 para k=1 até n faça j  i+j i  j-i fim_para retorne j fim_function_fib2 Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro

  15. Exemplo 3:Cálculo do n-ésimo elemento da seqüência de Fibonacci Algoritmo 3 function fib3(n) i  1, j  0, k  0, h  1 enquanto n>0 faça se n é ímpar então t j.h j i.h + j.k + t i i.k + t fim_se t h2 h 2.k.h + t k k2 + t n n div 2 fim_enquanto retorne j fim_function_fib3 Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro

  16. Exemplo 3:Cálculo do n-ésimo elemento da seqüência de Fibonacci Cálculo da complexidade • fib1(n) = fib1(n-1) + fib1(n-2) • Cada chamada de fib1: O(1) • T(n) é o número de chamadas de fib1 para o cálculo do n-ésimo termo Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro

  17. Exemplo 3:Cálculo do n-ésimo elemento da seqüência de Fibonacci Cálculo da complexidade • Parte homogênea: solução da forma rn • Parte não-homogênea: métodos dos coeficientes indeterminados (termo não homogêneo=1) Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro

  18. Exemplo 3:Cálculo do n-ésimo elemento da seqüência de Fibonacci Cálculo da complexidade Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro

  19. Exemplo 3:Cálculo do n-ésimo elemento da seqüência de Fibonacci Cálculo da complexidade • S(n): número de somas efetuadas para calcular n-ésimo termo • S(n) = S(n-1) + S(n-2) + 1 Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro

  20. Exemplo 3:Cálculo do n-ésimo elemento da seqüência de Fibonacci Algoritmo 1: Algoritmo 2: Algoritmo 3: Cálculo da complexidade Algoritmo 1: Algoritmo 2: f100: 21 dígitos decimais Algoritmo 3: Pascal, CDC Cyber 835: n=102 n=108 109 anos _ 1 ½ ms 25 minutos ½ ms 2 ms Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro

More Related