O algoritmo de multiplicação de cadeia de matrizes usando programação dinâmica irá parar quando todas as combinações possíveis de multiplicação entre as matrizes tiverem sido calculadas, o que ocorre quando o índice i for igual ao índice j em cada chamada recursiva, indicando que não há mais matrizes para serem multiplicadas.
O algoritmo de multiplicação de cadeia de matrizes usando programação dinâmica irá parar quando todas as combinações possíveis de multiplicação entre as matrizes tiverem sido calculadas, o que ocorre quando o índice i for igual ao índice j em cada chamada recursiva, indicando que não há mais matrizes para serem multiplicadas.
O algoritmo de multiplicação de cadeia de matrizes usando programação dinâmica irá parar quando todas as combinações possíveis de multiplicação entre as matrizes tiverem sido calculadas, o que ocorre quando o índice i for igual ao índice j em cada chamada recursiva, indicando que não há mais matrizes para serem multiplicadas.
Em q momento a interação recursiva (top down) de um
algoritmo de multiplicação de cadeia de matrizes vai
parar? Ele tem essa recorrência m[i,j] = número mínimo de multiplicações escalares pra calcular de Ai até Aj se i=j então m[i,j] = 0 se i < j então m[i,j] = min[i<=k<j] { m[i,k] + m[k+1,j] + p[i-1]p[k]p[j] }
Sendo p um vetor de entrada desse algoritmo com as
dimensões
A interação recursiva (top-down) de um algoritmo de
multiplicação de cadeia de matrizes usando a recorrência que você mencionou vai parar quando todas as combinações possíveis de multiplicação de matrizes tenham sido calculadas. Isso acontece quando i é igual a j em cada chamada recursiva. Quando i = j, m[i, j] é definido como 0, o que indica que não há necessidade de multiplicar uma única matriz, pois já está em sua forma final.
Basicamente, a recursão começa com i e j sendo índices
de matrizes diferentes, e a função se chama recursivamente para todas as combinações de k (onde i <= k < j) para encontrar a combinação com o número mínimo de multiplicações escalares. Isso é feito até que todas as matrizes tenham sido combinadas, ou seja, i seja igual a j para todas as chamadas recursivas, indicando que todas as multiplicações necessárias foram calculadas.
O algoritmo então pára quando todas as combinações de
matrizes tenham sido consideradas e o número mínimo de multiplicações tenha sido calculado para todas elas. O resultado final será armazenado em m[1, n], onde n é o número total de matrizes na cadeia.
Essa abordagem realmente usa matriz?
A abordagem que mencionou usa uma tabela ou matriz para armazenar os resultados intermediários das chamadas recursivas. Embora essa matriz não seja diretamente relacionada às matrizes de multiplicação, é uma abordagem de programação dinâmica que utiliza uma matriz (ou tabela) chamada "m" para armazenar os resultados dos subproblemas para evitar cálculos repetidos. A matriz "m" é usada para armazenar o número mínimo de multiplicações escalares necessárias para calcular as matrizes de uma cadeia.
Portanto, enquanto a abordagem não opera diretamente
com as matrizes de multiplicação, ela usa uma matriz para armazenar informações intermediárias e calcular o número mínimo de multiplicações necessárias de forma eficiente por meio da recursão e da programação dinâmica. É uma técnica comum para otimizar o cálculo de problemas como o de multiplicação de cadeia de matrizes.