我们可以推测矩阵乘法最优解的时间复杂度么?

本文探讨了矩阵乘法的时间复杂度优化历程,从Strassen算法到最新的François Le Gall简化算法,时间复杂度从O(n^3)逐步降低至O(n^2.3728639)。作者通过建立数学模型预测最优解可能为2.366维度,并指出算法发展可能遵循指数过程,但也受到黑天鹅事件的影响,未来预测存在不确定性。
摘要由CSDN通过智能技术生成

矩阵乘法的定义为:

 (AB)_{ij} = \sum_{r=1}^n a_{ir}b_{rj} = a_{i1}b_{1j} + a_{i2}b_{2j} + \cdots + a_{in}b_{nj}.


按照定义,一个简单的方阵乘法伪代码如下:

int A[48,48],B[48,48],C[48,48]  
    for i in 1 to 48  
        for j in 1 to 48  
            for k in 1 to 48  
                C[i,j]+=B[i,k]*A[k,j]

三层嵌套,时间复杂度为O(n3),n为方阵的边长。


由于矩阵乘法的广泛运用,如何优化矩阵乘法运算,有重要的意义。在不考虑矩阵的疏密程度下,如何有效减少矩阵乘法中算术乘法的使用次数是一个主要的优化方向。


最早的矩阵乘法优化算法,是由德国数学家Volker Strassen于1969年提出并以其名字命名的Strassen算法。该算法堪称经典,能在大多算法,运算优化的教科书中找到该算法的介绍。这里也有算法的基本介绍。它的主要思路是通过拼凑一些间接的项,并利用这些间接的项的加减法相消掉一部分项得到最终答案的。简单说来,是以加减法代替了乘法。对于一个二阶的方阵,原来需要8(23)次的乘法运算,被缩减到了7(2log7))次。这个算法的重要意义有两方面,首先是它将矩阵乘法的时间复杂度,由O(n3)降为O(nlog7),log7约为2.807355.即原来的立方运算被降维了(O(n2.807355)),然而更为重要的是,这个算法让数学家意识到,这个问题不是单纯的三维问题,而是很有可能更低维度的问题,也就是说,可能有很大的优化空间。


在此之后,不少更好的算法被相继提出。这里列举一些我能够找到对应文献的:1981年Pan的算法(O(n2.494)),1987年的Coppersmith–Winograd算法(

  • 13
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值