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

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

©Prof. Lineu MialaretAula 13 - 1/22Cálculo Numérico Cálculo Numérico – CN Prof. Lineu Mialaret Aula 13: Análise de Algoritmos (1) Instituto Federal de.

Apresentações semelhantes


Apresentação em tema: "©Prof. Lineu MialaretAula 13 - 1/22Cálculo Numérico Cálculo Numérico – CN Prof. Lineu Mialaret Aula 13: Análise de Algoritmos (1) Instituto Federal de."— Transcrição da apresentação:

1 ©Prof. Lineu MialaretAula /22Cálculo Numérico Cálculo Numérico – CN Prof. Lineu Mialaret Aula 13: Análise de Algoritmos (1) Instituto Federal de Educação, Ciência e Tecnologia de São Paulo - IFSP Campus de Caraguatatuba Licenciatura em Matemática 1 0 Semestre de 2013

2 ©Prof. Lineu MialaretAula /22Cálculo Numérico Análise de Algoritmos Tempo de Execução

3 ©Prof. Lineu MialaretAula /22Cálculo Numérico n Na história clássica, um rei pediu ao famoso matemático Arquimedes que determinasse se uma coroa dourada era realmente de ouro puro e não continha prata, conforme se desconfiava. n Arquimedes descobriu um modo de resolver esse problema quando estava numa banheira. n Ele notou que a água transbordava da banheira à medida que ele entrava e, percebendo as implicações deste fato, ele imediatamente saiu do banho e correu sem roupa pela ruas da cidade gritando Eureka, Eureka. n Ele descobriu uma ferramenta de análise (o deslocamento de água), que quando combinada com uma escala poderia determinar se a coroa era de ouro puro ou não. n Esta descoberta foi infeliz para o ourives que fez a coroa... Análise de Algoritmos Metodologia Geral (1)

4 ©Prof. Lineu MialaretAula /22Cálculo Numérico n De maneira bastante sucinta, um algoritmo pode ser descrito como uma sequencia de passos realizadas para satisfaze um determinado objeto num tempo finito. n Na Computação, para se classificar algoritmos como bons, deve-se ter maneiras precisas de analisá-los. n O ferramental básico de análise envolve a caracterização do tempo de execução de algoritmos, com o consumo de memória também sendo de interesse. n Tempo de execução (running time) é uma medida natural, pois tempo é um recurso precioso. Análise de Algoritmos Metodologia Geral (2)

5 ©Prof. Lineu MialaretAula /22Cálculo Numérico Análise de Algoritmos Metodologia Geral (3)

6 ©Prof. Lineu MialaretAula /22Cálculo Numérico n Estudos experimentais para a aferição do tempo de execução (running time) de algoritmos são afetados por: u Tamanho da entrada u Variações para entradas de mesmo tamanho u Ambiente de Hardware F processador, clock F memória F disco... u Ambiente de Software F Sistema Operacional F Linguagem de Programação F Compilador F Interpretador... Análise de Algoritmos Metodologia Geral (4)

7 ©Prof. Lineu MialaretAula /22Cálculo Numérico Análise de Algoritmos Metodologia Geral (5) n Estudos experimentais sobre tempo de execução (running time) de algoritmos são úteis mas têm três limitações principais: u Experimentos podem ser feitos apenas sobre um conjunto limitado de entradas de testes e podem não ser indicativos do tempo de execução para outras entradas não testadas; u É difícil comparar a eficiência de 2 algoritmos a menos que os experimentos tenham sido feitos nas mesmas plataformas (hardware+software); e u É necessário implementar e executar o algoritmo para poder estudar seu tempo de execução experimentalmente.

8 ©Prof. Lineu MialaretAula /22Cálculo Numérico n Requisitos para uma Abordagem Formal (Metodologia) - Uma metodologia geral para análise de algoritmos deve: u Considerar todas as possíveis entradas; u Permitir avaliar a eficiência relativa de quaisquer 2 algoritmos, de forma independente do ambiente de hardware e software empregado; e u Poder ser utilizada com base num estudo da descrição de alto nível do algoritmo, sem implementá-lo efetivamente ou sem aplicar abordagens experimentais sobre ele. Análise de Algoritmos Metodologia Geral (6)

9 ©Prof. Lineu MialaretAula /22Cálculo Numérico Análise de Algoritmos Metodologia Geral (7) n A metodologia deve associar com cada algoritmo uma função f(n) que caracteriza o tempo de execução (running time) do algoritmo como uma função do tamanho n da entrada. n Por exemplo, dada a afirmação O Algoritmo A roda em tempo proporcional a n, isto significa que se forem efetuados experimentos nesse algoritmo, será observado que o tempo de execução real do algoritmo A com qualquer entrada de tamanho n nunca excede cn, onde c é uma constante que depende do hardware e do software usado. n Dados dois algoritmos A e B, onde o algoritmo A é executado em tempo proporcional a n e o algoritmo B roda em tempo proporcional a n 2, o algoritmo A será preferido em relação ao algoritmo B, uma vez que a função n cresce mais devagar que a função n 2.

10 ©Prof. Lineu MialaretAula /22Cálculo Numérico Análise de Algoritmos Pseudocódigo (1) n É freqüente se solicitar aos programadores que descrevam algoritmos de uma forma que seja especialmente adequada a outros programadores. n Essas descrições não são programas de computador, mas são mais estruturadas do que linguagem coloquial ou natural (simples prosa). n Pseudocódigo constitui-se nas descrições de alto nível, combinando linguagem natural e estruturas familiares de uma linguagem de programação, numa forma clara e informativa, para descrever algoritmos. n Deve ser legível a um leitor humano. n Deve comunicar idéias de alto nível e não detalhes de implementação de baixo nível.

11 ©Prof. Lineu MialaretAula /22Cálculo Numérico Análise de Algoritmos Pseudocódigo (2) n Pseudocódigo é uma mistura de linguagem natural e estruturas de programação de alto nível usada para descrever as idéias principais da implementação genérica de uma estrutura de dados ou algoritmo. n No entanto não existe uma definição precisa da linguagem de pseudocódigo por causa do uso de linguagem natural. n Ao mesmo tempo, para aumentar sua legibilidade e clareza, o pseudocódigo mistura linguagem natural com construções- padrão de linguagens de programação, como apresentado a seguir :

12 ©Prof. Lineu MialaretAula /22Cálculo Numérico Análise de Algoritmos Pseudocódigo (3) – Estruturas Básicas

13 ©Prof. Lineu MialaretAula /22Cálculo Numérico Análise de Algoritmos Pseudocódigo (4) - Exemplo n O problema do elemento máximo de um arranjo ou array consiste simplesmente em descobrir qual é o maior elemento de um arranjo A que armazena n elementos inteiros. n Para resolver esse problema, pode-se usar um algoritmo chamado arrayMax, que percorre os elementos do arranjo A usando um laço for.

14 ©Prof. Lineu MialaretAula /22Cálculo Numérico Análise de Algoritmos Pseudocódigo (5) - Exemplo n Exemplo de Pseudocódigo (Algoritmo arrayMax): Algoritmo arrayMax(A,n): Entrada: um array A contendo n 1 elementos inteiros Saída: o máximo elemento no array A currentMax A[0] for i 1 to n-1 do if currentMax < A[i] then currentMax A[i] return currentMax

15 ©Prof. Lineu MialaretAula /22Cálculo Numérico Análise de Algoritmos Logaritmos e Exponenciais (1) n No estudo de logaritmos e expoentes tem-se: log b a = c se a = b c n Pode-se omitir a base b dos logaritmos quando b = 2, de forma que, por exemplo, log 1024 = 10 n Com a, b e c sendo números reais positivos, tem-se as seguintes proposições: 1. log b ac = log b a + log b c 2. log b a/c = log b a - log b c 3. log b a c = clog b a 4. log b a = (log c a)/log c b 5. b log c a = a log c b 6. (b a ) c = b ac 7. b a b c = b a+c 8. b a /b c = b a-c

16 ©Prof. Lineu MialaretAula /22Cálculo Numérico Usa-se a seguinte notação abreviada: log c n para denotar a função (logn) c loglogn para denotar log(logn) n Exercício: Demonstrar as seguintes proposições: u log(2nlogn) = 1 + logn + loglogn u log(n /2) = log n - 1 u log n = log (n) 1/2 u loglog n = loglog n - 1 u log 4 n = (logn)/2 u log2 n = n u 2 logn = n u 2 2logn = n 2 u 4 n = (2 2 ) n = 2 2n u n 2 2 3logn = n 5 u 4 n /2 n = 2 n Análise de Algoritmos Logaritmos e Exponenciais (2)

17 ©Prof. Lineu MialaretAula /22Cálculo Numérico n Já que, tipicamente, um logaritmo não é um inteiro, apesar do tempo de execução de um algoritmo ser expresso como um inteiro, como por exemplo o número de operações efetuadas. n Assim na análise de algoritmos pode-se, as vezes, envolver o uso dos conceitos de funções conhecidas como função piso (floor) e função teto (ceiling) respectivamente: x = o maior inteiro menor do que ou igual a x (limite inferior) x = o menor inteiro maior que ou igual a x (limite superior) n Essas funções fornecem uma maneira de converter funções com valores reais em funções com valores inteiros. Análise de Algoritmos Logaritmos e Exponenciais (3)

18 ©Prof. Lineu MialaretAula /22Cálculo Numérico Análise de Algoritmos Somatórios (1) n Outra notação que surge com freqüência na análise de algoritmos e de estrutura de dados é o somatório, que é uma expressão matemática da seguinte forma: b f(i) = f(a) + f(a+1) + f(a+2) f(b) i=a onde f é uma função, i é o índice, a é o valor de inicio e t é o valor final. n Somatórios surgem na análise de algoritmos e estrutura de dados porque o tempo de execução de laços pode ser representado naturalmente por meio de somas. n Por exemplo, uma soma que surge naturalmente e freqüentemente na análise de algoritmos é a progressão geométrica.

19 ©Prof. Lineu MialaretAula /22Cálculo Numérico Análise de Algoritmos Somatórios (2) n Para qualquer inteiro n 0 e qualquer número real 0 < a 1, considere o seguinte somatório n a i = 1 + a + a a n i=o para qualquer inteiro n > 0 e qualquer real a 1, e que a 0 = 1 n O resultado desse somatório é: 1 - a n a n Qualquer cientista da computação deveria saber que: n-1 = 2 n – 1 n Que é o maior inteiro que pode ser representado em notação binária usando n bits.

20 ©Prof. Lineu MialaretAula /22Cálculo Numérico n Outro somatório importante que surge em vários contextos é: n i = (n - 2) + (n - 1) + n i=1 n Essa soma surge na análise de laços em casos em que o número de operações efetuadas dentro do laço aumenta em um valor fixo a cada iteração do laço. n Para qualquer inteiro n 1, tem-se que o resultado desse somatório é : n i = n (n + 1) i=1 2 Análise de Algoritmos Somatórios (3)

21 ©Prof. Lineu MialaretAula /22Cálculo Numérico n Em 1787, um professor alemão de uma escola primária decidiu manter seus alunos de 9 e 10 anos ocupados com a tarefa de somar todos os números inteiros de 1 a 100. n Logo depois de apresentar o exercício, uma das crianças afirmou ter a resposta. n O professor ficou desconfiado, pois o aluno tinha apenas a resposta em suas anotações, sem nenhum cálculo. Mas a resposta estava correta (Qual é a resposta?). n Esse aluno era Karl Friedrich Gauss, que seria depois um dos maiores matemáticos do século XIX. Análise de Algoritmos Somatórios (4)

22 ©Prof. Lineu MialaretAula /22Cálculo Numérico n Exercício: provar por indução que : n i = n (n + 1) i =1 2 n Dica de solução: Análise de Algoritmos Somatórios (5)


Carregar ppt "©Prof. Lineu MialaretAula 13 - 1/22Cálculo Numérico Cálculo Numérico – CN Prof. Lineu Mialaret Aula 13: Análise de Algoritmos (1) Instituto Federal de."

Apresentações semelhantes


Anúncios Google