Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar Algoritmos e complexidade Notas de aula - Arquivo Escolar

arquivoescolar.org
from arquivoescolar.org More from this publisher
13.04.2013 Views

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

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!