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 9 return true 10 end i f 11 end i f 12 end for 13 return f a l s e e tem complexidade O(n). A corretude resulta de observação que para cada subsequência possível temos outra subsequência que escolhe o elemento mais esquerda em S. Portanto, podemos sempre escolher gulosamente o primeiro elemento da sequência maior. Solução do exercício 4.2. O seguinte algoritmo resolve o problema: Algoritmo B.2 (Bases) Entrada Uma sequência de posições xi de n cidades, 1 ≤ i ≤ n. Saída Uma sequência mínima de posições bi de bases. 1 Sejam S = x ′ 1 . . . x ′ n as p o s i ç õ e s em ordem c r e s c e n t e 2 B = ɛ 3 while S ɛ do 4 Seja S = x ′ S ′ 5 B := B, (x ′ + 4) { aumenta a sequência B } 6 Remove todos os elementos x ≤ x ′ + 8 de S 7 end while O algoritmo tem complexidade O(n) porque o laço tem ao máximo n iterações. Prova de corretude: Seja bi as posições do algoritmo guloso acima, e b ′ i as posições de alguma outra solução. Afirmação: bi ≥ b ′ i . Portanto, a solução gulosa não contém mais bases que alguma outra solução. Prova da afirmação com indução: A base b1 ≥ b ′ 1 é correto porque toda solução tem que alimentar a primeira casa e o algoritmo guloso escolhe a última posição possível. Passo: Seja bi ≥ b ′ i e sejam h, h′ as posições da próximas casas sem base. O algoritmo guloso escolha h + 4, mas como bi ≥ b ′ i e h ≥ h′ temos b ′ i+1 ≤ h′ + 4 porque h ′ precisa uma base. Logo, xi+1 = h + 4 ≥ h ′ + 4 ≥ b ′ i+1 . 316

Solução do exercício 6.1. 1. T (n) = 9T (n/3) + n T (n) = 2. T (n) = 2T (n/2) + n log n T (n) = 0≤i

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

1. T (n) = 9T (n/3) + n<br />

T (n) =<br />

2. T (n) = 2T (n/2) + n log n<br />

T (n) = <br />

<br />

0≤i

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

Saved successfully!

Ooh no, something went wrong!