博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
311. Sparse Matrix Multiplication(有锁)【分治|循环】
阅读量:5269 次
发布时间:2019-06-14

本文共 1370 字,大约阅读时间需要 4 分钟。

2017/3/26 16:09:31

问题:求解稀疏矩阵乘法

 
版本1:朴素算法  θ(n
3)     采用常规矩阵乘法公式   
public static int[][] SparseMatrixMultiplication( int[][] A , int[][] B ){	int M = A.length;	int N = B[0].length;//取列长	int K = A[0].length;	int[][] C = new int[M][N];	for ( int i=0; i

  

版本2:分治法 θ(n
3)    利用分块矩阵乘法性质
public static void main(String[] args) {		int[][] A = { {1,2,3},{4,5,6}};		int[][] B = { {1,2},{3,4},{5,6}};		int[][] C = SparseMatrixMultiplication(A, B);		for ( int i=0;i

  

版本3: 既然是稀疏矩阵,大部分元素是0,所以可以剪掉多余的乘法运算。A的某一行全为0或者B的某一列全为0都可以省略计算。
Python
class Solution(object):    def multiply(self, A, B):        if len(A)==0 or len(B)==0: return 0        m, n = len(A), len(B[0])        res = [ [0]*n for i in range(m) ]         zerom, zeron = [True]*m, [True]*n        for i in range(m):            for index in range(len(A[0])):                if A[i][index]!=0:                    zerom[i] = False                    break        for i in range(n):            for index in range(len(B)):                if B[index][i]!=0:                    zeron[i] = False                    break        for i in range(m):            if zerom[i]==True: continue            for j in range(n):                if zeron[j]==True: continue                for mul_ind in range(len(A[0])):                    res[i][j] += A[i][mul_ind] * B[mul_ind][j]        return res

  

 

转载于:https://www.cnblogs.com/flyfatty/p/6646089.html

你可能感兴趣的文章
docker overlay网络实现
查看>>
2019-8-5 考试总结
查看>>
jquery javascript 回到顶部功能
查看>>
JS中实现字符串和数组的相互转化
查看>>
用格式工厂将mts文件转换成其它格式flv,mpg失败
查看>>
web service和ejb的区别
查看>>
libhdfs配置使用
查看>>
Silverlight StoryboardManager 故事板管理类
查看>>
Windows Azure Cloud Service (29) 在Windows Azure发送邮件(下)
查看>>
CS61A Efficiency 笔记
查看>>
ArcGIS Server Javascript 多图对比功能
查看>>
第六次实训作业异常处理
查看>>
c#实现把异常写入日志示例(异常日志)
查看>>
函数的进阶
查看>>
一个简单的网页服务器
查看>>
对百度杀毒软件的评价
查看>>
高级程序设计第六章(2)--创建对象
查看>>
微信上传素材返回 '{"errcode":41005,"errmsg":"media data missing"}',php5.6返回
查看>>
2017年11月Dyn365/CRM用户社区活动报名
查看>>
mysql 数据库磁盘占用量统计
查看>>