PUC-Rio
Departamento de Informática
Prof. Marcus Vinicius S. Poggi de Aragão
Período: 2004.2
Horário: 3as-feiras e 5as-feiras de 13 às 15 horas - Sala 422L
PROJETO E ANÁLISE DE ALGORITMOS (INF 2926)
Lista 5
-
Considere a multiplicação de n matrizes A1, ..., An.
Considere também que denota-se o produto das matrizes Ak.Ak+1..... Aq por Ak..q e que as dimensões das matrizes são dadas por dk × dk+1 para a matriz Ak. Assim, A1..n terá dimensão d1 × dn+1.
Aqui a multiplicação de pares consecutivos de matrizes
Ak.Ak+1 é feita calculando
| ai,jk..k+1 = |
|
ai,pk.ap,jk+1
|
para todo par
(i,j) que é elemento de Ak.Ak+1 e onde ai,jk representa o
elemento (i,j) da matriz Ak.
Observe que a multiplicação de 3 matrizes A1, A2 e A3, pode ser feita
de duas manieras: ((A1.A2). A3) e (A1.(A2.A3)). (De quantas maneiras
pode-se obter o produto de n matrizes ?)
Observe também que para cada maneira de se multiplicar n matrizes pode-se
ter que realizar um número diferente de multiplicações. Quantas são ?
Apresente um algoritmo para determinar a maneira de se multiplicar as n
matrizes que utiliza o menor número de multiplicações.
Analise a complexidade do algoritmo proposto. A complexidade é polinomial ?
Qual a complexidade menor possível que um algoritmo que resolve este
problema pode ter ?
- Um comerciante possui um armazém que utiliza para suprir seus clientes de um único produto. O seu armazém pode guardar até C unidades do produto. Para as próximas T semanas o comerciante TEM que atender às demandas dos seus clientes que somam dt para a semana t, onde t=1,2,...,T. Além disso, ele possui s0(£ C) unidades em estoque antes do início da primeira semana, e já negociou com os fornecedores os preços unitários pt (t=1,2,...,T). Ele deseja planejar o atendimento dos seus clientes de modo a gastar o mínimo possível com a compra do produto.
Ajude ao comerciante a definir a sua estratégia ótima de compra do produto
nas semanas t=1,..., T.
-
Apresente o algoritmo que obtém a estratégia de compra de menor custo e atende às demandas dos seus clientes.
- Analise a complexidade do algoritmo proposto. A complexidade é polinomial ?
Qual a complexidade menor possível que um algoritmo que resolve este
problema pode ter ?
- Execute o seu algoritmo sobre a seguinte instância: C=12, T=5,s0 = 3, d1 = 7, d2 = 4, d3 = 15, d4 = 10, d5 = 7 e
p1 = 3, p2 = 4, p3 = 7, p4 = 6, p5 = 8. Informe quanto o comerciante deve comprar em cada semana e o seu custo total.
- Considere um tabuleiro de xadrez e um rei que está inicialmente na posição (1,1) (as posições do tabuleiro são representadas por (i,j) onde
1 £ i £ 8 e 1 £ j £ 8). Para cada posição do tabuleiro estão associados um prêmio pij e um consumo qij (o prêmio pode ser em USD(!!) e o consumo em litros de gasolina, por exemplo). Os prêmios e os consumos assumem somente valores positivos. O rei tem inicialmente
Q unidades para consumir e pode passar quantas vezes quiser em cada posição do tabuleiro e a cada vez receber o prêmio e, naturalmente, consumir os seus recursos. Ao final (do passeio) o rei tem que estar de volta na posição (1,1).
-
Proponha um algoritmo para determinar o caminho que o rei deve fazer para obter o maior total possível em prêmios.
(Dica: Suponha que você conhece a solução que obtém o maior total em prêmios dado que o rei está em cada uma das posições do tabuleiro e para cada consumo possível.
Escreva agora o teorema do passo indutivo reforçando a hipótese indutiva. A prova por indução matemática (simples) de que você sabe resolver o problema do rei leva ao algoritmo).
- Analise a complexidade do algoritmo proposto. A complexidade é polinomial ?
Qual a complexidade menor possível que um algoritmo que resolve este
problema pode ter ? Qual a complexidade deste problema ?
- Suponha que Q = 7 e que qij = 1 e
pij = 2*i + 3*j para todo (i,j). Determine o caminho em que o rei acumula o maior total possível de prêmios. Repita o cálculo modificando apenas
p22 = 100 e mantendo os demais valores.
- Sejam T = { t1, ..., tn } e P = { p1, ..., pk } duas sequências de caracteres on k £ n.
-
Proponha um algoritmo linear para determinar se P é uma subsequência de T, isto é, se os elementos de P aparecem em T na mesma ordem que em
P, mas não necessariamente consecutivos.
- Suponha que a resposta do item anterior é negativa. Proponha um algoritmo para encontrar a maior subsequência de P que está em T.
- Considere que para cada elemento de T é associado um custo positivo
ci, i=1,...,n. Proponha um algoritmo para encontrar a subsequência de
P que é subsequência de T onde a soma dos custos dos elementos de T é maximizada.
- Analise a complexidade dos algoritmos propostos.
Qual a complexidade menor possível de um algoritmo que resolve estes
problemas ?
This document was translated from LATEX by HEVEA.