Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouAndreia Candal Domingues Alterado mais de 8 anos atrás
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:
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.