Algoritmos e complexidade Notas de aula - Arquivo Escolar
Algoritmos e complexidade Notas de aula - Arquivo Escolar Algoritmos e complexidade Notas de aula - Arquivo Escolar
1. Introdução e conceitos básicos Complexidade 1.2x10 9 1.0x10 9 8.0x10 8 6.0x10 8 4.0x10 8 2.0x10 8 0.0x10 0 0 100 200 300 400 500 Tamanho do problema x 3 10x 3 4x 3 -3x 2 +2x-1 Crescimento de funções n = 10 1 10 2 10 3 10 4 10 5 10 6 log2 n n 3 10 7 10 13 17 20 1 10 2 10 3 10 4 10 5 10 6 n log2 n 33 6.6 × 10 2 10 4 1.3 × 10 5 1.7 × 10 6 2 × 10 7 n 2 n 3 2 n 10 2 10 3 10 3 10 4 10 6 Comparar eficiências 16 1.3 × 10 30 10 6 10 9 1.1 × 10 301 10 8 10 12 2 × 10 3010 1 ano ≈ 365.2425d ≈ 3.2 × 10 7 s 1 século ≈ 3.2 × 10 9 s 1 milênio ≈ 3.2 × 10 10 s 10 10 10 15 10 30103 10 12 10 18 10 301030 • Como comparar eficiências? Uma medida concreta do tempo depende – do tipo da máquina usada (arquitetura, cache, memória, ...)
– da qualidade e das opções do compilador ou ambiente de execução – do tamanho do problema (da entrada) • Portanto, foram inventadas máquinas abstratas. • A análise da complexidade de um algoritmo consiste em determinar o número de operações básicas (atribuição, soma, comparação, ...) em relação ao tamanho da entrada. Observe que nessa medida o tempo é “discreto”. Análise assintótica • Em geral, o número de operações fornece um nível de detalhamento grande. • Portanto, analisamos somente a taxa ou ordem de crescimento, substituindo funções exatas com cotas mais simples. • Duas medidas são de interesse particular: A complexidade – pessimista e – média Também podemos pensar em considerar a complexidade otimista (no caso melhor): mas essa medida faz pouco sentido, porque sempre é possível enganar com um algoritmo que é rápido para alguma entrada. Exemplo • Imagine um algoritmo com número de operações an 2 + bn + c • Para análise assintótica não interessam – os termos de baixa ordem, e – os coeficientes constantes. • Logo o tempo da execução tem cota n 2 , denotado com O(n 2 ). Observe que essas simplificações não devem ser esquecidas na escolha de um algoritmo na prática. Existem vários exemplos de algoritmos com desempenho bom assintoticamente, mas não são viáveis na prática em comparação com algoritmos “menos eficientes”: A taxa de crescimento esconde fatores constantes e o tamanho mínimo de problema tal que um algoritmo é mais rápido que um outro. 17
- Page 1: Algoritmos e complexidade Notas de
- Page 4 and 5: Conteúdo 5. Programação dinâmic
- Page 6 and 7: Conteúdo 15.Complexidade de circui
- Page 9: Parte I. Análise de algoritmos 7
- Page 12 and 13: 1. Introdução e conceitos básico
- Page 14 and 15: 1. Introdução e conceitos básico
- Page 16 and 17: 1. Introdução e conceitos básico
- Page 20 and 21: 1. Introdução e conceitos básico
- Page 22 and 23: 1. Introdução e conceitos básico
- Page 24 and 25: 1. Introdução e conceitos básico
- Page 26 and 27: 1. Introdução e conceitos básico
- Page 28 and 29: 1. Introdução e conceitos básico
- Page 30 and 31: 1. Introdução e conceitos básico
- Page 32 and 33: 1. Introdução e conceitos básico
- Page 34 and 35: 2. Análise de complexidade • Par
- Page 36 and 37: 2. Análise de complexidade • Uma
- Page 38 and 39: 2. Análise de complexidade 1. Atri
- Page 40 and 41: 2. Análise de complexidade Exemplo
- Page 42 and 43: 2. Análise de complexidade Compone
- Page 44 and 45: 2. Análise de complexidade • Qua
- Page 46 and 47: 2. Análise de complexidade Algorit
- Page 48 and 49: 2. Análise de complexidade Algorit
- Page 50 and 51: 2. Análise de complexidade Tratabi
- Page 52 and 53: 2. Análise de complexidade A compl
- Page 54 and 55: 2. Análise de complexidade • Fre
- Page 56 and 57: 2. Análise de complexidade Exemplo
- Page 58 and 59: 2. Análise de complexidade 1 i f l
- Page 60 and 61: 2. Análise de complexidade Novamen
- Page 62 and 63: 2. Análise de complexidade Logo te
- Page 64 and 65: 2. Análise de complexidade 7 for c
- Page 66 and 67: 2. Análise de complexidade Com iss
– da qualida<strong>de</strong> e das opções do compilador ou ambiente <strong>de</strong> execução<br />
– do tamanho do problema (da entrada)<br />
• Portanto, foram inventadas máquinas abstratas.<br />
• A análise da <strong>complexida<strong>de</strong></strong> <strong>de</strong> um algoritmo consiste em <strong>de</strong>terminar o<br />
número <strong>de</strong> operações básicas (atribuição, soma, comparação, ...) em<br />
relação ao tamanho da entrada.<br />
Observe que nessa medida o tempo é “discreto”.<br />
Análise assintótica<br />
• Em geral, o número <strong>de</strong> operações fornece um nível <strong>de</strong> <strong>de</strong>talhamento<br />
gran<strong>de</strong>.<br />
• Portanto, analisamos somente a taxa ou or<strong>de</strong>m <strong>de</strong> crescimento, substituindo<br />
funções exatas com cotas mais simples.<br />
• Duas medidas são <strong>de</strong> interesse particular: A <strong>complexida<strong>de</strong></strong><br />
– pessimista e<br />
– média<br />
Também po<strong>de</strong>mos pensar em consi<strong>de</strong>rar a <strong>complexida<strong>de</strong></strong> otimista (no caso<br />
melhor): mas essa medida faz pouco sentido, porque sempre é possível enganar<br />
com um algoritmo que é rápido para alguma entrada.<br />
Exemplo<br />
• Imagine um algoritmo com número <strong>de</strong> operações<br />
an 2 + bn + c<br />
• Para análise assintótica não interessam<br />
– os termos <strong>de</strong> baixa or<strong>de</strong>m, e<br />
– os coeficientes constantes.<br />
• Logo o tempo da execução tem cota n 2 , <strong>de</strong>notado com O(n 2 ).<br />
Observe que essas simplificações não <strong>de</strong>vem ser esquecidas na escolha <strong>de</strong> um<br />
algoritmo na prática. Existem vários exemplos <strong>de</strong> algoritmos com <strong>de</strong>sempenho<br />
bom assintoticamente, mas não são viáveis na prática em comparação<br />
com algoritmos “menos eficientes”: A taxa <strong>de</strong> crescimento escon<strong>de</strong> fatores<br />
constantes e o tamanho mínimo <strong>de</strong> problema tal que um algoritmo é mais<br />
rápido que um outro.<br />
17