多矩阵乘法运算的动态规划法
在这里我就不加上代码解释了,我就讲解一下这个公式
这个公式是改题目的核心所在,将该公式理解透彻就能理解矩阵的多矩阵相乘的动态规划的运算。
题目中已经简单介绍了公式,但是我想对没有接触过矩阵的人说这个公式还有一些不明白中的地方。
我下面就拿出一个例子来,我想大家就会明白。
看到这个矩阵的书写方式,我想大家应该明白了一些公式中的参数代表的意思了。
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取最小值。
然后我简单写一个前四个矩阵的运算结果图。
这个图有点大,超出我的预期,大家将就点看吧
多矩阵乘法运算的动态规划法相关推荐
- 哈佛、MIT学者联手,创下矩阵乘法运算最快纪录
点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来自:机器之心 作为一种基本数学运算,矩阵乘法的运算速度一直是一个重要的研究课题.哈佛 ...
- numpy中的*(矩阵对应位置元素相乘)和np.dot(矩阵执行矩阵乘法运算)
注意矩阵乘法运算中的"*"和"np.dot()"是不一样的. "*"的意思是给定一个大小为(4,3)的矩阵A和一个大小为(4,3)的矩阵B, ...
- 关于pytorch中各种矩阵乘法运算的区别
文章目录 前言 1.torch.mul(X,Y) 2.torch.mm().torch.bmm() 3.torch.matmul().@ 前言 提示:文章只是作为自己学习中的记录.总结,不喜勿喷:同时 ...
- python tensorflow学习笔记(五)矩阵乘法运算
相关公式 [0.36424586843872840.6675075448915823]×[0.134750808390697090.5863696301031353]=[0.44048858] \be ...
- 【MatLab】矩阵for循环与矩阵乘法运算速度对比
在使用matlab进行图像处理的相关操作时,由于图像的维度较大,在对图像中每个元素进行处理时,由于for循环维度较深,我们往往使用矩阵运算来代替for循环进行处理,为了验证for循环与矩阵运算的运算时 ...
- numpy 数组、矩阵乘法运算
为了区分三种乘法运算的规则,具体分析如下: import numpy as np 1. np.multiply()函数 函数作用 数组和矩阵对应位置相乘,输出与相乘数组/矩阵的大小一致 1.1数组场景 ...
- 【Python】数据分析.numpy.矩阵乘法运算
Python.numpy.矩阵乘法运算 声明:本文章转载于矩阵的乘法运算及Python实现 在讲矩阵相乘之前,我们先看一个生活中的例子. 假如猪肉.牛肉.鸡蛋的价格在一周内不发生变化,记录近三周内的价 ...
- 二维数组转置以及矩阵乘法运算问题
问题一:二维数组转置问题: 代码如下: #include <stdio.h> #include <stdlib.h> /* run this program using the ...
- 1 数列分块入门_线性代数入门——利用分块矩阵简化矩阵乘法运算
系列简介:这个系列文章讲解线性代数的基础内容,注重学习方法的培养.线性代数课程的一个重要特点(也是难点)是概念众多,而且各概念间有着千丝万缕的联系,对于初学者不易理解的问题我们会不惜笔墨加以解释.在内 ...
最新文章
- 6000毫安以上智能手机_三星超长续航神机,6000毫安+128GB,上市半年不到跌至1499...
- mongodb不等于某个值_MongoDB的安装以及基本增删改查命令
- json 取值判断_对应后台传json ajax 获取值判断
- 奇安信校招面试题来啦
- JavaWeb一些常用操作
- java实现录屏_java录屏截屏: 用java代码实现的录屏和截图截屏,并在springboot上实现...
- Linux-apache的编译安装1
- ORM框架,sqlsugar学习一
- NLP是百度的核心技术之一
- android手机拍照软件,安卓手机拍照软件哪个好(五款手机拍摄软件深度横评)...
- 苏州大学NLP团队文本生成预训练方向招收研究生/博士生(含直博生)
- selenium: 网页打开最大化
- 浅释丹道筑基功―—―混元桩【转载】
- 【vite+pinia】
- SEI、Envestnet、AssetMark2019年度观察 ——美国TAMP行业代表性公司对比分析
- 如何通过postman生成接口测试脚本
- Zedboard系列教程
- 示波器使用的注意事项
- arthas调试tomcat中java程序
- 【智能合约审计】————16、YiqiniuCrowdsale