PUC-Rio Departamento de Informática Profs. Marcus Vinicius S. Poggi de Aragão Período: 2005.1 Horário: 3as-feiras e 5as-feiras de 15-17 14 de junho de 2005
ESTRUTURAS DISCRETAS (INF 1631)
3a Lista de Exercícios
Procure ser conciso e preciso nas suas argumentações.
Reforço da Hipótese Indutiva
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 =
dk+1
å
p=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. Mostre que esse algoritmo pode ser obtido por indução matemática e explique qual o reforço da hipótese indutiva que permite provar o passo indutivo que leva ao algoritmo.
Considere o problema de encontrar a sub-árvore de uma árvore enraizada no vértice r cujo peso é máximo. A sub-árvore também deverá ser enraizada em r. O problema é definido da seguinte forma: dada uma árvore (é um grafo não-orientado, é
claro) T=(V,E), um 'vertice raiz r Î V e pesos wv associados aos vértices de V, determinar uma árvore T*=(V*, E*), contida em T onde r Î V* e a soma åv Î V*wv é máxima.
A árvore vazia vale zero(0) e, naturalmente, os valores dos pesos podem ser positivos ou negativos. Responda:
Use reforço de hipótese para propor um algoritmo que obtenha uma sub-árvore de peso máximo
(nesse caso, o reforço é supor que conhece-se a sub-árvore de peso máximo com raiz em cada um dos vértices filhos, e
indução prova que se é verdade para os filhos então é verdade para os pais).
Execute o seu algoritmo sobre a seguinte instância: r=1, V={1,..., 12},
E={ (1,2), (1,3), (2,4), (2,5), (2,6), (3,7), (3,8), (5,9), (5,10), (8,11), (8,12)},
w1 = -2, w2 = -1, w3 = -1, w4 = 4, w5 = -6, w6 = -1, w7 = -1, w8 = 1, w9 = 2,
w10 = 3, w11 = -2 e w12 = 3.
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.
Explique que reforço da hipótese indutiva deve ser utilizado para se obter um algoritmo eficiente para este cálculo.
Mostre como fica a prova do passo indutivo e sua relação com o algoritmo proposto.
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.
Seja uma sequência de n inteiros distintos T = { t1, ..., tn }.
Utilize indução matemática (com reforço de hipótese) para propor um algoritmo que obenha a maior subsequência crescente (não necessariamente consecutiva).
Mostre como os algoritmos obtidos acima funcionam na sequência: