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

B. Soluções dos exercícios c fixo. Essa prova vira Tn = n − 1 + 2/n 0≤i M then 5 m := M 6 M := ai 7 else i f ai > m do 8 m := ai 9 end i f 10 end for 11 return m O número de comparações é ao máximo dois por iteração, e esse limite ocorre numa sequência crescendo 1, 2, . . . , n. Portanto, a complexidade pessimista é 2n = Θ(n). Existem outras soluções que encontram o segundo maior elemento com somente n + log 2 n comparações. Solução do exercício 2.4. Uma abordagem simples com busca exaustiva é 1 m := 1≤i≤n ai 2 for C ⊆ [1, n] do 3 m ′ := i∈C ai − i∈C ai 4 i f m ′ < m then 5 m := m ′ 6 end i f 7 end for 314 i

O algoritmo tem complexidade pessimista cp = O(n) + O(2 n nc) = O(n2 n ). Solução do exercício 2.5. Para um dado n temos sempre n − ⌊n/2⌋ atualizações. Logo, o número médio de atualizações é a mesma. Solução do exercício 2.6. Seja A, A1, . . . , An as variáveis aleatórias que denotam o número total de atualizações, e o número de atualizações devido a posição i, respectivamente. Com a distribuição uniforme temos E[Ai] = 1/6 e pela linearidade E[A] = E = n/6. 1≤i≤n Com o mesmo argumento a segunda distribuição leva a E[Ai] = 1/10 é E[A] = n/10 finalmente. Solução do exercício 2.7. Cada chave em nível i ∈ [1, k] precisa i comparações e a árvore tem 1≤i≤k 2i−1 = 2 k − 1 nós e folhas em total. Para o número de comparações C temos E[C] = 1≤i≤k P [C = i]i = 1≤i≤k Solução do exercício 4.1. O seguinte algoritmo resolva o problema: Algoritmo B.1 (Subsequência) Entrada Sequência S ′ = s ′ 1 . . . s ′ m e S = s1 . . . sn. Ai 2i−1 i = 2−k 2 2k−1 1≤i≤k i i = 2(k − 1) + 2 1−k . Saída true, se S ′ ⊆ S (S ′ é uma subsequência de S) 1 i f m > n then 2 return f a l s e 3 end i f 4 i := 1 5 for j := 1, . . . , n do 6 i f s ′ i = sj then 7 i := i + 1 8 i f i > m then 315

O algoritmo tem <strong>complexida<strong>de</strong></strong> pessimista cp = O(n) + O(2 n nc) = O(n2 n ).<br />

Solução do exercício 2.5.<br />

Para um dado n temos sempre n − ⌊n/2⌋ atualizações. Logo, o número médio<br />

<strong>de</strong> atualizações é a mesma.<br />

Solução do exercício 2.6.<br />

Seja A, A1, . . . , An as variáveis aleatórias que <strong>de</strong>notam o número total <strong>de</strong><br />

atualizações, e o número <strong>de</strong> atualizações <strong>de</strong>vido a posição i, respectivamente.<br />

Com a distribuição uniforme temos E[Ai] = 1/6 e pela linearida<strong>de</strong><br />

<br />

<br />

<br />

E[A] = E<br />

= n/6.<br />

1≤i≤n<br />

Com o mesmo argumento a segunda distribuição leva a E[Ai] = 1/10 é E[A] =<br />

n/10 finalmente.<br />

Solução do exercício 2.7.<br />

Cada chave em nível i ∈ [1, k] precisa i comparações e a árvore tem <br />

1≤i≤k 2i−1 =<br />

2 k − 1 nós e folhas em total. Para o número <strong>de</strong> comparações C temos<br />

E[C] = <br />

1≤i≤k<br />

P [C = i]i = <br />

1≤i≤k<br />

Solução do exercício 4.1.<br />

O seguinte algoritmo resolva o problema:<br />

Algoritmo B.1 (Subsequência)<br />

Entrada Sequência S ′ = s ′ 1 . . . s ′ m e S = s1 . . . sn.<br />

Ai<br />

2i−1 <br />

i = 2−k 2<br />

2k−1 1≤i≤k<br />

i i = 2(k − 1) + 2 1−k .<br />

Saída true, se S ′ ⊆ S (S ′ é uma subsequência <strong>de</strong> S)<br />

1 i f m > n then<br />

2 return f a l s e<br />

3 end i f<br />

4 i := 1<br />

5 for j := 1, . . . , n do<br />

6 i f s ′ i = sj then<br />

7 i := i + 1<br />

8 i f i > m then<br />

315

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

Saved successfully!

Ooh no, something went wrong!