python矩阵乘法分治算法_矩阵乘法的Strassen算法详解 --(算法导论分治法求矩阵)...

本文详细介绍了Python中的矩阵乘法,包括暴力解法和Strassen算法。Strassen算法通过分治策略降低了时间复杂度,但因涉及大量动态数组分配,在某些情况下效率不如预期。在矩阵阶数较大时,设定合适的界限可以优化Strassen算法,提高计算效率。
摘要由CSDN通过智能技术生成

1 题目描述

2 思路分析

3 解法

4 小结

1 题目描述

请编程实现矩阵乘法,并考虑当矩阵规模较大时的优化方法。

2 思路分析

根据wikipedia上的介绍:两个矩阵的乘法仅当第一个矩阵B的列数和另一个矩阵A的行数相等时才能定义。如A是m×n矩阵和B是n×p矩阵,它们的乘积AB是一个m×p矩阵,它的一个元素其中 1 ≤ i ≤ m, 1 ≤ j ≤ p。

image.png

值得一提的是,矩阵乘法满足结合律和分配率,但并不满足交换律,如下图所示的这个例子,两个矩阵交换相乘后,结果变了:

image.png

3 解法

解法一、暴力解法

根据矩阵的性质,通过三个for循环,即可完成计算。其实,通过前面的分析,我们已经很明显的看出,两个具有相同维数的矩阵相乘,其复杂度为O(n^3)

//方法1:暴力解

//根据矩阵的性质i*j=i*n+n*j直接计算

public static void directCal(){

int [][]matrix1 = { {1,2},{3,4}};

int [][]matrix2 = { {4,5},{6,7}};

int [][]matrix3 = { {0,0},{0,0}};

int n =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值