不同维度的矩阵相乘的时间复杂度
一张图就明白了
关于转置矩阵
二个矩阵乘法
对于矩阵A(n*m),B(m*n), 这里A(n*m)表示A是n行乘m列的矩阵。
如果A*B,那么复杂度为O(n*m*n),即O(n^2m) 。进一步思考,为什么呢,直接代码解释:
for(i=0;i<n;i++){ //A矩阵中的nfor(j=0;j<m;j++){ //A矩阵中的m 或者B矩阵中的m ,一样的for(k=0;k<n;k++){ //B矩阵中的nC[i][j]= C[i][j]+A[i][k]*B[k][j]; } } }
一个for循环是O(n),这里是三个for循环,所以为O(n*m*n)。(ps:个人感觉还是看代码比较好理解,后面三个矩阵乘法时,就会更加体会到)
三个矩阵乘法
对于矩阵A(m*n),B(n*m)和C(m*n), 这里A(m*n)表示A是m行乘n列的矩阵。
- A*B,那么复杂度为O(m*n*m),即O(m^2n) 。
- D(m*m)=A*B运算完后在和C运算。
- D*C,那么复杂度为O(m*m*n),即O(m^2n) 。
与(A*B)*C等价。整个过程算法复杂度为O(m^2n) 。(一开始笔者以为是O(m^2n)*O(m^2n) = O(m^4n^2), 其实这样理解是错的,下面介绍)
不同维度的矩阵相乘的时间复杂度相关推荐
- 矩阵相乘的strassen算法_4-2.矩阵乘法的Strassen算法详解
题目描述 请编程实现矩阵乘法,并考虑当矩阵规模较大时的优化方法. 思路分析 根据wikipedia上的介绍:两个矩阵的乘法仅当第一个矩阵B的列数和另一个矩阵A的行数相等时才能定义.如A是m×n矩阵和B ...
- 矩阵相乘入门,两个矩阵相乘
•矩阵:矩阵可以看成一个n×m的数表,用二维数组表示 •矩阵乘法:定义矩阵A,B.A和B可以乘法操作当且仅当A的大小是a×b,B的大小是b×c,设矩阵C=AB,则C的大小是a×c,且有 最普通的矩阵乘 ...
- torch.mul() 和 torch.mm() 区别【矩阵a和b对应位相乘/矩阵相乘】
torch.mul(a, b)是矩阵a和b对应位相乘,a和b的维度必须相等,比如a的维度是(1, 2),b的维度是(1, 2),返回的仍是(1, 2)的矩阵 torch.mm(a, b)是矩阵a和b矩 ...
- python求1到n的乘积_Python实现矩阵相乘的三种方法小结
问题描述 分别实现矩阵相乘的3种算法,比较三种算法在矩阵大小分别为22∗2222∗22, 23∗2323∗23, 24∗2424∗24, 25∗2525∗25, 26∗2626∗26, 27∗2727 ...
- python与机器学习(二)Numpy / Pandas /矩阵相乘速度对比
NumPy(Numerical Python)是Python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库. NumPy的官方文档:https://nump ...
- 四中矩阵相乘方法对比
在公茂果老师的课件中,给出了三种矩阵相乘的方法: 1. 利用矩阵定义,对矩阵进行运算.即C(i,j)=A(i,k)*B(k,j),时间复杂度为: 每一个元素需时间n C矩阵共有n2个元素 因此,总的时 ...
- 浅谈矩阵加速——以时间复杂度为O(log n)的算法实现裴波那契数列第n项及前n之和使用矩阵加速法的优化求法
首先请连矩阵乘法乘法都还没有了解的同学简单看一下这篇博客: https://blog.csdn.net/weixin_44049566/article/details/88945949 首先直接暴力求 ...
- 13,12_基本运算,add/minus/multiply/divide,矩阵相乘mm,matmul,pow/sqrt/rsqrt,exp/log近似值,统计属性,mean,sum,min,max
1.12.基本运算 1.12.1.add/minus/multiply/divide 1.12.2.矩阵相乘mm,matmul 1.12.3.pow/sqrt/rsqrt 1.12.4.exp/log ...
- 矩阵相乘的理解(矩阵相乘的几何意义)及证明过程
矩阵相乘的理解 1.基底的理解 2.证明过程 3.公式分析 3.1分析 3.2 3.2.1 n3=n2n3=n2n3=n2 时: 3.2.2 n3<n2n3<n2n3<n2 时: 3 ...
最新文章
- 《预训练周刊》第11期:全球最大智能模型“悟道2.0”重磅发布、谷歌KELM:将知识图与语言模型预训练语料库集成...
- (002)RN开发之第一个项目以及真机运行
- Python运维-获取当前操作系统的各种信息
- P2634 [国家集训队]聪聪可可(点分治做法)
- sqoop同步时间戳到mysql_在sqoop导入中使用24小时时间戳
- 前端开发 填充padding 0229
- 简短总结一下C#里跨线程更新UI(转)
- 计算机房空调设计标准,《数据中心制冷与空调设计标准》的要点
- 【H5】 svg的 defs用法 渐变
- 【FFmpeg编程进阶】(13)FLV 解码器初始化函数 ff_h263_decode_init() 代码分析 --- 待更新
- 好看的html视频播放界面,推荐几款超个性的HTML5视频播放器
- 轻松解决电脑小喇叭的红叉叉
- tkinter:Toplevel
- python爬取招聘信息_python 爬取boss直聘招聘信息实现
- 语音特征MFCC和PLP
- 蓝桥杯单片机——第十二届蓝桥杯单片机第一场省赛
- 编写判断一个正整数是否为素数的函数
- 将两个有相连关系的数据表进行归类
- P2P网贷中的4种理财业务模式
- 大数据招标文件_大数据处理与分析平台及软件项目招标公告 - 千里马招标网
热门文章
- JAVA微信开源项目(jeewx)百度BAE 部署文档
- imagej之Python脚本
- Gerchberg–Saxton算法
- 【New Feature】阿里云OSS同城区域冗余存储重磅发布,提供云上同城容灾服务能力!...
- 《研发企业管理——思想、方法、流程和工具》——1.7 企业研发管理的目的
- js中==和===的区别
- 【转】Glut处理鼠标事件
- mysql的InnoDB和MyISAM对比
- 华为ebgp_BGP选路原则之首选值(华为特性)
- 数论 —— 莫比乌斯反演