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 • Freqüentemente o número de inversões facilita a análise de algoritmos de ordenação. • Em particular para algoritmos com transposições de elementos adjacentes: #Transposições = # Inversões Número médio de transposições • Considere o conjunto de todas permutações Sn sobre [1, n]. • Denota-se por inv(π) o número de inversões de uma permutação. • Para cada permutação π existe uma permutação π − correspondente com ordem inversa: 35124; 42153 • Cada inversão em π não é inversão em π − e vice versa: Número médio de transposições inv(π) + inv(π − ) = n(n − 1)/2. • O número médio de inversões é 1/n! inv(π) = 1/(2n!) inv(π) + inv(π) π∈Sn π∈Sn π∈Sn = 1/(2n!) inv(π) + inv(π − ) π∈Sn π∈Sn = 1/(2n!) n(n − 1)/2 = n(n − 1)/4 π∈Sn • Logo, a complexidade média (de transposições) é Θ(n 2 ). Exemplo 2.16 (Máximo) (Continuando exemplo 2.8.) Queremos analisar o número médio de atribuições no cálculo do máximo, i.e. o número de atualizações do máximo. 52 ♦
Máximo 2.3. Complexidade média • Qual o número esperado de atualizações no algoritmo Máximo? • Para uma permutação π considere a tabela de inversões b1, . . . , bn. • bi é o número de elementos na esquerda de i que são maiores que i. • Exemplo: Para 53142 b1 b2 b3 b4 b5 2 3 1 1 0 • Os bi obedecem 0 ≤ bi ≤ n − i. Tabelas de inversões • Observação: Cada tabela de inversões corresponde a uma permutação e vice versa. • Exemplo: A permutação correspondente com b1 b2 b3 b4 b5 3 1 2 1 0 • Vantagem para a análise: Podemos escolher os bi independentemente. • Observação, na busca do máximo i é máximo local se todos números no seu esquerdo são menores, i.e. se todos números que são maiores são no seu direito, i.e. se bi = 0. Número esperado de atualizações • Seja Xi a variável aleatória Xi = [i é máximo local]. • Temos Pr[Xi = 1] = Pr[bi = 0] = 1/(n − i + 1). • O número de máximos locais é X = 1≤i≤n Xi. • Portanto, o número esperado de máximos locais é E[X] = E = E[Xi] = 1≤i≤n 1≤i≤n Xi 1≤i≤n Pr[Xi] = 1≤i≤n 1 1 = n − i + 1 i 1≤i≤n = Hn • Contando atualizações: tem uma a menos que os máximos locais Hn −1. 53
- 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 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 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
- Page 92 and 93: 4. Algoritmos gulosos • Como comp
- Page 94 and 95: 4. Algoritmos gulosos Proposição
- Page 96 and 97: 4. Algoritmos gulosos Resultados O
- Page 98 and 99: 5. Programação dinâmica É simpl
- Page 100 and 101: 5. Programação dinâmica soluçã
- Page 102 and 103: 5. Programação dinâmica Teorema:
Máximo<br />
2.3. Complexida<strong>de</strong> média<br />
• Qual o número esperado <strong>de</strong> atualizações no algoritmo Máximo?<br />
• Para uma permutação π consi<strong>de</strong>re a tabela <strong>de</strong> inversões b1, . . . , bn.<br />
• bi é o número <strong>de</strong> elementos na esquerda <strong>de</strong> i que são maiores que i.<br />
• Exemplo: Para 53142 b1 b2 b3 b4 b5<br />
2 3 1 1 0<br />
• Os bi obe<strong>de</strong>cem 0 ≤ bi ≤ n − i.<br />
Tabelas <strong>de</strong> inversões<br />
• Observação: Cada tabela <strong>de</strong> inversões correspon<strong>de</strong> a uma permutação e<br />
vice versa.<br />
• Exemplo: A permutação correspon<strong>de</strong>nte com b1 b2 b3 b4 b5<br />
3 1 2 1 0<br />
• Vantagem para a análise: Po<strong>de</strong>mos escolher os bi in<strong>de</strong>pen<strong>de</strong>ntemente.<br />
• Observação, na busca do máximo i é máximo local se todos números no<br />
seu esquerdo são menores, i.e. se todos números que são maiores são no<br />
seu direito, i.e. se bi = 0.<br />
Número esperado <strong>de</strong> atualizações<br />
• Seja Xi a variável aleatória Xi = [i é máximo local].<br />
• Temos Pr[Xi = 1] = Pr[bi = 0] = 1/(n − i + 1).<br />
• O número <strong>de</strong> máximos locais é X = <br />
1≤i≤n Xi.<br />
• Portanto, o número esperado <strong>de</strong> máximos locais é<br />
<br />
<br />
E[X] = E<br />
<br />
= <br />
E[Xi]<br />
= <br />
1≤i≤n<br />
1≤i≤n<br />
Xi<br />
1≤i≤n<br />
Pr[Xi] = <br />
1≤i≤n<br />
1 1<br />
=<br />
n − i + 1 i<br />
1≤i≤n<br />
= Hn<br />
• Contando atualizações: tem uma a menos que os máximos locais Hn −1.<br />
53