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 Tratabilidade? – A variável aleatória desemp[A] – O custo médio Cm[A](n) = E[desemp[A]] = d∈Dn • Possibilidade: Problemas intratáveis viram tratáveis? • Exemplos de tempo esperado: – Caminho Hamiltoniano: linear! P (d) desemp[A](d) – Parada não-determinístico em k passos: fica NP-completo. (Resultados citados: [33, 20] (Caminho Hamiltanio), [70] (Parada em k passos).) Criptografia • Alguns métodos da Criptografia dependem da existência de “funções sem volta” (inglês: one-way functions). • Uma função sem volta f : {0, 1} ∗ → {0, 1} ∗ é tal que Método [69] 48 – dado x, computar f(x) é fácil (eficiente) – dada f(x) achar um x ′ tal que f(x ′ ) = f(x) é difícil
Exemplo 2.12 (Busca seqüencial) (Continuando exemplo 2.9.) Busca seqüencial 2.3. Complexidade média • Caso a chave esteja na i-ésima posição, temos que fazer i iterações. • Caso a chave não ocorra no conjunto, temos que fazer n iterações. • Supondo uma distribuição uniforme da posição da chave na sequência, temos cn[BS](n) = 1 n + i n + 1 1≤i≤n iterações e uma complexidade média de Θ(n). Exemplo 2.13 (Continuando o exemplo 2.1.) Neste exemplo vamos analisar o algoritmo considerando que a ocorrência dos números siga uma outra distribuição que não a uniforme. Ainda, considere o caso em que não há números repetidos no conjunto. Seja n um tamanho fixo. Para Busca1 temos o espaço amostral Dn = {(a1, . . . , an) | a1 ≥ 1, . . . , an ≥ 1}. Supomos que os números sigam uma distribuição na qual cada elemento da sequência é gerado independentemente com a probabilidade Pr[ai = n] = 2−n (que é possível porque 1≤i 2−i = 1). Com isso temos Pr[(a1, . . . , an)] = 2 −ai 1≤i≤n e, Pr[ai = 1] = 1/2 e Pr[ai = 1] = 1/2. desemp[A] e Considere as variáveis aleatórias p(d) = µ n se o primeiro 1 em d está na posição µ caso contrário Temos desemp[A] = 2p + 1 (veja os resultados do exemplo 2.1). Para i estar na primeira posição com elemento 1 as posições 1, . . . , i−1 devem ser diferente de 1, e ai deve ser 1. Logo para 1 ≤ i < n Pr[p = i] = Pr[a1 = 1] · · · Pr[ai−1 = 1] Pr[ai = 1] = 2 −i . O caso p = n tem duas causas: ou a posição do primeiro 1 é n ou a sequência não contém 1. Ambas têm probabilidade 2 −n e logo Pr[p = n] = 2 1−n . ♦ 49
- 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 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 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
- 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
Exemplo 2.12 (Busca seqüencial)<br />
(Continuando exemplo 2.9.)<br />
Busca seqüencial<br />
2.3. Complexida<strong>de</strong> média<br />
• Caso a chave esteja na i-ésima posição, temos que fazer i iterações.<br />
• Caso a chave não ocorra no conjunto, temos que fazer n iterações.<br />
• Supondo uma distribuição uniforme da posição da chave na sequência,<br />
temos<br />
cn[BS](n) = 1 <br />
n + i<br />
n + 1<br />
1≤i≤n<br />
<br />
iterações e uma <strong>complexida<strong>de</strong></strong> média <strong>de</strong> Θ(n).<br />
Exemplo 2.13<br />
(Continuando o exemplo 2.1.)<br />
Neste exemplo vamos analisar o algoritmo consi<strong>de</strong>rando que a ocorrência dos<br />
números siga uma outra distribuição que não a uniforme. Ainda, consi<strong>de</strong>re o<br />
caso em que não há números repetidos no conjunto. Seja n um tamanho fixo.<br />
Para Busca1 temos o espaço amostral Dn = {(a1, . . . , an) | a1 ≥ 1, . . . , an ≥<br />
1}. Supomos que os números sigam uma distribuição na qual cada elemento da<br />
sequência é gerado in<strong>de</strong>pen<strong>de</strong>ntemente com a probabilida<strong>de</strong> Pr[ai = n] = 2−n (que é possível porque <br />
1≤i 2−i = 1).<br />
Com isso temos<br />
Pr[(a1, . . . , an)] = <br />
2 −ai<br />
1≤i≤n<br />
e, Pr[ai = 1] = 1/2 e Pr[ai = 1] = 1/2.<br />
<strong>de</strong>semp[A] e<br />
<br />
Consi<strong>de</strong>re as variáveis aleatórias<br />
p(d) =<br />
µ<br />
n<br />
se o primeiro 1 em d está na posição µ<br />
caso contrário<br />
Temos <strong>de</strong>semp[A] = 2p + 1 (veja os resultados do exemplo 2.1). Para i estar<br />
na primeira posição com elemento 1 as posições 1, . . . , i−1 <strong>de</strong>vem ser diferente<br />
<strong>de</strong> 1, e ai <strong>de</strong>ve ser 1. Logo para 1 ≤ i < n<br />
Pr[p = i] = Pr[a1 = 1] · · · Pr[ai−1 = 1] Pr[ai = 1] = 2 −i .<br />
O caso p = n tem duas causas: ou a posição do primeiro 1 é n ou a sequência<br />
não contém 1. Ambas têm probabilida<strong>de</strong> 2 −n e logo Pr[p = n] = 2 1−n .<br />
♦<br />
49