Buscar

programação dinâmica

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

6. Programac¸a˜o Dinaˆmica
1. O comando diff aplicado a dois arquivos fornece as modificac¸o˜es que foram feitas num arquivo
em relac¸a˜o ao outro. Isto e´, as diferenc¸as entre eles. Explique como o comando diff pode ser
obtido em func¸a˜o do problema subsequeˆncia comum mais longa.
2. O problema da mochila 0-1 tem como dados: um conjunto de n itens onde o item i custa ri Reais
e pesa wi gramas, onde ri e wi sa˜o inteiros. Desejamos escolher um conjunto E ⊆ {1, 2, . . . , n} dos
itens tais que
∑
i∈E ri seja ma´ximo mas sujeito a
∑
i∈E wi ≤M , onde M e´ um nu´mero natural,
chamado capacidade da mochila. Para resolver este problema por PD considere a func¸a˜o:
Para resolver o problema da mochila 0-1 por PD considere a func¸a˜o:
A(j, Y ) e´ o valor ma´ximo (em Reais) que pode ser carregado em uma mochila de capacidade Y
so´ utilizando os itens de 1 a j.
Queremos determinar A(n,M).
Observe que A(0, Y ) = 0 e A(j, 0) = 0.
(a) Verifique se a relac¸a˜o de recorreˆncia para A(j, Y ) esta´ correta.
A(j, Y ) = A(j − 1, Y ) se wj > Y
A(j, Y ) = max{A(j − 1, Y ), rj + A(j − 1, Y − wj)} se wj ≤ Y.
(b) Descreva um algoritmo que calcula A indutivamente usando uma tabela.
(c) Qual a complexidade do algoritmo?
3. Dado um conjunto de valores de moedas C = {c1, . . . , cn} e um valor v, queremos saber se e´
poss´ıvel formar o valor v utilizando somente moedas de C e, caso positivo, a menor quantidade
de moedas utilizadas. Assuma que existe uma quantidade suficiente de cada valor de moeda
para formar o valor desejado, se for poss´ıvel.
(a) Deˆ uma soluc¸a˜o em PD.
(b) Relacione o problema das moedas com o problema da mochila.
4. O problema da Maior Subsequeˆncia Crescente consiste em: dado uma sequeˆncia de nu´meros
inteiros distintos X = x1, x2, . . . , xn, queremos determinar o maior m tal que Y = y1, . . . , ym
seja uma subsequeˆncia de X com y1 < y2 < . . . < ym.
Por exemplo, se X = 1, 2, 9, 3, 8, 4, 7, 6, temos que Z = 1, 3, 7 e´ uma subsequeˆncia crescente de
X e 1, 2, 3, 4, 7 tambe´m e´, mas e´ maior que Z.
(a) Deˆ uma formulac¸a˜o de PD para a soluc¸a˜o deste problema. Qual e´ a complexidade de tempo
e de espac¸o do seu algoritmo?
(b) Observe que e´ poss´ıvel resolver Maior Subsequeˆncia Crescente usando o algoritmo para o
problema da Maior Subsequeˆncia Comum. Explique como e por que esta ideia esta´ correta.
5. ( ? ) O problema da Selec¸a˜o de Atividades com Pesos e´ o mesmo de Selec¸a˜o de Ati-
vidades so´ que a cada atividade esta´ tambe´m associado um valor vi, e deseja-se o conjunto de
atividades compat´ıveis de valor ma´ximo. Deˆ uma soluc¸a˜o em PD para este problema.

Continue navegando