首页 > 试题广场 > 有两个N*N的矩阵A和B,想要在PC上按矩阵乘法基本算法编程实现计算A*B。假设N较大,本机内存也很大,可以存下A、B和结果矩阵。那么,为了计算速度,A和B在内存中应该如何存储?
[单选题]
有两个N*N的矩阵A和B,想要在PC上按矩阵乘法基本算法编程实现计算A*B。假设N较大,本机内存也很大,可以存下A、B和结果矩阵。那么,为了计算速度,A和B在内存中应该如何存储(按行存指先存储第一行,再第二行,直到最后一行;按列存指先存储第一列,再第二列,直到最后一列)?
  • A按行存,B按行存。
  • A按行存,B按列存。
  • A按列存,B按行存。
  • A按列存,B按列存。

24个回答

添加回答
我们来看看传统的分块矩阵相乘:

很明显依然是行乘以列的方式。

再来看看Strassen矩阵相乘:
同样是分块,只是计算方式不同

很明显,涉及到行的加法(a+b,c+d,e+f,g+h),列的减法(f-h,g-e,b-d,a-c),对角线的加法(a+d,e+h)以及行列的乘法,所以无论是
  • A按行存,B按行存。
  • A按行存,B按列存。
计算速度都是差不多的。

而如果用的是传统矩阵相乘法,按B选项的方式存储计算速度更快。综上所述,我觉得答案应该选B。
编辑于 2015-08-17 17:35:17 回复(0)
这个题最开始我选的是B,想到的是传统矩阵相乘的方法,时间复杂度为O(n3 ),但是这不是最优的方法,最优方法为Strassen矩阵相乘发,时间复杂度降低为O(n2.81),用分治的思想将矩阵分块计算,在这个算法中按行存储更有利。所以正确答案为A。
编辑于 2015-07-24 09:56:01 回复(6)
楼下的看到题目中“按矩阵乘法基本算法编程实现计算A*B ”了么?
发表于 2015-08-12 17:09:46 回复(0)
有两个N*N的矩阵A和B,想要在PC上按矩阵乘法基本算法编程实现计算A*B。假设N较大,本机内存也很大,可以存下A、B和结果矩阵。那么,为了计算速度,A和B在内存中应该如何存储?_阿里巴巴笔试题_牛客网
发表于 2018-10-12 08:47:27 回复(0)
既然提到了按矩阵乘法基本算法,为何不是B
发表于 2015-11-22 00:43:18 回复(0)
题目说了,按矩阵乘法基本算法编程,为毛不是左行乘右列?
发表于 2015-09-03 23:40:55 回复(0)
详见http://www.ituring.com.cn/article/17978
发表于 2015-08-14 20:04:08 回复(1)
感觉应该是B,基本算法编程~~~
发表于 2015-08-13 21:48:41 回复(0)
按照传统的计算方法,我觉得应该是选择B选项,这题难道不是这样的吗?
发表于 2015-08-11 10:21:24 回复(0)
因为按行存储,才可将矩阵分块,便于Strassen乘
发表于 2015-07-30 11:21:38 回复(1)
为什么不是B?
发表于 2015-07-23 21:30:00 回复(0)
为什么不是B?
发表于 2015-07-22 23:20:05 回复(0)
B
发表于 2015-04-02 17:33:53 回复(0)
B
发表于 2015-03-31 21:58:35 回复(0)
A.按行存储,便于矩阵分块,使用Strassen乘
发表于 2015-08-12 16:41:56 回复(0)
A行乘B列在相加,B以列存的话那是不是不算是基本算法编程了
发表于 2017-11-24 20:55:34 回复(0)
想要在PC上按矩阵乘法基本算法编程实现计算A*B,所以有可知是基本行列算法(本人数学专业,只是我们本科阶段最常用的方法),所以我觉得这道题就是从计算机操作系统角度考虑,比如I7采用的三级缓存架构,一级缓存延时1ns,二级缓存延时10-20ns,三级缓存延时30,主存缓存延迟100ns(读取调用延时),因此可知当即可能提高数据在内存的命中率可以有效的提高计算机CPU的执行效率,所以采用B的方法最为合理。
发表于 2016-02-24 14:12:19 回复(0)
这题难道不是应该考察缓存的??什么优化矩阵乘啊没有get到这个考点啊!!
发表于 2016-01-31 21:42:09 回复(0)
看不懂Strassen矩阵相乘
发表于 2015-12-25 13:55:40 回复(0)
如果用数组存储,支持下标随机访问的,A和B的存储方式对于计算速度有影响吗?
发表于 2015-08-19 16:51:39 回复(2)

扫一扫,把题目装进口袋

牛客网,程序员必备求职神器

扫描二维码,进入QQ群

扫描二维码,关注牛客网公众号

  • 公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
  • 联系方式:010-60728802(电话) admin@nowcoder.com
  • 牛客科技©2018 All rights reserved
  • 京ICP备14055008号-4
  • 京公网安备 11010502036488号