Crescimento de Funções

Slides:



Advertisements
Apresentações semelhantes
Estruturas de Dados e Algoritmos II
Advertisements

COMPARAÇÃO MÉTODOS DIRETOS E ITERATIVOS
Analise de Algoritmos e Notação Assintótica
Complexidade de Algoritmos
Amintas engenharia.
Amintas engenharia.
Exercício Exercício. Considere um algoritmo sequencial que busca um elemento em uma lista não ordenada a) Qual é a complexidade de tempo deste algoritmo.
Análise e Projeto de Algoritmos
Análise de Complexidade
Engenharia de Computação.
Organização e Recuperação da Informação (ORI)
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
1 MergeSort Seja uma lista A de n elementos. O algoritmo consiste das seguintes fases Dividir A em 2 sub-listas de tamanho n/2 Conquistar: ordenar cada.
Pesquisa em Memória Primária
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
Pesquisa em Memória Primária
Complexidade de Algoritmos
Introdução a Análise de Complexidade de Algoritmos
Análise Léxica Supondo o trecho de programa abaixo:
Recorrências.
Complexidade de Computação Para avaliar a qualidade de um algoritmo usamos como critério o espaço e o tempo de execução. Ao.
Complexidade de Algoritmos
Introdução aos Sistemas de Controle
Aula T04 – BCC202 Análise de Algoritmos (Parte 2) Túlio Toffolo www
3 - Equações Lineares de Segunda Ordem
Complexidade de Algoritmos
Informática Teórica Engenharia da Computação
Capítulo 12 Funções logarítmicas slide 1
Introdução à Computação II Isadora Alves Cristo Juliana Ap. da Silva
ICC2 Aula 7 Fábio Nakano.
Informática Teórica Engenharia da Computação
Sistemas de medição - TM-247
Comparação entre os métodos de ordenação
Sistemas Operacionais
Capítulo 10 Funções polinomiais slide 1
Complexidade de algoritmos e Classificação (Ordenação) de dados
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
Aula T06 – BCC202 Análise de Algoritmos (Parte 4) Túlio Toffolo
Estruturas de Dados, Algoritmos e Complexidade
Algoritmos Crescimento de Funções
1 - Equações Diferenciais Ordinárias
Campus de Caraguatatuba Aula 12: Sistemas de Equações Lineares (2)
A transformada de Laplace
1 A COMPUTAÇÃO MODERNA Valdemar W. Setzer Depto. de Ciência da Computação da USP
Pesquisa Sequencial e Binária
Campus de Caraguatatuba Licenciatura em Matemática Semestre de 2013
Sistemas Operacionais
1.2- Propriedades dos Limites
ALGORITMOS Intensivo Janeiro e Fevereiro de 2011
Experimentação Algorítmica
Campus de Caraguatatuba Aula 9: Noções Básicas sobre Erros (3)
Interpolação e Ajuste de Curvas
Complexidade em Tempo de um Algoritmo
Como analisar um algoritmo
Crescimento de Funções
Complexidade de Computação Katia Guimarães. Avaliando a Qualidade de um Algoritmo É preciso ter bem definido –O que é dado de entrada e –O que é esperado.
Analise de Algoritmos e Notação Assintótica
Estruturas de Dados, Algoritmos e Complexidade Katia Guimarães.
Cálculo Diferencial e Integral I
Berilhes Borges Garcia Algoritmos Uma ferramenta para resolver um problema de computação bem- especificado (O espírito da computação) Exemplo: ordenação.
1.3 - Propriedades dos Limites
Análise e Complexidade de Algoritmos
Comportamento Assintótico
Disciplina: Estrutura de dados e Algoritmos Docentes: MSc. Manuel Zunguze.
Lógica de Programação Aula 06 Prof. Marcelo Marcony.
Analise de Algoritmos e Notação Assintótica
Transcrição da apresentação:

Crescimento de Funções PPGI/2009 Prof. Lucídio Cabral - Estrutura de Dados e Complexidade de Algoritmos

Análise de Algoritmos tempo de processamento em função dos dados de entrada; espaço de memória total requerido para os dados; comprimento total do código; correcta obtenção do resultado pretendido; robustez (como comporta-se com as entradas inválidas ou não previstas). quantidade de "trabalho" necessária para a sua execução, expressa em função das operações fundamentais, as quais variam de acordo com o algoritmo, e em função do volume de dados.

Complexidade Porquê o estudo da Complexidade? Performance Escolher entre vários algoritmos o mais eficiente para implementar; Desenvolver novos algoritmos para problemas que já têm solução; Desenvolver algoritmos mais eficientes (melhorar os algoritmos), devido ao aumento constante do "tamanho" dos problemas a serem resolvidos. Complexidade Computacional - torna possível determinar se a implementação de determinado algoritmo é viável.

Complexidade Tipos de Complexidade Espacial Este tipo de complexidade representa, por exemplo, o espaço de memória usado para executar o algoritmo. Temporal Este tipo de complexidade é o mais usado podendo dividir-se em dois grupos: Tempo (real) necessário à execução do algoritmo. (como podemos medir?) Número de instruções necessárias à execução.

Analise de Algoritmos Medidas de Análise Devem ser independentes da tecnologia (hardware/software) Modelos Matemáticos simplificados baseados nos fatores relevantes: Tempo de Execução Uma função que relaciona o tempo de execução com o tamanho de entrada: t = F(n) Conjunto de operações a serem executadas. Custo associado à execução de cada operação. Ocupação de Espaço em Memória

Complexidade Exemplo Sejam 5 algoritmos A1 a A5   para resolver um mesmo problema, de complexidades diferentes. (Supomos que uma operação leva 1 ms para ser efetuada.)   Tk(n) é a complexidade ou seja o número de operações que o algoritmo efetua para n entradas n A1 T1(n)= n A2 T2(n)=nlog n A3 T3(n)=n2 A4 T4(n)=n3 A5 T5(n)=2n 16 0.016s 0.064s 0.256s 4s 1m4s 32 0.032s 0.16s 1s 33s 46 Dias 512 0.512s 9s 4m22s 1 Dia 13h 10137 Séculos   tempo necessário para o algoritmo em função de n entradas

Operações primitivas Atribuição de valores a variáveis Chamadas de métodos Operações aritméticas Comparação de dois números Acesso a elemento de um array Seguir uma referência de objeto (acesso a objeto) Retorno de um método

Complexidade de Algoritmos Complexidade de pior caso – big-Oh O(g(n)) Complexidade de melhor caso – big-Omega W(g(n)) de uso bem menos freqüente em algumas situações específicas Complexidade de caso médio – big-Theta Q(g(n).) menos utilizada apesar de importante difícil conhecer a distribuição de probabilidades das diferentes entradas 265

Notações assintóticas Q - Limite assintótico apertado ou exato O - Limite assintótico superior W - Limite assintótico inferior o - Limite superior que não é assintoticamente apertado w - Limite inferior que não é

Por que as notações assintóticas são importantes? Elas fornecem uma caracterização simples da eficiência de um algoritmo. Elas permitem a comparaçãode desempenho entre vários algoritmos. Para valores elevados de componentes/entradas, as constantes multiplicativas e termos de baixa ordem de um tempo de execução exato são dominados pelo efeito do tamanho de entrada (o número de componentes). O tempo de execução de uma algoritmo sobre uma entrada particular, é o número de operações primitivas ou “passos” executados. O tamanho da entrada depende problema sendo estudado. Mas na maioria dos casos este é o número de itens na entrada, por exemplo: o número total de bits.

Resumindo, em geral, quando observamos tamanhos de entrada suficientemente grandes para tornar a ordem de crescimento do tempo de execução relevante para um algoritmo, nós estamos estudando a eficiência assintótica de um algoritmo. E um algoritmo que é assintoticamente mais eficiente será efetivamente a melhor escolha. Isto pode não ser verdade para todas as entradas consideradas pequenas!

Q - Limite assintótico apertado ou exato OBS:

Q - Limite assintótico apertado ou exato Eg.

Q - Limite assintótico apertado ou exato Eg.

O - Limite assintótico superior

O - Limite assintótico superior

Qual melhor algoritmo? Sejam A e B dois algoritmos que o resolvem o problema P, cujos tempos de execução são TA(n) e TB(n) comportamento assintótico – tamanho da entrada arbitrariamente grande caracterizado pela notação O (big O)

Diagrama Definição do Big-Oh

Ordens mais comuns 2n (exponencial) n2 (quadrática) n log n f n (linear) log n (logarítmica) 1 (constante) n Fonte: Sahni, "Data Structures, Algorithms and Applications in C++"

Alguns conceitos T (n) = O (1) : constante T (n) = O (log log n) : super-rápido T (n) = O (log n) : logarítmico – muito bom T (n) = O (n) : linear – toda a entrada é visitada T (n) = O (n log n) : limite de muitos problemas T (n) = O (n2) : quadrático T (n) = O (nk) : polinomial no tamanho da entrada T (n) = O (kn), O (n!), O (nn) : exponencial – ruim!

Teoremas Comportamento assintótico da soma de duas funções cujos comportamentos assintóticos particulares são conhecidos: Se f1(n) = O(g1(n)) e f2(n) = O(g2(n)), então: f1(n) + f2(n) = O(max(g1(n)) , g2(n))) O(k f(n)) = O(f(n)) O(f(n)) O(g(n)) = O(f(n) g(n))

Eficiência de um Algoritmo, mais um exemplo Três algoritmo para calcular 1 + 2 + … n para um n > 0

Eficiência de um Algoritmo O(n) O(n2) O(1) Número de operações necessárias

A notação O f(n) = 8n + 128  é O (n2)? f(n)  c.n2 ? Seja c =1 8n + 128  n2, então 0  n2 – 8n – 128 0  (n – 16)(n+8)  n0 = 16  c =1, no = 16, f (n)  c.n2 para todo n  n0

A notação O A função atua como um limite superior assintótico da função f f = n2 -1 Þ f = O(n2) f = n2 -1 Þ f = O(n3) f = 403 Þ f = O(1) f = 5+2logn +3log2n Þ f = O(log2n) f = 5+2 log n +3log2n Þ f = O(n) f = 5.2n +5n10 Þ f = O(2n) 269

W - Limite assintótico inferior

o - Limite superior que não é assintoticamente apertado

w - Limite inferior que não é assintoticamente apertado

Notações assintóticas em equações

Relações de Funções Assintóticas

Limites podem ser usados para determinar a ordem de complexidade c então f (n) = Q ( g (n)) se c > 0 se lim f (n) / g (n) = 0 or c > 0 então f (n) = o ( g(n)) ¥ or c > 0 então f (n) = W ( g (n)) n®¥

Exemplo usando limites

Regra de L’Hopital Se f(x) e g(x) são ambas funções diferenciáveis com derivadas f’(x) e g’(x), respectivamente, e se

Exemplos usando limites

Exemplo usando limites lg ( ) ln )' lim (lg ' n O Î = æ è ç ö ø ÷ ® ¥ 2 1 nln2

Exemplo usando limites k Î O n ( ) 2 onde k é uma constante inteira positiva 2 n = e n ln 2 ( 2 n )' = ( e n ln 2 )' = ln2 e n ln 2 = 2 n ln 2 n k kn k - 1 lim = lim = n n n ® ¥ 2 ® ¥ 2 ln 2 n k ( k - 1 ) n k - 2 k ! = lim = . . . = lim = n 2 n k n ® ¥ 2 ln 2 ® ¥ 2 ln 2 n