SlideShare una empresa de Scribd logo
1 de 53
Descargar para leer sin conexión
An´alise de Algoritmos
Análise assintótica: ordens O, Ω e Θ
– p. 1/35
Análise assintótica
Ao ver uma expressão como n + 10 ou n2
+ 1,
pensamos geralmente em valores pequenos de n,
valores próximos de zero.
A análise de algoritmos faz exatamente o contrário:
ignora os valores pequenos e concentra-se nos
valores enormes de n. Esse tipo de análise
chama-se análise “assintótica”.
– p. 2/35
Análise assintótica - exemplo
Considere o número de operações de dois
algoritmos que resolvem um mesmo problema,
como função do tamanho n da entrada.
Algoritmo 1: f1(n) = 2n2
+ 5n operações
Algoritmo 2: f2(n) = 500n + 4000 operações
Dependendo do valor de n, o Algoritmo 1 pode
requerer mais ou menos operações que o
Algoritmo 2. (Compare as duas funções para
n = 10 e n = 100.)
– p. 3/35
Análise assintótica - exemplo
Nosso interesse é estudar o comportamento
assint´otico das funções, ou seja, quando n → ∞.
Em geral, os termos inferiores e as constantes
multiplicativas contribuem pouco na comparação e
podem ser descartados.
– p. 4/35
Análise assintótica - exemplo
O importante é observar que f1(n) tem crescimento
proporcional a n2
(quadrático), ao passo que f2(n)
tem crescimento proporcional a n (linear). Um
crescimento quadrático é pior que um crescimento
linear. Assim, vamos preferir o Algoritmo 2.
– p. 5/35
Análise assintótica - outro exemplo
Para valores enormes de n, as funções
n2
,
3
2
n2
, 9999n2
,
n2
1000
, n2
+ 100n
crescem todas com a mesma velocidade e
portanto são todas “equivalentes”. Nesse estudo,
as funções são classificadas em “ordens”; todas as
funções de uma mesma ordem são equivalentes.
As cinco funções acima, por exemplo, pertencem à
mesma ordem.
– p. 6/35
Importância da análise assintótica
Na tabela abaixo, os valores representam o
tamanho da maior instância solucionável em uma
hora.
Computador Computador 100 Computador 1000
Função atual vezes mais rápido vezes mais rápido
n N 100N 1000N
n log n N1 22, 5N1 140, 2N1
n2 N2 10N2 31, 6N2
n3
N3 4, 6N3 10N3
2n N4 N4 + 6 N4 + 10
– p. 7/35
Funções assintoticamente não negativas
Restringiremos a atenção a funções
assintoticamente não negativas, ou seja, funções f
tais que f(n) ≥ 0 para todo n “suficientemente
grande”.
Mais explicitamente, f é assintoticamente não
negativa se existe n0 tal que f(n) ≥ 0 para todo n
maior que n0.
– p. 8/35
An´alise de Algoritmos
Análise assintótica: ordem O
– p. 9/35
Ordem O
Dadas funções assintoticamente não negativas f e
g, dizemos que f est´a na ordem O de g e
escrevemos f = O(g) se
f(n) ≤ c.g(n)
para algum c positivo e para todo n suficientemente
grande.
– p. 10/35
Ordem O
Em outras palavras, f = O(g) se existe um número
positivo c e um número n0 tais que
f(n) ≤ c.g(n)
para todo n maior que n0.
– p. 11/35
Ordem O - Exemplos
A notação O fornece limites superiores de funções
que, por sua vez, correspondem a tempos de
execução de algoritmos.
– p. 12/35
Ordem O - Exemplos
A notação O fornece limites superiores de funções
que, por sua vez, correspondem a tempos de
execução de algoritmos.
Exemplo 1: Se f(n) ≤ 9999g(n) para todo n ≥ 1000
– p. 12/35
Ordem O - Exemplos
A notação O fornece limites superiores de funções
que, por sua vez, correspondem a tempos de
execução de algoritmos.
Exemplo 1: Se f(n) ≤ 9999g(n) para todo n ≥ 1000
então f = O(g).
– p. 12/35
Ordem O - Exemplos
Exemplo 2: Suponha que f(n) = 2n2
+ 3n + 4.
– p. 13/35
Ordem O - Exemplos
Exemplo 2: Suponha que f(n) = 2n2
+ 3n + 4.
2n2
+ 3n + 4 ≤ 2n2
+ 3n2
+ 4n2
= 9n2
para todo n ≥ 1.
– p. 13/35
Ordem O - Exemplos
Exemplo 2: Suponha que f(n) = 2n2
+ 3n + 4.
2n2
+ 3n + 4 ≤ 2n2
+ 3n2
+ 4n2
= 9n2
para todo n ≥ 1. Portanto, f(n) = O(n2
).
– p. 13/35
Ordem O - Exemplos
Exemplo 3: Suponha que f(n) = 3 + 2
n e que
g(n) = 1.
– p. 14/35
Ordem O - Exemplos
Exemplo 3: Suponha que f(n) = 3 + 2
n e que
g(n) = 1. Então
3 +
2
n
≤ 3 + 1 = 4 = 4.g(n)
para todo n ≥ 2.
– p. 14/35
Ordem O - Exemplos
Exemplo 3: Suponha que f(n) = 3 + 2
n e que
g(n) = 1. Então
3 +
2
n
≤ 3 + 1 = 4 = 4.g(n)
para todo n ≥ 2. Portanto, f(n) = O(g(n)) = O(1).
– p. 14/35
Ordem O - Exemplos
Exemplo 4: Suponha que f(n) = n3
e que
g(n) = 200n2
. Será verdade que f(n) = O(g(n))?
– p. 15/35
Ordem O - Exemplos
Exemplo 4: Suponha que f(n) = n3
e que
g(n) = 200n2
. Será verdade que f(n) = O(g(n))?
Se existem c e n0 tais que f(n) ≤ c.g(n), teremos
n ≤ 200c
para todo n ≥ n0. Mas isso é absurdo!
– p. 15/35
Ordem O - Exemplos
Exemplo 4: Suponha que f(n) = n3
e que
g(n) = 200n2
. Será verdade que f(n) = O(g(n))?
Se existem c e n0 tais que f(n) ≤ c.g(n), teremos
n ≤ 200c
para todo n ≥ n0. Mas isso é absurdo!
Logo, f(n) = O(g(n)).
– p. 15/35
Ordem O - Exercícios
Prove os disprove as afirmações:
1. 10n = O(n)
2. 10n2 = O(n)
3. 10n55 = O(2n)
4. n2 + 200n + 300 = O(n2)
5. n2 − 200n − 300 = O(n)
6. 3
2n2 + 7
2n − 4 = O(n)
7. 3
2n2 + 7
2n − 4 = O(n2)
8. n3 − 999999n2 − 1000000 = O(n2)
– p. 16/35
Ordem O - Exercícios
9. Seja n
k o número de combinações de n objetos
tomados k a k. Mostre n
2 = O(n2).
Prove os disprove as afirmações:
10. 2n+1 = O(2n)
11. 3n = O(2n)
12. log2 n = O(log3 n)
13. log3 n = O(log2 n)
14. log2 n = O(n)
15. 100 log n − 10n + 2n log n = O(n log n)
– p. 17/35
Limite superior (upper bound)
A notação O também é utilizada para indicar
limites superiores para problemas.
– p. 18/35
Limite superior (upper bound)
A notação O também é utilizada para indicar
limites superiores para problemas.
Dado um problema, por exemplo, o de
multiplicação de duas matrizes quadradas n × n.
– p. 18/35
Limite superior (upper bound)
A notação O também é utilizada para indicar
limites superiores para problemas.
Dado um problema, por exemplo, o de
multiplicação de duas matrizes quadradas n × n.
Conhecemos um algoritmo para resolver este
problema (pelo método trivial) de complexidade
O(n3
).
– p. 18/35
Limite superior
Sabemos assim que a complexidade deste
problema não deve superar O(n3
), uma vez que
existe um algoritmo que o resolve com esta
complexidade, e dizemos que uma cota superior ou
limite superior para este problema é O(n3
).
– p. 19/35
Limite superior
Sabemos assim que a complexidade deste
problema não deve superar O(n3
), uma vez que
existe um algoritmo que o resolve com esta
complexidade, e dizemos que uma cota superior ou
limite superior para este problema é O(n3
).
A cota superior de um problema pode mudar se
alguém descobrir um outro algoritmo melhor.
– p. 19/35
Limite superior
V. Strassen apresentou em 1969 um algoritmo
para multiplicação de matrizes de complexidade
O(nlog 7
) = O(n2.807
).
– p. 20/35
Limite superior
V. Strassen apresentou em 1969 um algoritmo
para multiplicação de matrizes de complexidade
O(nlog 7
) = O(n2.807
).
Assim a cota superior para o problema de
multiplicação de matrizes passou a ser O(nlog 7
).
– p. 20/35
Limite superior
Em 1990, Coppersmith e Winograd melhoraram
esta marca para O(n2.376
);
– p. 21/35
Limite superior
Em 1990, Coppersmith e Winograd melhoraram
esta marca para O(n2.376
);
Em 2010, A. Stothers apresentou um algoritmo
de complexidade O(n2.373
);
– p. 21/35
Limite superior
Em 1990, Coppersmith e Winograd melhoraram
esta marca para O(n2.376
);
Em 2010, A. Stothers apresentou um algoritmo
de complexidade O(n2.373
);
Em 2011, V. Willians melhorou ainda mais esta
marca para O(n2.372
).
– p. 21/35
Limite superior
Em 1990, Coppersmith e Winograd melhoraram
esta marca para O(n2.376
);
Em 2010, A. Stothers apresentou um algoritmo
de complexidade O(n2.373
);
Em 2011, V. Willians melhorou ainda mais esta
marca para O(n2.372
).
Portanto, a cota superior atual para o problema da
multiplicação de matrizes é O(n2.372
).
– p. 21/35
Analogia com record mundial
A cota superior para um problema é análoga ao
record mundial de uma modalidade de atletismo.
Ele é estabelecido pelo melhor atleta (algoritmo)
do momento. Assim como o record mundial, a cota
superior pode ser melhorada por um algoritmo
(atleta) mais veloz.
– p. 22/35
Analogia com record mundial
“Cota superior” - 100m. rasos
1988 Carl Lewis 9s 92
1993 Linford Christie 9s 87
1999 Maurice Greene 9s 79
2007 Asafa Powell 9s 74
2008 Usain Bolt 9s 72
2009 Usain Bolt 9s 58
– p. 23/35
Limite inferior (lower bound)
As vezes é possível demonstrar que, para um dado
problema, qualquer que seja o algoritmo a ser
usado, o problema requer pelo menos um certo
número de operações.
– p. 24/35
Limite inferior (lower bound)
As vezes é possível demonstrar que, para um dado
problema, qualquer que seja o algoritmo a ser
usado, o problema requer pelo menos um certo
número de operações.
Essa complexidade é chamada cota inferior (lower
bound) do problema.
– p. 24/35
Limite inferior
Para o problema da multiplicação de matrizes
quadradas n × n, apenas para ler os elementos
das duas matrizes de entrada ou para produzir os
elementos da matriz produto leva tempo O(n2
).
Assim uma cota inferior trivial é Ω(n2
).
– p. 25/35
Algoritmo ótimo
Se um algoritmo tem uma complexidade igual á
cota inferior do problema, ele é assintoticamente
´otimo ou simplesmente ´otimo.
– p. 26/35
An´alise de Algoritmos
Análise assintótica: ordem Ω
– p. 27/35
Ordem Ω
A expressão “f = O(g)” tem o mesmo sabor que
“f ≤ g”. Agora precisamos de um conceito que
tenha o sabor de “f ≥ g”.
– p. 28/35
Ordem Ω
Dadas funções assintoticamente não negativas f e
g, dizemos que f est´a na ordem Ω de g e
escrevemos f = Ω(g) se
f(n) ≥ c.g(n)
para algum c positivo e para todo n suficientemente
grande.
– p. 29/35
Ordem Ω
Em outras palavras, f = Ω(g) se existe um número
positivo c e um número n0 tais que
f(n) ≥ c.g(n)
para todo n maior que n0.
– p. 30/35
Ordem Ω
Em outras palavras, f = Ω(g) se existe um número
positivo c e um número n0 tais que
f(n) ≥ c.g(n)
para todo n maior que n0.
Qual a relação entre O e Ω?
– p. 30/35
Ordem Ω
Em outras palavras, f = Ω(g) se existe um número
positivo c e um número n0 tais que
f(n) ≥ c.g(n)
para todo n maior que n0.
Qual a relação entre O e Ω?
f = O(g) ⇔ g = Ω(f)
– p. 30/35
Ordem Ω - Exercícios
1. Seja n
k o número de combinações de n objetos
tomados k a k. Mostre n
2 = Ω(n2).
2. Prove que 100 log n − 10n + 2n log n está em Ω(n log n).
3. É verdade que 2n + 1 está em Ω(n)?
– p. 31/35
An´alise de Algoritmos
Análise assintótica: ordem Θ
– p. 32/35
Ordem Θ
Além dos conceitos que têm o sabor de “f ≤ g” e
de “f ≥ g”, precisamos de um que tenha o sabor
de “f = g.
– p. 33/35
Ordem Θ
Dizemos que as funções f e g estão na mesma
ordem e escrevemos f = Θ(g) se f = O(g) e
f = Ω(g).
Em outras palavras, f = Θ(g) significa que existe
números positivos c e d tais que
c.g(n) ≤ f(n) ≤ d.g(n)
para todo n suficientemente grande.
– p. 34/35
Ordem Θ - Exercícios
Prove ou disprove:
1. 9999n2 = Θ(n2)
2. (3/2)n2 + (7/2)n − 4 = Θ(n2)
3. n2/1000 − 999n = Θ(n2)
4. log2 n + 1 = Θ(log10 n)
– p. 35/35

Más contenido relacionado

La actualidad más candente

Aula 7 expressão regular
Aula 7   expressão regularAula 7   expressão regular
Aula 7 expressão regular
wab030
 
Lógica e algoritmos
Lógica e algoritmosLógica e algoritmos
Lógica e algoritmos
Jocelma Rios
 

La actualidad más candente (20)

Análise assintótica
Análise assintóticaAnálise assintótica
Análise assintótica
 
Aula 6 - Constantes e variáveis
Aula 6 - Constantes e variáveisAula 6 - Constantes e variáveis
Aula 6 - Constantes e variáveis
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programação
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Variáveis e portugol
Variáveis e portugolVariáveis e portugol
Variáveis e portugol
 
Análise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPAnálise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NP
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmo Guloso
Algoritmo GulosoAlgoritmo Guloso
Algoritmo Guloso
 
Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)
 
Manual de portugol
Manual de portugolManual de portugol
Manual de portugol
 
Introdução a python
Introdução a pythonIntrodução a python
Introdução a python
 
Aula 7 expressão regular
Aula 7   expressão regularAula 7   expressão regular
Aula 7 expressão regular
 
Lógica de Programação
Lógica de ProgramaçãoLógica de Programação
Lógica de Programação
 
Aula01 - Logica de Programação
Aula01 - Logica de ProgramaçãoAula01 - Logica de Programação
Aula01 - Logica de Programação
 
Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01
 
Algoritmos: Tipos de Dados
Algoritmos: Tipos de DadosAlgoritmos: Tipos de Dados
Algoritmos: Tipos de Dados
 
Programando com Python
Programando com PythonProgramando com Python
Programando com Python
 
Algoritmo - tipos de dados
Algoritmo - tipos de dadosAlgoritmo - tipos de dados
Algoritmo - tipos de dados
 
Caminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-FordCaminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-Ford
 
Lógica e algoritmos
Lógica e algoritmosLógica e algoritmos
Lógica e algoritmos
 

Destacado

13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmos
Ricardo Bolanho
 
Semana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetoresSemana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetores
Pedro Valente
 
Trabalho métodos de ordenação
Trabalho métodos de ordenaçãoTrabalho métodos de ordenação
Trabalho métodos de ordenação
Daiana de Ávila
 
Ordenação de vetores
Ordenação de vetoresOrdenação de vetores
Ordenação de vetores
alfredtaddeus
 
Maquinas simples-cris
Maquinas simples-crisMaquinas simples-cris
Maquinas simples-cris
cristbarb
 

Destacado (20)

Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
 
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempo
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempoAnálise de Algoritmos - Problemas, instâncias, algoritmos e tempo
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempo
 
01 algorimos e complexidade introduç o
01   algorimos e complexidade introduç o01   algorimos e complexidade introduç o
01 algorimos e complexidade introduç o
 
Aula analise algoritmos
Aula analise algoritmosAula analise algoritmos
Aula analise algoritmos
 
Análise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenaçãoAnálise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenação
 
Ordenação
OrdenaçãoOrdenação
Ordenação
 
Ordenação de Dados por Distribuição de Chaves
Ordenação de Dados por Distribuição de ChavesOrdenação de Dados por Distribuição de Chaves
Ordenação de Dados por Distribuição de Chaves
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmos
 
Tutorial aed iii 001 - algoritmo de ordenação shellsort
Tutorial aed iii   001 - algoritmo de ordenação shellsortTutorial aed iii   001 - algoritmo de ordenação shellsort
Tutorial aed iii 001 - algoritmo de ordenação shellsort
 
7 slides
7 slides7 slides
7 slides
 
Semana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetoresSemana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetores
 
Análise empírica de algoritmos de ordenação
Análise empírica de algoritmos de ordenaçãoAnálise empírica de algoritmos de ordenação
Análise empírica de algoritmos de ordenação
 
Metodo de Ordenação Selection sort
Metodo de Ordenação Selection sortMetodo de Ordenação Selection sort
Metodo de Ordenação Selection sort
 
Ordenação por inserção
Ordenação por inserçãoOrdenação por inserção
Ordenação por inserção
 
Trabalho métodos de ordenação
Trabalho métodos de ordenaçãoTrabalho métodos de ordenação
Trabalho métodos de ordenação
 
Ordenação de vetores
Ordenação de vetoresOrdenação de vetores
Ordenação de vetores
 
Análise de Algoritmos - Mais problemas NP-Completos
Análise de Algoritmos - Mais problemas NP-CompletosAnálise de Algoritmos - Mais problemas NP-Completos
Análise de Algoritmos - Mais problemas NP-Completos
 
Algoritmos de busca
Algoritmos de buscaAlgoritmos de busca
Algoritmos de busca
 
Maquinas simples
Maquinas simplesMaquinas simples
Maquinas simples
 
Maquinas simples-cris
Maquinas simples-crisMaquinas simples-cris
Maquinas simples-cris
 

Similar a Análise de Algoritmos - Análise Assintótica

Modelagem matematica aplicada a engenharia quimica
Modelagem matematica aplicada a engenharia quimicaModelagem matematica aplicada a engenharia quimica
Modelagem matematica aplicada a engenharia quimica
Vinicius Chacon
 
Coment obf nivel3_3fase
Coment obf nivel3_3faseComent obf nivel3_3fase
Coment obf nivel3_3fase
Thommas Kevin
 

Similar a Análise de Algoritmos - Análise Assintótica (20)

Algoritmo de programação dinâmica-01.pdf
Algoritmo de programação dinâmica-01.pdfAlgoritmo de programação dinâmica-01.pdf
Algoritmo de programação dinâmica-01.pdf
 
Teoria do números - Classificações especiais
Teoria do números - Classificações especiaisTeoria do números - Classificações especiais
Teoria do números - Classificações especiais
 
Artigo sobre complexibilidade complexity.pdf
Artigo sobre complexibilidade complexity.pdfArtigo sobre complexibilidade complexity.pdf
Artigo sobre complexibilidade complexity.pdf
 
03-Notacoes O omega teta Complexidade e Corretude.pdf
03-Notacoes O omega teta Complexidade e Corretude.pdf03-Notacoes O omega teta Complexidade e Corretude.pdf
03-Notacoes O omega teta Complexidade e Corretude.pdf
 
Conjuntos numéricos versão mini
Conjuntos numéricos   versão miniConjuntos numéricos   versão mini
Conjuntos numéricos versão mini
 
EDA_Aula_09_Complexidade_2021.1.pdf
EDA_Aula_09_Complexidade_2021.1.pdfEDA_Aula_09_Complexidade_2021.1.pdf
EDA_Aula_09_Complexidade_2021.1.pdf
 
22032014
2203201422032014
22032014
 
Lista de exercícios 1
Lista de exercícios 1Lista de exercícios 1
Lista de exercícios 1
 
06 complexidade de problemas
06   complexidade de problemas06   complexidade de problemas
06 complexidade de problemas
 
Modelagem matematica aplicada a engenharia quimica
Modelagem matematica aplicada a engenharia quimicaModelagem matematica aplicada a engenharia quimica
Modelagem matematica aplicada a engenharia quimica
 
Técnicas de integração
Técnicas de integraçãoTécnicas de integração
Técnicas de integração
 
Coment obf nivel3_3fase
Coment obf nivel3_3faseComent obf nivel3_3fase
Coment obf nivel3_3fase
 
(ACH2002) Introdução à Análise de Algoritmos - Aula 08
(ACH2002) Introdução à Análise de Algoritmos - Aula 08(ACH2002) Introdução à Análise de Algoritmos - Aula 08
(ACH2002) Introdução à Análise de Algoritmos - Aula 08
 
Exercícios resolvidos de máximo e mínimo de função
Exercícios resolvidos de máximo e mínimo de funçãoExercícios resolvidos de máximo e mínimo de função
Exercícios resolvidos de máximo e mínimo de função
 
Progressões
ProgressõesProgressões
Progressões
 
Derivação com logaritmo
Derivação com logaritmoDerivação com logaritmo
Derivação com logaritmo
 
Sequencias e mf 2016
Sequencias e mf 2016Sequencias e mf 2016
Sequencias e mf 2016
 
15022014
1502201415022014
15022014
 
Análise de Algoritmos - Indução Finita
Análise de Algoritmos - Indução FinitaAnálise de Algoritmos - Indução Finita
Análise de Algoritmos - Indução Finita
 
Apostila de matematica para concursos
Apostila de matematica para concursosApostila de matematica para concursos
Apostila de matematica para concursos
 

Último

PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
HELENO FAVACHO
 
Aula 03 - Filogenia14+4134684516498481.pptx
Aula 03 - Filogenia14+4134684516498481.pptxAula 03 - Filogenia14+4134684516498481.pptx
Aula 03 - Filogenia14+4134684516498481.pptx
andrenespoli3
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
tatianehilda
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
AntonioVieira539017
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
CleidianeCarvalhoPer
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
marlene54545
 

Último (20)

LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
Texto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptTexto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.ppt
 
Aula 03 - Filogenia14+4134684516498481.pptx
Aula 03 - Filogenia14+4134684516498481.pptxAula 03 - Filogenia14+4134684516498481.pptx
Aula 03 - Filogenia14+4134684516498481.pptx
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenos
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 

Análise de Algoritmos - Análise Assintótica

  • 1. An´alise de Algoritmos Análise assintótica: ordens O, Ω e Θ – p. 1/35
  • 2. Análise assintótica Ao ver uma expressão como n + 10 ou n2 + 1, pensamos geralmente em valores pequenos de n, valores próximos de zero. A análise de algoritmos faz exatamente o contrário: ignora os valores pequenos e concentra-se nos valores enormes de n. Esse tipo de análise chama-se análise “assintótica”. – p. 2/35
  • 3. Análise assintótica - exemplo Considere o número de operações de dois algoritmos que resolvem um mesmo problema, como função do tamanho n da entrada. Algoritmo 1: f1(n) = 2n2 + 5n operações Algoritmo 2: f2(n) = 500n + 4000 operações Dependendo do valor de n, o Algoritmo 1 pode requerer mais ou menos operações que o Algoritmo 2. (Compare as duas funções para n = 10 e n = 100.) – p. 3/35
  • 4. Análise assintótica - exemplo Nosso interesse é estudar o comportamento assint´otico das funções, ou seja, quando n → ∞. Em geral, os termos inferiores e as constantes multiplicativas contribuem pouco na comparação e podem ser descartados. – p. 4/35
  • 5. Análise assintótica - exemplo O importante é observar que f1(n) tem crescimento proporcional a n2 (quadrático), ao passo que f2(n) tem crescimento proporcional a n (linear). Um crescimento quadrático é pior que um crescimento linear. Assim, vamos preferir o Algoritmo 2. – p. 5/35
  • 6. Análise assintótica - outro exemplo Para valores enormes de n, as funções n2 , 3 2 n2 , 9999n2 , n2 1000 , n2 + 100n crescem todas com a mesma velocidade e portanto são todas “equivalentes”. Nesse estudo, as funções são classificadas em “ordens”; todas as funções de uma mesma ordem são equivalentes. As cinco funções acima, por exemplo, pertencem à mesma ordem. – p. 6/35
  • 7. Importância da análise assintótica Na tabela abaixo, os valores representam o tamanho da maior instância solucionável em uma hora. Computador Computador 100 Computador 1000 Função atual vezes mais rápido vezes mais rápido n N 100N 1000N n log n N1 22, 5N1 140, 2N1 n2 N2 10N2 31, 6N2 n3 N3 4, 6N3 10N3 2n N4 N4 + 6 N4 + 10 – p. 7/35
  • 8. Funções assintoticamente não negativas Restringiremos a atenção a funções assintoticamente não negativas, ou seja, funções f tais que f(n) ≥ 0 para todo n “suficientemente grande”. Mais explicitamente, f é assintoticamente não negativa se existe n0 tal que f(n) ≥ 0 para todo n maior que n0. – p. 8/35
  • 9. An´alise de Algoritmos Análise assintótica: ordem O – p. 9/35
  • 10. Ordem O Dadas funções assintoticamente não negativas f e g, dizemos que f est´a na ordem O de g e escrevemos f = O(g) se f(n) ≤ c.g(n) para algum c positivo e para todo n suficientemente grande. – p. 10/35
  • 11. Ordem O Em outras palavras, f = O(g) se existe um número positivo c e um número n0 tais que f(n) ≤ c.g(n) para todo n maior que n0. – p. 11/35
  • 12. Ordem O - Exemplos A notação O fornece limites superiores de funções que, por sua vez, correspondem a tempos de execução de algoritmos. – p. 12/35
  • 13. Ordem O - Exemplos A notação O fornece limites superiores de funções que, por sua vez, correspondem a tempos de execução de algoritmos. Exemplo 1: Se f(n) ≤ 9999g(n) para todo n ≥ 1000 – p. 12/35
  • 14. Ordem O - Exemplos A notação O fornece limites superiores de funções que, por sua vez, correspondem a tempos de execução de algoritmos. Exemplo 1: Se f(n) ≤ 9999g(n) para todo n ≥ 1000 então f = O(g). – p. 12/35
  • 15. Ordem O - Exemplos Exemplo 2: Suponha que f(n) = 2n2 + 3n + 4. – p. 13/35
  • 16. Ordem O - Exemplos Exemplo 2: Suponha que f(n) = 2n2 + 3n + 4. 2n2 + 3n + 4 ≤ 2n2 + 3n2 + 4n2 = 9n2 para todo n ≥ 1. – p. 13/35
  • 17. Ordem O - Exemplos Exemplo 2: Suponha que f(n) = 2n2 + 3n + 4. 2n2 + 3n + 4 ≤ 2n2 + 3n2 + 4n2 = 9n2 para todo n ≥ 1. Portanto, f(n) = O(n2 ). – p. 13/35
  • 18. Ordem O - Exemplos Exemplo 3: Suponha que f(n) = 3 + 2 n e que g(n) = 1. – p. 14/35
  • 19. Ordem O - Exemplos Exemplo 3: Suponha que f(n) = 3 + 2 n e que g(n) = 1. Então 3 + 2 n ≤ 3 + 1 = 4 = 4.g(n) para todo n ≥ 2. – p. 14/35
  • 20. Ordem O - Exemplos Exemplo 3: Suponha que f(n) = 3 + 2 n e que g(n) = 1. Então 3 + 2 n ≤ 3 + 1 = 4 = 4.g(n) para todo n ≥ 2. Portanto, f(n) = O(g(n)) = O(1). – p. 14/35
  • 21. Ordem O - Exemplos Exemplo 4: Suponha que f(n) = n3 e que g(n) = 200n2 . Será verdade que f(n) = O(g(n))? – p. 15/35
  • 22. Ordem O - Exemplos Exemplo 4: Suponha que f(n) = n3 e que g(n) = 200n2 . Será verdade que f(n) = O(g(n))? Se existem c e n0 tais que f(n) ≤ c.g(n), teremos n ≤ 200c para todo n ≥ n0. Mas isso é absurdo! – p. 15/35
  • 23. Ordem O - Exemplos Exemplo 4: Suponha que f(n) = n3 e que g(n) = 200n2 . Será verdade que f(n) = O(g(n))? Se existem c e n0 tais que f(n) ≤ c.g(n), teremos n ≤ 200c para todo n ≥ n0. Mas isso é absurdo! Logo, f(n) = O(g(n)). – p. 15/35
  • 24. Ordem O - Exercícios Prove os disprove as afirmações: 1. 10n = O(n) 2. 10n2 = O(n) 3. 10n55 = O(2n) 4. n2 + 200n + 300 = O(n2) 5. n2 − 200n − 300 = O(n) 6. 3 2n2 + 7 2n − 4 = O(n) 7. 3 2n2 + 7 2n − 4 = O(n2) 8. n3 − 999999n2 − 1000000 = O(n2) – p. 16/35
  • 25. Ordem O - Exercícios 9. Seja n k o número de combinações de n objetos tomados k a k. Mostre n 2 = O(n2). Prove os disprove as afirmações: 10. 2n+1 = O(2n) 11. 3n = O(2n) 12. log2 n = O(log3 n) 13. log3 n = O(log2 n) 14. log2 n = O(n) 15. 100 log n − 10n + 2n log n = O(n log n) – p. 17/35
  • 26. Limite superior (upper bound) A notação O também é utilizada para indicar limites superiores para problemas. – p. 18/35
  • 27. Limite superior (upper bound) A notação O também é utilizada para indicar limites superiores para problemas. Dado um problema, por exemplo, o de multiplicação de duas matrizes quadradas n × n. – p. 18/35
  • 28. Limite superior (upper bound) A notação O também é utilizada para indicar limites superiores para problemas. Dado um problema, por exemplo, o de multiplicação de duas matrizes quadradas n × n. Conhecemos um algoritmo para resolver este problema (pelo método trivial) de complexidade O(n3 ). – p. 18/35
  • 29. Limite superior Sabemos assim que a complexidade deste problema não deve superar O(n3 ), uma vez que existe um algoritmo que o resolve com esta complexidade, e dizemos que uma cota superior ou limite superior para este problema é O(n3 ). – p. 19/35
  • 30. Limite superior Sabemos assim que a complexidade deste problema não deve superar O(n3 ), uma vez que existe um algoritmo que o resolve com esta complexidade, e dizemos que uma cota superior ou limite superior para este problema é O(n3 ). A cota superior de um problema pode mudar se alguém descobrir um outro algoritmo melhor. – p. 19/35
  • 31. Limite superior V. Strassen apresentou em 1969 um algoritmo para multiplicação de matrizes de complexidade O(nlog 7 ) = O(n2.807 ). – p. 20/35
  • 32. Limite superior V. Strassen apresentou em 1969 um algoritmo para multiplicação de matrizes de complexidade O(nlog 7 ) = O(n2.807 ). Assim a cota superior para o problema de multiplicação de matrizes passou a ser O(nlog 7 ). – p. 20/35
  • 33. Limite superior Em 1990, Coppersmith e Winograd melhoraram esta marca para O(n2.376 ); – p. 21/35
  • 34. Limite superior Em 1990, Coppersmith e Winograd melhoraram esta marca para O(n2.376 ); Em 2010, A. Stothers apresentou um algoritmo de complexidade O(n2.373 ); – p. 21/35
  • 35. Limite superior Em 1990, Coppersmith e Winograd melhoraram esta marca para O(n2.376 ); Em 2010, A. Stothers apresentou um algoritmo de complexidade O(n2.373 ); Em 2011, V. Willians melhorou ainda mais esta marca para O(n2.372 ). – p. 21/35
  • 36. Limite superior Em 1990, Coppersmith e Winograd melhoraram esta marca para O(n2.376 ); Em 2010, A. Stothers apresentou um algoritmo de complexidade O(n2.373 ); Em 2011, V. Willians melhorou ainda mais esta marca para O(n2.372 ). Portanto, a cota superior atual para o problema da multiplicação de matrizes é O(n2.372 ). – p. 21/35
  • 37. Analogia com record mundial A cota superior para um problema é análoga ao record mundial de uma modalidade de atletismo. Ele é estabelecido pelo melhor atleta (algoritmo) do momento. Assim como o record mundial, a cota superior pode ser melhorada por um algoritmo (atleta) mais veloz. – p. 22/35
  • 38. Analogia com record mundial “Cota superior” - 100m. rasos 1988 Carl Lewis 9s 92 1993 Linford Christie 9s 87 1999 Maurice Greene 9s 79 2007 Asafa Powell 9s 74 2008 Usain Bolt 9s 72 2009 Usain Bolt 9s 58 – p. 23/35
  • 39. Limite inferior (lower bound) As vezes é possível demonstrar que, para um dado problema, qualquer que seja o algoritmo a ser usado, o problema requer pelo menos um certo número de operações. – p. 24/35
  • 40. Limite inferior (lower bound) As vezes é possível demonstrar que, para um dado problema, qualquer que seja o algoritmo a ser usado, o problema requer pelo menos um certo número de operações. Essa complexidade é chamada cota inferior (lower bound) do problema. – p. 24/35
  • 41. Limite inferior Para o problema da multiplicação de matrizes quadradas n × n, apenas para ler os elementos das duas matrizes de entrada ou para produzir os elementos da matriz produto leva tempo O(n2 ). Assim uma cota inferior trivial é Ω(n2 ). – p. 25/35
  • 42. Algoritmo ótimo Se um algoritmo tem uma complexidade igual á cota inferior do problema, ele é assintoticamente ´otimo ou simplesmente ´otimo. – p. 26/35
  • 43. An´alise de Algoritmos Análise assintótica: ordem Ω – p. 27/35
  • 44. Ordem Ω A expressão “f = O(g)” tem o mesmo sabor que “f ≤ g”. Agora precisamos de um conceito que tenha o sabor de “f ≥ g”. – p. 28/35
  • 45. Ordem Ω Dadas funções assintoticamente não negativas f e g, dizemos que f est´a na ordem Ω de g e escrevemos f = Ω(g) se f(n) ≥ c.g(n) para algum c positivo e para todo n suficientemente grande. – p. 29/35
  • 46. Ordem Ω Em outras palavras, f = Ω(g) se existe um número positivo c e um número n0 tais que f(n) ≥ c.g(n) para todo n maior que n0. – p. 30/35
  • 47. Ordem Ω Em outras palavras, f = Ω(g) se existe um número positivo c e um número n0 tais que f(n) ≥ c.g(n) para todo n maior que n0. Qual a relação entre O e Ω? – p. 30/35
  • 48. Ordem Ω Em outras palavras, f = Ω(g) se existe um número positivo c e um número n0 tais que f(n) ≥ c.g(n) para todo n maior que n0. Qual a relação entre O e Ω? f = O(g) ⇔ g = Ω(f) – p. 30/35
  • 49. Ordem Ω - Exercícios 1. Seja n k o número de combinações de n objetos tomados k a k. Mostre n 2 = Ω(n2). 2. Prove que 100 log n − 10n + 2n log n está em Ω(n log n). 3. É verdade que 2n + 1 está em Ω(n)? – p. 31/35
  • 50. An´alise de Algoritmos Análise assintótica: ordem Θ – p. 32/35
  • 51. Ordem Θ Além dos conceitos que têm o sabor de “f ≤ g” e de “f ≥ g”, precisamos de um que tenha o sabor de “f = g. – p. 33/35
  • 52. Ordem Θ Dizemos que as funções f e g estão na mesma ordem e escrevemos f = Θ(g) se f = O(g) e f = Ω(g). Em outras palavras, f = Θ(g) significa que existe números positivos c e d tais que c.g(n) ≤ f(n) ≤ d.g(n) para todo n suficientemente grande. – p. 34/35
  • 53. Ordem Θ - Exercícios Prove ou disprove: 1. 9999n2 = Θ(n2) 2. (3/2)n2 + (7/2)n − 4 = Θ(n2) 3. n2/1000 − 999n = Θ(n2) 4. log2 n + 1 = Θ(log10 n) – p. 35/35