Algoritmos e complexidade Notas de aula - Arquivo Escolar
Algoritmos e complexidade Notas de aula - Arquivo Escolar Algoritmos e complexidade Notas de aula - Arquivo Escolar
2. Análise de complexidade Componentes disjuntivas Componentes disjuntivas • Suponha um algoritmo c que consiste em duas componentes disjuntivas c1 e c2. Logo, e temos desemp[c] ≤ max(desemp[c1], desemp[c2]) cp[A] ≤ max(cp[c1], cp[c2]) Caso a expressão para o máximo de duas funções for difícil, podemos simplificar cp[A] ≤ max(cp[c1], cp[c2]) = O(max(cp[c1], cp[c2])). O condicional Seja C =se b então c1 senão c2 • O condicional consiste em – uma avaliação da condição b – uma avaliação do comando c1 ou c2 (componentes disjuntivas). • Aplicando as regras para componentes conjuntivas e disjuntivas obtemos cp[C] ≤ cp[b] + max(cp[c1], cp[c2]) Para se b então c1 obtemos com cp[skip] = 0 cp[C] ≤ cp[b] + cp[c1] Exemplo 2.5 Considere um algoritmo a que, dependendo do primeiro elemento de uma lista u, ordena a lista ou determina seu somatório: Exemplo 1 se hd(u) = 0 então 2 v := ordena(u) 3 senão 4 s := soma(u) 40
2.2. Complexidade pessimista Assumindo que o teste é possível em tempo constante, ele é absorvido pelo trabalho em ambos casos, tal que cp[A] ≤ max(cp[v := ordena(u)], cp[s := soma(u)]) e com, por exemplo, cp[v := ordena(u)](n) = n 2 e cp[s := soma(u)](n) = n temos cp[A](n) ≤ n 2 2.2.2. Exemplos Exemplo 2.6 (Bubblesort) Nesse exemplo vamos estudar o algoritmo Bubblesort de ordenação. Bubblesort Algoritmo 2.2 (Bubblesort) Entrada Uma sequência a1, . . . , an de números inteiros. Saída Uma sequência a π(1), . . . , a π(n) de números inteiros onde π uma permutação de [1, n] tal que para i < j temos a π(i) ≤ a π(j). 1 for i :=1 to n 2 { Inv : an−i+2 ≤ · · · ≤ an são os i − 1 maiores elementos } 3 for j :=1 to n − i 4 i f aj > aj+1 then 5 swap aj ,aj+1 6 end i f 7 end for 8 end for Bubblesort: Complexidade • A medida comum para algoritmos de ordenação: o número de comparações (de chaves). ♦ 41
- 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 18 and 19: 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 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
- Page 68 and 69: 2. Análise de complexidade funçã
- Page 70 and 71: 2. Análise de complexidade Algorit
- Page 72 and 73: 2. Análise de complexidade resolve
- Page 75: 3. Introdução Resolver problemas
- Page 78 and 79: 4. Algoritmos gulosos A abordagem g
- Page 80 and 81: 4. Algoritmos gulosos Do outro lado
- Page 82 and 83: 4. Algoritmos gulosos Aplicações
- Page 84 and 85: 4. Algoritmos gulosos 1 V ′ := {v
- Page 86 and 87: 4. Algoritmos gulosos Algoritmo de
- Page 88 and 89: 4. Algoritmos gulosos Implementaç
- Page 90 and 91: 4. Algoritmos gulosos Variação do
2. Análise <strong>de</strong> <strong>complexida<strong>de</strong></strong><br />
Componentes disjuntivas<br />
Componentes disjuntivas<br />
• Suponha um algoritmo c que consiste em duas componentes disjuntivas<br />
c1 e c2. Logo,<br />
e temos<br />
<strong>de</strong>semp[c] ≤ max(<strong>de</strong>semp[c1], <strong>de</strong>semp[c2])<br />
cp[A] ≤ max(cp[c1], cp[c2])<br />
Caso a expressão para o máximo <strong>de</strong> duas funções for difícil, po<strong>de</strong>mos simplificar<br />
cp[A] ≤ max(cp[c1], cp[c2]) = O(max(cp[c1], cp[c2])).<br />
O condicional<br />
Seja C =se b então c1 senão c2<br />
• O condicional consiste em<br />
– uma avaliação da condição b<br />
– uma avaliação do comando c1 ou c2 (componentes disjuntivas).<br />
• Aplicando as regras para componentes conjuntivas e disjuntivas obtemos<br />
cp[C] ≤ cp[b] + max(cp[c1], cp[c2])<br />
Para se b então c1 obtemos com cp[skip] = 0<br />
cp[C] ≤ cp[b] + cp[c1]<br />
Exemplo 2.5<br />
Consi<strong>de</strong>re um algoritmo a que, <strong>de</strong>pen<strong>de</strong>ndo do primeiro elemento <strong>de</strong> uma lista<br />
u, or<strong>de</strong>na a lista ou <strong>de</strong>termina seu somatório:<br />
Exemplo<br />
1 se hd(u) = 0 então<br />
2 v := or<strong>de</strong>na(u)<br />
3 senão<br />
4 s := soma(u)<br />
40