Escolar Documentos
Profissional Documentos
Cultura Documentos
Lista de Exercícios II
Para isso teremos que subtrair o custo c do corte do lucro ri de cada corte, assim teremos:
rn = max {pn, r1 + rn – 1 – c, r2 + rn – 2 – c, . . . , rn − 1 + r1 – c}
E assim iremos reescrever o algoritmo MEMOIZED-CUT-ROD da seguinte maneira:
CUT-ROD(p, n, r)
1 seja r[0...n] um novo arranjo
2 for i = 0 to n
3 r[i] = - ∞
4 if r[n] ≥ 0
5 return r[n]
6 if n == 0
7 q=0
8 else q = - ∞
9 for i = 1 to n - 1
10 q = max(q - c, p[i] + CUT-ROD(p, n - i, r))
11 r[n] = q
12 return q
Alteramos o for na linha 9 para i de 1 até n - 1 em vez de n. Além disso, no o loop for, na linha 10,
definimos q = max{q - c, p[i]}.
3. Seja R(i, j) o número de vezes que uma entrada na tabela m[i, j] é referenciada
enquanto realiza-se a computação de outras entradas da tabela m na chamada do
procedimento MATRIX-CHAIN-ORDER. Mostre que o n´úmero total de referências para a
tabela m completa é
E os referidos somatórios que são encontrados no Apêndice do livro, que foram utilizados para os
cálculos:
Contamos o número de vezes que referenciamos uma entrada diferente em m, que estamos
computando, ou seja, 2 vezes o número de vezes que a linha 10 corre.
Para i temos i = n-l+1
Para j temos j=i+l-1 -> j-i=l-1
∑∑ R(i,j) = ∑ 2(𝑛 − 𝑙 + 1)(𝑙 − 1)
= 2∑ (𝑛 − 𝑙 + 1)(𝑙 − 1) =
= 2∑ (𝑛 − 1 − 𝑙 − 1) (𝑙 + 1 − 1) = 2∑ (𝑛 − 𝑙)𝑙 =
= 2∑(𝑛𝑙 − 𝑙 2 ) = 2∑ 𝑛𝑙 - 2∑ 𝑙 2
2𝑛(𝑛−1)𝑛 2(𝑛−1)𝑛(2𝑛−1)
= −
2 6
2𝑛3 −3𝑛2 +𝑛
= 𝑛3 − 𝑛2 − 3
𝑛3 −𝑛
= 3𝑛3 − 3𝑛2 − 2𝑛3 − 3𝑛2 + 𝑛 = 3
Dado um vetor A[i..n], o MergeSort irá realizar a ordenação dos elementos de i a n da matriz
original. A árvore de recursão terá [1..n] como sua raiz, e em qualquer nó i terá [i .. (j - i) / 2] e [(j -
i) / 2 + 1..j] como seus filhos esquerdo e direito, respectivamente. Se j - i = 1, não haverá filhos. A
abordagem de memória não consegue acelerar o Merge Sort porque os subproblemas não se
sobrepõem. Classificar uma lista de tamanho não é o mesmo que ordenar outra lista de tamanho n,
portanto, não há economia no armazenamento de soluções para subproblemas, pois cada solução é
usada no máximo uma vez.
5 4 7 1 2 9 15 3 6 8 11 16 12 13 10 14
5 4 7 1 2 9 15 3 6 8 11 16 12 13 10 14
5 4 7 1 2 9 15 3 6 8 11 16 12 13 10 14
5 4 7 1 2 9 15 3 6 8 11 16 12 13 10 14
11
5 4 7 1 2 9 15 3 6 8 16 12 13 10 14
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
5. Considere uma variação do problema da Multiplicação da Sequência de Matrizes,
no qual é desejado definir a ordem de multiplicação entre as matrizes tal que o número de
multiplicações escalares seja maximizado, ao invés de minimizado. Este problema exibe uma
substrutura ótima? Comente sua resposta.