不同维度的矩阵相乘的维度结果(高维数组相乘的运算规则)、时间复杂度计算

本文详细介绍了高维数组相乘的规则,包括同维度矩阵乘法如何改变维度以及不同矩阵乘法的时间复杂度计算,通过实例和图示说明。重点讲解了矩阵乘法的步骤和常见操作的复杂度,适合理解和优化多维数组运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、高维数组相乘的运算规则

相乘必须满足以下两个条件:

  1. 两个n维数组的前n-2维必须完全相同。例如(3,2,4,2)(3,2,2,3)前两维必须完全一致;
  2. 最后两维必须满足二阶矩阵乘法要求。例如(3,2,4,2)(3,2,2,3)的后两维可视为(4,2)x(2,3)满足矩阵乘法。

这样的同维矩阵相乘,所得到的维度是:前n-2维不变,后2维进行矩阵乘法。

例如,(3,2,4,2)*(1,2,2,3)——>>(3,2,4,3)

高维数组相乘的运算规则_两个维度相同的方阵相乘的维度-CSDN博客

 二、时间复杂度计算

 一张图就明白了: 

关于转置矩阵

二个矩阵乘法

对于矩阵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矩阵中的n
        for(j=0;j<m;j++){  //A矩阵中的m 或者B矩阵中的m ,一样的
            for(k=0;k<n;k++){ //B矩阵中的n
                C[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), 其实这样理解是错的,下面介绍)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pengsen Ma

太谢谢了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值