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

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

Crescimento de Funções

Apresentações semelhantes


Apresentação em tema: "Crescimento de Funções"— Transcrição da apresentação:

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

2 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.

3 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.

4 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.

5 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

6 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

7 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

8 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

9 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 é

10 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.

11 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!

12 Q - Limite assintótico apertado ou exato
OBS:

13 Q - Limite assintótico apertado ou exato
Eg.

14 Q - Limite assintótico apertado ou exato
Eg.

15 O - Limite assintótico superior

16 O - Limite assintótico superior

17 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)

18 Diagrama Definição do Big-Oh

19 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++"

20 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!

21 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))

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

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

24 A notação O f(n) = 8n + 128  é O (n2)? f(n)  c.n2 ? Seja c =1
8n  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

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

26 W - Limite assintótico inferior

27 o - Limite superior que não é assintoticamente apertado

28 w - Limite inferior que não é assintoticamente apertado

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

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

31 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®¥

32 Exemplo usando limites

33 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

34 Exemplos usando limites

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

36 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


Carregar ppt "Crescimento de Funções"

Apresentações semelhantes


Anúncios Google