Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Construção e Análise de Algoritmos - Lista de exercícios 2, Exercícios de Análise de Sistemas de Engenharia

Universidade Federal do Ceará Centro de Ciências Departamento de Computação Mestrado e Doutorado em Ciência da Computação

Tipologia: Exercícios

2010

Compartilhado em 14/02/2010

ednaldo-miranda-6
ednaldo-miranda-6 🇧🇷

4

(1)

38 documentos

1 / 1

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Universidade Federal do Cear´a
Centro de Ciˆencias
Departamento de Computa¸ao
Mestrado e Doutorado em Ciˆencia da Computa¸ao
Constru¸ao e An´alise de Algoritmos
Lista de exerc´ıcios 2
Programa¸ao Dinˆamica
1. Seja P:NNuma fun¸ao definida da seguinte forma: P(0) = 0 e, para n1,
P(n) = Pn
21+Pn
2+Pn
2+ 1+n.
Escreva um algoritmo recursivo puro que recebe um umero ncomo entrada e retorna o valor exato de
P(n). Calcule a complexidade do seu algoritmo. Escreva agora um algoritmo de programa¸ao dinˆamica para
o mesmo problema e calcule a complexidade. Escreva tamb´em um algoritmo de memoiza¸ao.
2. Uma subsequˆencia cont´ıgua de uma sequˆencia S´e uma subsequˆencia de elementos consecutivos de S.
Por exemplo, se S= (5 15 30 10 5 40 10), ent˜ao (15 30 10) ´e uma subsequˆencia cont´ıgua de S, mas
(5 15 40) ao ´e. Escreva um algoritmo linear para a seguinte tarefa: receba como entrada uma sequˆencia
de umeros (a1, a2, . . . , an) e devolva a subsequˆencia cont´ıgua cuja soma ´e axima (uma subsequˆencia de
tamanho zero tem soma zero). No exemplo anterior, a resposta seria a subsequˆencia (10 5 40 10) cuja
soma ´e 55. (Dica: Para cada j {1,2, . . . , n}, considere subsequˆencias cont´ıguas terminando exatamente na
posi¸ao j).
3. Vocˆe vai iniciar uma viagem bastante longa. Vocˆe inicia a viagem no Km 0 (zero). No seu percurso,
existem nhot´eis com quilometragens iguais a a1< a2< . . . < an, onde cada ai´e medido a partir do ponto
de Km 0. Os ´unicos lugares que vocˆe pode parar ao esses hot´eis, mas vocˆe ao precisa parar em todos.
Sua viagem termina no hot´el do Km anque ´e o seu destino. Vocˆe idealmente gostaria de viajar 200 Km por
dia, mas nem sempre isso ´e poss´ıvel (depende do espa¸co entre os hot´eis). Se vocˆe via ja XKm em um dia,
sua esposa o penaliza com (200 X)2pontos. Vocˆe deseja planejar sua viagem de forma a minimizar seus
pontos penalizados e salvar seu casamento. Ou seja, minimizar a soma das penalidades di´arias de todos os
dias viajados. Escreva um algoritmo que determina a sequˆencia ´otima de hot´eis em que vocˆe deve parar.
4. Vocˆe recebe uma palavra com ncaracteres S[1 . . . n], que vocˆe pensa ser um texto corrompido no qual ao
a pontua¸ao (por exemplo, euadoroprograma¸aodinˆamica”). Vocˆe deseja reconstruir o seu texto usando
um dicion´ario que disponibiliza uma fun¸ao booleana dict(w) que retorna verdadeiro, se w´e uma palavra do
dicion´ario, e falso, caso contr´ario. Escreva uma algoritmo de programa¸ao dinˆamica que determina se seu
texto pode ser reconstru´ıdo como uma sequˆencia de palavras alidas. A complexidade deve ser no aximo
O(n2), assumindo que a fun¸ao dict leva tempo constante. Caso seu texto seja alido, fa¸ca seu algoritmo
escrever a sequˆencia correta de palavras.
5. Uma subsequˆencia ´e pal´ındroma se ela ´e igual lendo da direita para esquerda ou lendo da esquerda
para direita. Por exemplo, a sequˆencia (AC GT GT C AAAAT CG) possui muitas subsequˆencias pal´ındromas,
como (ACGC A) e (AGT GA). Mas a subsequˆencia (AC T ) ao ´e pal´ındroma. Escreva um algoritmo O(n2)
que recebe uma sequˆencia S[1 . . . n] e retorna a subsequˆencia pal´ındroma de tamanho aximo.
6. Escreva um algoritmo O(nT) que recebe um inteiro positivo Te uma lista com ninteiros positivos
(a1, a2, . . . , an) e decide se existe algum subconjunto cuja soma ´e igual a T. (Dica: Observe subconjuntos
(a1, a2, . . . , ak) e verifique se a soma ´e sonde 1 kne 1 sT).

Pré-visualização parcial do texto

Baixe Construção e Análise de Algoritmos - Lista de exercícios 2 e outras Exercícios em PDF para Análise de Sistemas de Engenharia, somente na Docsity!

Universidade Federal do Cear´a Centro de Ciˆencias Departamento de Computa¸c˜ao Mestrado e Doutorado em Ciˆencia da Computa¸c˜ao

Constru¸c˜ao e An´alise de Algoritmos

Lista de exerc´ıcios 2 Programa¸c˜ao Dinˆamica

  1. Seja P : N → N uma fun¸c˜ao definida da seguinte forma: P (0) = 0 e, para n ≥ 1,

P (n) = P

(⌊ (^) n 2

+ P

(⌊ (^) n 2

+ P

(⌊ (^) n 2

  • n.

Escreva um algoritmo recursivo puro que recebe um n´umero n como entrada e retorna o valor exato de P (n). Calcule a complexidade do seu algoritmo. Escreva agora um algoritmo de programa¸c˜ao dinˆamica para o mesmo problema e calcule a complexidade. Escreva tamb´em um algoritmo de memoiza¸c˜ao.

  1. Uma subsequˆencia cont´ıgua de uma sequˆencia S ´e uma subsequˆencia de elementos consecutivos de S. Por exemplo, se S = (5 15 − 30 10 − 5 40 10), ent˜ao (15 − 30 10) ´e uma subsequˆencia cont´ıgua de S, mas (5 15 40) n˜ao ´e. Escreva um algoritmo linear para a seguinte tarefa: receba como entrada uma sequˆencia de n´umeros (a 1 , a 2 ,... , an) e devolva a subsequˆencia cont´ıgua cuja soma ´e m´axima (uma subsequˆencia de tamanho zero tem soma zero). No exemplo anterior, a resposta seria a subsequˆencia (10 − 5 40 10) cuja soma ´e 55. (Dica: Para cada j ∈ { 1 , 2 ,... , n}, considere subsequˆencias cont´ıguas terminando exatamente na posi¸c˜ao j).
  2. Vocˆe vai iniciar uma viagem bastante longa. Vocˆe inicia a viagem no Km 0 (zero). No seu percurso, existem n hot´eis com quilometragens iguais a a 1 < a 2 <... < an, onde cada ai ´e medido a partir do ponto de Km 0. Os ´unicos lugares que vocˆe pode parar s˜ao esses hot´eis, mas vocˆe n˜ao precisa parar em todos. Sua viagem termina no hot´el do Km an que ´e o seu destino. Vocˆe idealmente gostaria de viajar 200 Km por dia, mas nem sempre isso ´e poss´ıvel (depende do espa¸co entre os hot´eis). Se vocˆe viaja X Km em um dia, sua esposa o penaliza com (200 − X)^2 pontos. Vocˆe deseja planejar sua viagem de forma a minimizar seus pontos penalizados e salvar seu casamento. Ou seja, minimizar a soma das penalidades di´arias de todos os dias viajados. Escreva um algoritmo que determina a sequˆencia ´otima de hot´eis em que vocˆe deve parar.
  3. Vocˆe recebe uma palavra com n caracteres S[1... n], que vocˆe pensa ser um texto corrompido no qual n˜ao h´a pontua¸c˜ao (por exemplo, ”euadoroprograma¸c˜aodinˆamica”). Vocˆe deseja reconstruir o seu texto usando um dicion´ario que disponibiliza uma fun¸c˜ao booleana dict(w) que retorna verdadeiro, se w ´e uma palavra do dicion´ario, e falso, caso contr´ario. Escreva uma algoritmo de programa¸c˜ao dinˆamica que determina se seu texto pode ser reconstru´ıdo como uma sequˆencia de palavras v´alidas. A complexidade deve ser no m´aximo O(n^2 ), assumindo que a fun¸c˜ao dict leva tempo constante. Caso seu texto seja v´alido, fa¸ca seu algoritmo escrever a sequˆencia correta de palavras.
  4. Uma subsequˆencia ´e pal´ındroma se ela ´e igual lendo da direita para esquerda ou lendo da esquerda para direita. Por exemplo, a sequˆencia (ACGT GT CAAAAT CG) possui muitas subsequˆencias pal´ındromas, como (ACGCA) e (AGT GA). Mas a subsequˆencia (ACT ) n˜ao ´e pal´ındroma. Escreva um algoritmo O(n^2 ) que recebe uma sequˆencia S[1... n] e retorna a subsequˆencia pal´ındroma de tamanho m´aximo.
  5. Escreva um algoritmo O(nT ) que recebe um inteiro positivo T e uma lista com n inteiros positivos (a 1 , a 2 ,... , an) e decide se existe algum subconjunto cuja soma ´e igual a T. (Dica: Observe subconjuntos (a 1 , a 2 ,... , ak) e verifique se a soma ´e s onde 1 ≤ k ≤ n e 1 ≤ s ≤ T ).