Aula 02 Notação Assintótica p. 4. Usodanotação O. Notação O. Notação O, Ω, ΘeExemplos. Intuitivamente... O(f(n)) funções que não crescem mais

Documentos relacionados
Complexidade Assintótica

ANÁLISE DE ALGORITMOS: PARTE 3

5. Invólucros Convexos no Plano (cont )

Melhores momentos AULA 1. Algoritmos p.38/86

BCC202 - Estrutura de Dados I

Lista de Exercícios 6: Soluções Funções

BCC202 - Estrutura de Dados I

Análise de Algoritmos

Busca Binária. Aula 05. Busca em um vetor ordenado. Análise do Busca Binária. Equações com Recorrência

André Vignatti DINF- UFPR

03 Análise de Algoritmos (parte 3) SCC201/501 - Introdução à Ciência de Computação II

Projeto e Análise de Algoritmos

BCC202 - Estrutura de Dados I

Análise de Algoritmos

Lista de Exercícios 6 Funções

Elementos de Análise Assintótica

Medida do Tempo de Execução de um Programa

Análise e Projeto de Algoritmos

Rascunho. CI165 - Análise de algoritmos (rascunho alterado constantemente) André Guedes Departamento de Informática UFPR. 7 de dezembro de 2016

Análise de algoritmos

CT-234. Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

Análise de algoritmos. Parte I

Rascunho. CI165 - Análise de algoritmos (rascunho alterado constantemente) André Guedes Departamento de Informática UFPR. 11 de junho de 2017

Teoria da Computação. Aula 3 Comportamento Assintótico 5COP096. Aula 3 Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

Teoria dos Grafos Aula 7

Notação Assintótica Letícia Rodrigues Bueno

André Vignatti DINF- UFPR

Aula 2. Divisão e conquista. Exemplo 1: Número de inversões de uma permutação (problema 2-4 do CLRS; veja também sec 5.4 do KT)

ANÁLISE DE ALGORITMOS

Complexidade de Algoritmos

1 a Lista de Exercícios

Análise de algoritmos

Melhores momentos AULA PASSADA. Complexidade Computacional p. 136

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos

Análise de algoritmos. Parte I

Melhores momentos AULA PASSADA. Complexidade Computacional p. 205

Complexidade de Algoritmos. Edson Prestes

Análise de Algoritmos

Análise de Algoritmos

Aula 1. Teoria da Computação III

Análise de Algoritmos e Estruturas de Dados

Projeto e Análise de Algoritmos

Introdução à Análise Algoritmos

Complexidade de Algoritmos

O Teorema Mestre da Complexidade

Capítulo. Análise de Algoritmos. 6.1 Complexidade de Algoritmos 6.1

ESTRUTURA DE DADOS CIÊNCIA E TECNOLOGIA DO RIO. Curso de Tecnologia em Sistemas para Internet

Estruturas de Dados 2

Análise de Algoritmos

7. Introdução à Complexidade de Algoritmos

Complexidade de Tempo

Comportamento Assintótico. Algoritmos e Estruturas de Dados Flavio Figueiredo (

PCC104 - Projeto e Análise de Algoritmos

Análise de Algoritmos e Estruturas de Dados

Análise de algoritmos

Capítulo 6 Análise de Algoritmos Capítulo 6

COMPLEXIDADE DE ALGORITMOS

Análise e Projeto de Algoritmos

LISTA DE EXERCÍCIOS 1

1 a Lista Professor: Claudio Fabiano Motta Toledo Estagiário PAE: Jesimar da Silva Arantes

LISTA DE EXERCÍCIOS 1

3. ANÁLISE DE COMPLEXIDADE PESSIMISTA

INF 1010 Estruturas de Dados Avançadas

Quantidade de memória necessária

Bacharelado em Ciência da Computação Matemática Discreta

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

Complexidade de Algoritmos

Programação II Aula 07

Algoritmos e Estrutura de Dados. Aula 04 Recorrência Prof. Tiago A. E. Ferreira

COMPLEXIDADE DE ALGORITMOS COMPLEXIDADE DE ALGORITMOS

Mergesort. Aula 04. Algoritmo Mergesort. Divisão e Conquista. Divisão e Conquista- MergeSort

Funções. Antonio Alfredo Ferreira Loureiro. UFMG/ICEx/DCC MD Funções 1

Análise Assintótica de Algoritmos

4º 20/10/2003. ÍNDICE

Aula 06: Análise matemática de algoritmos recursivos

Universidade Federal de Alfenas

Lista 1. 8 de abril de Algorithms: Capítulo 0, exercícios 1 e 2. Tardos: Todos exercícios do cap 2 do livro texto, exceto 7 e 8 letra b.

Agradecimentos. MC448 Análise de Algoritmos I. Problemas e seus algoritmos. Problemas do nosso interesse

7. Introdução à Complexidade de Algoritmos

Complexidade assintótica de programas

Construção de Algoritmos II Aula 06

Análise e Síntese de Algoritmos. Revisão CLRS, Cap. 4, 6

Ordenação em tempo linear

Análise e Complexidade de Algoritmos

01 Análise de Algoritmos (parte 2) SCC201/501 - Introdução à Ciência de Computação II

ANÁLISE DE ALGORITMOS

INF 1010 Estruturas de Dados Avançadas

Mediana. Aula 09. Menor. i-ésimo menor elemento. Algoritmo de Seleção. -ésimo menor elemento. Mediana é o n+1. -ésimo menor ou o n+1

Lista de março de 2014

I. Correção de Algoritmos Não-Recursivos

Análise de algoritmos Parte I

2. Complexidade de Algoritmos

Introdução à Análise de Algoritmos

É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser

Lista de exercícios sobre contagem de operações Prof. João B. Oliveira

ESTRUTURAS DE DADOS prof. Alexandre César Muniz de Oliveira

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Algoritmos de ordenação Quicksort

Análise e Projeto de Algoritmos P R O F : L O A N A T. N O G U E I R A

Transcrição:

Notação O Aula 02 Notação Assintótica Notação O, Ω, Θe Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Intuitivamente... O() funções que não crescem mais rápido que funções menores ou iguais a um múltiplo de n 2 (3/2)n 2 9999n 2 n 2 /1000 etc. crescem todas com a mesma velocidade, são todas O(n 2 ). n 2 + 99n é O(n 2 ) 33n 2 é O(n 2 ) 9n + 2 é O(n 2 ) 0,00001n 3 200n 2 não é O(n 2 ) Aula 02 Notação Assintótica p. 1 Aula 02 Notação Assintótica p. 3 Notação O Sejam T(n) e funções dos inteiros nos reais. Dizemos que T(n) é O() se existem constantes positivas c e n 0 tq T(n) c para todo n n 0. i.e. para n grande, T(n) não cresce mais rápido que T(n) Usodanotação O Notação O: Usada para análise de pior caso de algoritmos, Também chamado limite superior. T(n) é O() deve ser entendido como T(n) O(). T(n) = O() deve ser entendido como T(n) O(). T(n) é g(n) + O() significa que existem constantes positivas c e n 0 tais que T(n) g(n) + c para todo n n 0. n 0 Aula 02 Notação Assintótica p. 2 Aula 02 Notação Assintótica p. 4

Notação Ω Dizemos que T(n) é Ω() se existem constantes positivas c e n 0 t.q. para todo n n 0. T(n) c T(n) n 0 Usada para análise de melhor caso ou estabelecer complexidade de problemas. Propriedades Transitiva f = Θ(g) e g = Θ(h) f = Θ(h) f = O(g) e g = O(h) f = O(h) f = Ω(g) e g = Ω(h) f = Ω(h) Reflexiva f = Θ(f) f = (f) f = Ω(g) Simetria f = Θ(g) g = Θ(f) f = O(g) g = Ω(f) Aula 02 Notação Assintótica p. 5 Aula 02 Notação Assintótica p. 7 Notação Θ Ordem de Crescimento Dizemos que T(n) é Θ() se O(g(n)) e Ω(g(n)) n 0 T(n) lg n n n 2 n 5 2 n 1 2 4 32 4 2 4 16 1024 16 3 8 64 32768 256 4 16 256 1048576 65536 5 32 1024 33554432 4.2E9 6 64 4096 1.0E9 1.8E19 7 128 16384 3.4E10 3.4E38 8 256 65536 1.1E12 1.6E77 9 512 262144 3.5E13 1.3E154 10 1024 1048576 1.1E15 ### Limite assintótico justo! Onde está n lg n? Aula 02 Notação Assintótica p. 6 Aula 02 Notação Assintótica p. 8

Ordem de Crescimento Tempo de tamanho máximo do problema (n) Execução 1 segundo 1 minuto 1 hora 400n 2500 150000 9000000 20n log n 4096 166666 7826087 2n 2 707 5477 42426 n 4 31 88 44 2 n 19 25 31 Notações Assintóticas Duas outras notações assintóticas Notação o - oh pequeno - T(n) = o() Limite superior não justo Para todo c, há n o t.q. T(n) c, para n n 0 2n = o(n 2 ), mas 2n 2 o(n 2 ) Notação ω - T(n) = ω() Limite inferior não justo Para todo c, há n o t.q. T(n) c, para n n 0 n 2 /2 = ω(n), mas n 2 /2 o(n 2 ) Aula 02 Notação Assintótica p. 9 Aula 02 Notação Assintótica p. 11 Classificação de funções Θ define uma relação de equivalência Θ(f) é uma classe de equivalência - Classe de complexidade O(1) conjunto de funções limitadas por uma constante (Independe do tamanho da entrada n) Θ(n) Linear Θ(n 2 ) Quadrática log n O(n α ), para qualquer α > 0 n k O(c n ), para qualquer 0 < c 1 Notação assintótica e limite Podemos usar limites para a taxa de crecimento assintótico lim n g(n) lim n g(n) lim n g(n) = c = Θ(g(n)) = 0 = O(g(n)) = = Ω(g(n)) Aula 02 Notação Assintótica p. 10 Aula 02 Notação Assintótica p. 12

Reais Notação Assintótica Podemos fazer uma analogia entre notação assintótica e números reais = O(g(n)) a b = Ω(g(n)) a b Sejam f,g funções e a,b R = Θ(g(n)) a = b = o(g(n)) a < b = Ω(g(n)) a > b Reais Notação Assintótica Podemos fazer uma analogia entre notação assintótica e números reais = O(g(n)) a b = Ω(g(n)) a b Sejam f,g funções e a,b R = Θ(g(n)) a = b = o(g(n)) a < b = Ω(g(n)) a > b Considere a funções = n e g(n) = n 1+sinn é O(g(n))? é Ω(g(n))? Aula 02 Notação Assintótica p. 13 Aula 02 Notação Assintótica p. 13 Reais Notação Assintótica Podemos fazer uma analogia entre notação assintótica e números reais = O(g(n)) a b = Ω(g(n)) a b Sejam f,g funções e a,b R = Θ(g(n)) a = b = o(g(n)) a < b = Ω(g(n)) a > b Considere a funções = n e g(n) = n 1+sinn é O(g(n))? Considere a função T(n) é O(n 2 )? T(n) é Ω(n 2 )? T(n) é Θ(n 2 )? T(n) é Θ(n)? T(n) = { n n 2 se n é impar, se n é par Aula 02 Notação Assintótica p. 13 Aula 02 Notação Assintótica p. 14

Logaritmos lg n = log 2 n ln n = log e n log b, b > 1 é estritamente crescente log b 1 = 0 log b b = 1 log b n a = a log b n log b (nm) = log b n + log b m n log m = m log n log c n = log b n log b c Mostrar que log a n = Θ(log b n) para qualquer a,b > 1 constante. Resp. Devemos mostrar que existem c,c t.q. i) log a c log b n ii) log a c log b n Aula 02 Notação Assintótica p. 15 Aula 02 Notação Assintótica p. 16 Mostrar que log a n = Θ(log b n) para qualquer a,b > 1 constante. Mostrar que log a n = Θ(log b n) para qualquer a,b > 1 constante. Resp. Devemos mostrar que existem c,c t.q. i) log a c log b n ii) log a c log b n i) log a n c log b n log a n c log a n log a b log a n c log a n log a b = log c a b log a n Tomando c = log a b temos o resultado desejado. Aula 02 Notação Assintótica p. 16 Aula 02 Notação Assintótica p. 16

Mostrar que log a n = Θ(log b n) para qualquer a,b > 1 constante. Resp. Devemos mostrar que existem c,c t.q. i) log a c log b n ii) log a c log b n a) Sejam = 1 2 n2 3n e g(n) = n 2 Mostrar que = Θ(g(n)). Resp. Encontrar c 1, c 2 e n 0 tq c 1 n 2 1 2 n2 3n c 2 n 2, n n o i) log a n c log b n log a n c log a n log a b log a n c log a n log a b = log c a b log a n Tomando c = log a b temos o resultado desejado. ii) Análogo ao anterior. Aula 02 Notação Assintótica p. 16 Aula 02 Notação Assintótica p. 17 a) Sejam = 1 2 n2 3n e g(n) = n 2 Mostrar que = Θ(g(n)). a) Sejam = 1 2 n2 3n e g(n) = n 2 Mostrar que = Θ(g(n)). Resp. Encontrar c 1, c 2 e n 0 tq c 1 n 2 1 2 n2 3n c 2 n 2, n n o c 1 1 2 3 n c 2 c 1 = 1 14, c 2 = 1 2,n 0 = 7 Aula 02 Notação Assintótica p. 17 Aula 02 Notação Assintótica p. 17

b) Mostrar que 6n 3 Θ(n 2 ). b) Mostrar que 6n 3 Θ(n 2 ). Por contradição, supor que c 1,c 2,n 0 > 0 tq c 1 n 2 6n 3 c 2 n 2 c 1 6n c 2 Absurdo, pois c 2 6n não vale para n arbitrariamente grande! Aula 02 Notação Assintótica p. 18 Aula 02 Notação Assintótica p. 18 b) Mostrar que 6n 3 Θ(n 2 ). Por contradição, supor que c 1,c 2,n 0 > 0 tq c 1 n 2 6n 3 c 2 n 2 no(n) = O(n 2 ) no(n) = O(n 2 ) significa no(n) O(n 2 ). Ou seja, se T(n) é O(n), então nt(n) é O(n 2 ). De fato, se T(n) é O(n) então existem constantes, digamos 10 e 10 100, tais que T(n) 10n para todo n 10 100. Desta forma, nt(n) n 10 n 10 n 2 para todo n 10 100. Logo nt(n) é O(n 2 ). Aula 02 Notação Assintótica p. 18 Aula 02 Notação Assintótica p. 19

no(n) = O(n 2 ) no(n) = O(n 2 ) significa no(n) O(n 2 ). Ou seja, se T(n) é O(n), então nt(n) é O(n 2 ). Propriedade Transitiva Se T(n) = O() e = O(g(n)) então T(n) = O(g(n)). De fato, se T(n) é O(n) então existem constantes positivas c e n 0, tais que T(n) cn para todo n n 0. Desta forma, nt(n) ncn c n 2 para todo n n 0. Logo nt(n) é O(n 2 ). Aula 02 Notação Assintótica p. 20 Aula 02 Notação Assintótica p. 22 Resumo da análise Etapa para analisar um algoritmo (nesta ordem!) Correção Analise o pior caso Enfoque o termo principal do tempo de execução Melhore a ordem de magnitude Reduza os fatotes constantes Propriedade Transitiva Se T(n) = O() e = O(g(n)) então T(n) = O(g(n)). Rascunho da prova: Suponha, por exemplo, que 0 T(n) 11 para todo n 3 0 10g(n) para todo n 5. Defina c := 11 10 = 110 e n 0 := 5. Para todo n n 0, temos T(n) 0 e T(n) 11 11(10g(n)) = 110g(n). Exemplo: Se f = O(3n 2 + 4n) então f = O(n 2 ), pois 3n 2 + 4n = O(n 2 ). Faça caso geral! Aula 02 Notação Assintótica p. 21 Aula 02 Notação Assintótica p. 22

Regra da Soma Se T(n) = O() então T(n) + = O(). Prova: Exercícios Prove que O(1) = O(2) Aula 02 Notação Assintótica p. 23 Aula 02 Notação Assintótica p. 24 Regra da Soma Se T(n) = O() então T(n) + = O(). Prova: Existem c 1 e n 0 tq 0 T(n) c para todo n n 0. Então Exercícios Prove que O(1) = O(2) Qual o menor valor t.q. lg lg n > 10 0 T(n) + c + c + c = 2c para todo n n 0. Exemplo: Se T(n) = O(n) então T(n) + 3n 2 = O(3n 2 ). Aula 02 Notação Assintótica p. 23 Aula 02 Notação Assintótica p. 24

Exercícios Prove que O(1) = O(2) Qual o menor valor t.q. lg lg n > 10 Mostre que n lg n = O(n 3/2 ) Exercícios Prove que O(1) = O(2) Qual o menor valor t.q. lg lg n > 10 Mostre que n lg n = O(n 3/2 ) Mostre que lg n = O(n) Mostre que 3 lg n + lg lg n = O(lg n) Aula 02 Notação Assintótica p. 24 Aula 02 Notação Assintótica p. 24 Exercícios Prove que O(1) = O(2) Qual o menor valor t.q. lg lg n > 10 Mostre que n lg n = O(n 3/2 ) Mostre que lg n = O(n) Aula 02 Notação Assintótica p. 24