📜  n个数字的最小乘法和(1)

📅  最后修改于: 2023-12-03 15:33:15.902000             🧑  作者: Mango

n个数字的最小乘法和

在计算机科学和数学中,求解n个数字的最小乘法和问题是一种经典的问题。该问题是一种组合优化问题,目标是找到n个数字的一个最小的乘法和。其中,n个数字是从一组可选数字中选择出来的。

动态规划算法

求解n个数字的最小乘法和问题的一种常用算法是动态规划算法。该算法的基本思想是,将问题分解成若干个子问题,计算每个子问题的最优解,然后合并子问题的最优解,以得到原问题的最优解。

具体地,我们可以定义一个二维数组m来保存n个数字的最小乘法和。其中,m[i][j]表示从第i个数字到第j个数字的最小乘法和。我们可以使用以下递推方程来计算m[i][j]的值:

m[i][j] = min{m[i][k] + m[k+1][j] + p[i-1] * p[k] * p[j]}

其中,p是一个数组,表示n个数字的每个数字的维度。具体来说,p[i-1] * p[k]表示从第i个数字到第k个数字的矩阵乘法的维度,而p[k] * p[j]则表示从第k+1个数字到第j个数字的矩阵乘法的维度。

通过这种递推方式,我们可以最终求得m[1][n]的值即为n个数字的最小乘法和。

参考文献
  • Introduction to Algorithms, Third Edition by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein.
  • Dynamic programming - Wikipedia