Questão para a prova oral 076

Enunciado:
Dado o seguinte algoritmo que calcula o menor número de multiplicações escalares para uma Multiplicação de Cadeias de Matrizes:

LowCost(p, i, j)
 1  if i == j then
 2    return 0
 3  else
 4    low = MAX_VALUE
 5    for k = i to j-1 do
 6      costa = LowCost(p, i, k)
 7      costb = LowCost(p, k+1, j)
 8      cost = costa + costb + (p[i-1]*p[k]*p[j])
 9      if cost < low then
10        low = cost
11    return low
(p = dimensões das matrizes, i = matriz inicial cálculo, j = matriz final cálculo)

Qual das observações abaixo sobre o algoritmo caracteriza um comportamento de problemas superpostos, que permite a otimização do mesmo:

A) O algoritmo combina duas características: é recursivo e possui uma repetição.

B) Todo algoritmo que possui duas chamadas recursivas (como nas linhas 6 e 7) tem problemas superpostos.

C) Sempre que qualquer algoritmo recursivo realiza cálculo com um vetor, há repetição de subproblemas.

D) As chamadas recursivas das linhas 6 e 7 retornam sempre o mesmo resultado para um dado valor de p, i e j, além disto, chamadas recursivas com o mesmo valor para p, i e j acontecem com freqüência, ocasionando repetição do mesmo processo de cálculo.

E) NDA

Autor(a): André Santanchè