多矩阵乘法运算的动态规划法

在这里插入图片描述
在这里插入图片描述

在这里我就不加上代码解释了,我就讲解一下这个公式
在这里插入图片描述
这个公式是改题目的核心所在,将该公式理解透彻就能理解矩阵的多矩阵相乘的动态规划的运算。
题目中已经简单介绍了公式,但是我想对没有接触过矩阵的人说这个公式还有一些不明白中的地方。
我下面就拿出一个例子来,我想大家就会明白。在这里插入图片描述
看到这个矩阵的书写方式,我想大家应该明白了一些公式中的参数代表的意思了。
Pi-1代表的是第i个矩阵的行数,为什么是i-1大家可以看上表p值行,稍加推理就能得出结果。

公式分解

该公式分为两大部分,第一部分i=j没什么好说的,也就是只有一个矩阵的时候为零,因为只有一个矩阵乘法运算就没有意义了。

第二部分

这才是这个是该算法的重点。
我们先明白i,j,k代表的意义,分别代表第i个矩阵,第j个矩阵,第k个矩阵。同时第k个矩阵是介于i与j之间,将整个矩阵数列分为两部分。第一部分从i到k,第二部分从k+1到j。
然后我们看这个公式的第一部分
m【i,k】这一部分求得是前面在这部分重新递归回该公式。
m【k+1,j】这一部分是将后面这部分重新递归回该公式。
在这里插入图片描述
上面是第三部分,这是前面两部分之间进行矩阵乘法运算的结果。这个为什么是结果,请大家细细品味,或者带入上面的例子,自己尝试。我相信以你的才华能够理解。
我在这里讲解一下,这个第三部分并不是最终结果,只是两部分矩阵的乘法结果。这个结果不是最终结果。因为要想得整个过程的乘法运算次数,不止这两部分的乘法运算次数。还有要得到这两部分的最终矩阵,这两部分的内部矩阵也是需要进行乘法运算的。所以请大家明白。
最优是从第二部分的整体上理解。
在这里插入图片描述
得出所有结果中的最小值。

例子讲解

我们将上面的例子进行k值不同的两次讲解。希望能帮助到你。
忽然发现以我之力难以一步一步讲解完毕。所以我们以三个矩阵为例进行讲解,就使用上面的那前三个矩阵讲解。
三个矩阵时k的取值只有1和2.

当k=1时

k将上例中的局阵列分为两部分,第一部分第一矩阵到第一矩阵,第二部分第二矩阵到第三矩阵。
首先计算两部分最终矩阵的计算量。也就是30355不明白的请看一下公式
然后将两部分递归回公式。
第一部分递归因为i=j所以结果为零
第二部分递归
k值只有一个就是2.
递归结果是第一部分为第二矩阵到第二矩阵,第三矩阵到第三矩阵。两部分的运算结果为30155
然后将两部分递归回公式。因为这两部分都是i=j。所以结果都为0.
返回最终结果: 30155+30355

当k=2时

k将上例中的局阵列分为两部分,第一部分第一矩阵到第二矩阵,第二部分第三矩阵到第三矩阵。
首先计算两部分最终矩阵的计算量。也就是30155不明白的请看一下公式
然后将两部分递归回公式。
第一部分递归
k值只有一个就是1.
递归结果是第一部分为第一矩阵到第一矩阵,第二矩阵到第二矩阵。两部分的运算结果为303515
然后将两部分递归回公式。因为这两部分都是i=j。所以结果都为0.

第二部分递归为零

返回k=2时最终结果: 303515+30155

最终结果

比较所有结果,取所有结果中中的最小值。
也就是比较30155+30355 和303515+30155取最小值。

然后我简单写一个前四个矩阵的运算结果图。
这个图有点大,超出我的预期,大家将就点看吧
在这里插入图片描述

发布了64 篇原创文章 · 获赞 15 · 访问量 7259

猜你喜欢

转载自blog.csdn.net/weixin_42263618/article/details/102485075