一、矩阵连乘算法基本思想
矩阵连乘是基于动态规划的问题。面对ABCDEF...这么多矩阵连乘,让你在其中添加括号使得这些矩阵所做的乘法次数最少。面对这么大的一个问题,我们肯定无从下手。那么如果给你两个矩阵,你是不是又会骂,傻X都会呢?是的,既然解决不了这么大的问题,我们可以从两个矩阵开始,也就是原问题的最小子问题。两个矩阵相差,不能讨论所谓的最小乘法次数,因为情况只有一种,但是它记录了两个矩阵直接的乘法次数。接下来我们面对的是三个矩阵相乘ABC,三个矩阵相乘最后的步骤肯定是2个矩阵相乘的结果和剩下的那个矩阵相乘。那么要想得到三个矩阵连乘最小值则必须是min((AB)*C的乘法次数,A*(BC)的乘法次数),三个矩阵也很容易,那么四个呢?ABCD,如果要想得到四个矩阵相乘必须是min(ABC这三个矩阵相乘的乘法次数的最小值*D , A* (BCD)这矩阵乘法次数的最小值 ),而ABC,BCD相乘乘法次数的最小值都是可以由上一步得到的,这些小规模问题的解可以用数组记录,以后用到就可以直接取得答案了。这样我们对于一个庞大的问题就可以轻而易举的用程序解决了。
二、矩阵连乘的数据结构
m[i][j]二维数组:表示从第i个矩阵连乘到第j个矩阵的最小乘法次数;