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

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

Setembro 2004Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro1 Projeto e Análise de Algoritmos Celso Carneiro Ribeiro

Apresentações semelhantes


Apresentação em tema: "Setembro 2004Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro1 Projeto e Análise de Algoritmos Celso Carneiro Ribeiro"— Transcrição da apresentação:

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

2 Setembro 2004Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro2 Parte 1 Introdução

3 Setembro 2004Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro3 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. Alguns exemplos

4 Setembro 2004Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro4 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.

5 Setembro 2004Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro5 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)

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

7 Setembro 2004Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro7 Exemplo 1: Multiplicação de dois números inteiros com n dígitos Algoritmo 1: ~n 2 Algoritmo 2: ~n 2 Algoritmo 3: ~n 1.59

8 Setembro 2004Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro8 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

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

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

11 Setembro 2004Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro11 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

12 Setembro 2004Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro12 a n = a n-1 + a n-2 a 0 = 0 a 1 = 1 Exemplo 3: Cálculo do n-ésimo elemento da seqüência de Fibonacci Seqüência de Fibonacci:

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

14 Setembro 2004Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro14 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

15 Setembro 2004Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro15 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  h 2 h  2.k.h + t k  k 2 + t n  n div 2 fim_enquanto retorne j fim_function_fib3

16 Setembro 2004Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro16 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

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

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

19 Setembro 2004Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro19 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 n0123456789101112131415 S(n)00124712203354881432323766091596

20 Setembro 2004Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro20 Exemplo 3: Cálculo do n-ésimo elemento da seqüência de Fibonacci Cálculo da complexidade n=10 2 n=10 8 10 9 anos _ 1 ½ ms 25 minutos ½ ms 2 ms Algoritmo 1: Algoritmo 2: Algoritmo 3: Algoritmo 1: Algoritmo 2: Algoritmo 3: f 100 : 21 dígitos decimais Pascal, CDC Cyber 835:


Carregar ppt "Setembro 2004Projeto e Análise de Algoritmos - Celso Carneiro Ribeiro1 Projeto e Análise de Algoritmos Celso Carneiro Ribeiro"

Apresentações semelhantes


Anúncios Google