首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
有两个N*N的矩阵A和B,想要在PC上按矩阵乘法基本算法编程
[单选题]
有两个N*N的矩阵A和B,想要在PC上按矩阵乘法基本算法编程实现计算A*B。假设N较大,本机内存也很大,可以存下A、B和结果矩阵。那么,为了计算速度,A和B在内存中应该如何存储(按行存指先存储第一行,再第二行,直到最后一行;按列存指先存储第一列,再第二列,直到最后一列)?
A按行存,B按行存。
A按行存,B按列存。
A按列存,B按行存。
A按列存,B按列存。
查看正确选项
添加笔记
求解答(215)
邀请回答
收藏(1564)
分享
28个回答
添加回答
70
notlie
我们来看看传统的分块矩阵相乘:
很明显依然是行乘以列的方式。
再来看看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)
82
lwya
这个题最开始我选的是B,想到的是传统矩阵相乘的方法,时间复杂度为O(n
3
),但是这不是最优的方法,最优方法为
Strassen矩阵相乘发,时间复杂度降低为O(n
2.81
),用分治的思想将矩阵分块计算,在这个算法中按行存储更有利。所以正确答案为A。
编辑于 2015-07-24 09:56:01
回复(6)
1
CodingOneLife
矩阵很大,内存很大,考察重点应该不是分治,当然分治会更快一些。
很多人都回复了,该题的考察重点应该是缓存相关的问题。
普通的矩阵相乘算法就是左行乘以右行
A按行存储,B按列存储,能够最大程度降低data *** miss
发表于 2019-07-03 09:47:14
回复(0)
1
sunwuyi
有两个N*N的矩阵A和B,想要在PC上按矩阵乘法基本算法编程实现计算A*B。假设N较大,本机内存也很大,可以存下A、B和结果矩阵。那么,为了计算速度,A和B在内存中应该如何存储?_阿里巴巴笔试题_牛客网
发表于 2018-10-12 08:47:27
回复(0)
1
Poundingtherock
这题难道不是应该考察缓存的??什么优化矩阵乘啊没有get到这个考点啊!!
发表于 2016-01-31 21:42:09
回复(0)
1
逗逗逗地主
既然提到了按矩阵乘法基本算法,为何不是B
发表于 2015-11-22 00:43:18
回复(0)
1
Echo001
题目说了,按矩阵乘法基本算法编程,为毛不是左行乘右列?
发表于 2015-09-03 23:40:55
回复(0)
1
森林里的金色阳光
详见http://www.ituring.com.cn/article/17978
发表于 2015-08-14 20:04:08
回复(1)
1
伊凡少爷
感觉应该是B,基本算法编程~~~
发表于 2015-08-13 21:48:41
回复(0)
1
过好每一天_20868
按照传统的计算方法,我觉得应该是选择B选项,这题难道不是这样的吗?
发表于 2015-08-11 10:21:24
回复(0)
1
Royal_Highness
因为按行存储,才可将矩阵分块,便于Strassen乘
发表于 2015-07-30 11:21:38
回复(1)
1
Prokias
为什么不是B?
发表于 2015-07-23 21:30:00
回复(0)
1
baixiangcpp
为什么不是B?
发表于 2015-07-22 23:20:05
回复(0)
1
royad
B
发表于 2015-04-02 17:33:53
回复(0)
3
葛小爷不在缑城
B
发表于 2015-03-31 21:58:35
回复(0)
1
kmust_XiaQing
A.按行存储,便于矩阵分块,使用
Strassen乘
发表于 2015-08-12 16:41:56
回复(0)
8
stephen.D.C
楼下的看到题目中“
按矩阵乘法基本算法编程实现计算A*B
”了么?
发表于 2015-08-12 17:09:46
回复(0)
2
不要把我当工具人
这里考察的应该是空间局部性,矩阵a和b相乘,大致就是a的行乘b的列,所以a按行存储满足空间局部性,b按列存储(把列的值存储成一行)满足空间局部性,其实读数组一直都是一行一行读,要想有空间局部性就得把一列存储为一行
发表于 2021-11-14 14:11:20
回复(0)
2
牛客182385号
想要在PC上按矩阵乘法基本算法编程实现计算A*B,所以有可知是基本行列算法(本人数学专业,只是我们本科阶段最常用的方法),所以我觉得这道题就是从计算机操作系统角度考虑,比如I7采用的三级缓存架构,一级缓存延时1ns,二级缓存延时10-20ns,三级缓存延时30,主存缓存延迟100ns(读取调用延时),因此可知当即可能提高数据在内存的命中率可以有效的提高计算机CPU的执行效率,所以采用B的方法最为合理。
发表于 2016-02-24 14:12:19
回复(0)
0
西园公子zwj
应该是考缓存问题
发表于 2023-08-10 12:21:33
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
阿里巴巴
操作系统
来自:
中国电信2025春招笔...
上传者:
muglelala
难度:
28条回答
1564收藏
35565浏览
热门推荐
相关试题
进程阻塞的原因不包括()
阿里巴巴
操作系统
测试
后端开发
客户端开发
前端开发
数据
运维/技术支持
评论
(21)
来自
阿里巴巴2013研发工程...
请编写实现malloc()内存分配...
微软
C++
操作系统
评论
(3)
从所给的四个选项中,选择最合适的一...
判断推理
评论
(7)
来自
中国电信2025春招笔试...
24、26、25、25、()、24...
产品
运营
游戏策划
数学运算
设计
市场
牛客
财务
人力资源
客户经理
审计
税务服务
风险管理
证券分析师
理财顾问
柜面服务
营销
项目助理
业务管理
品牌运营工程师
销售计划与分析
市场分析
品牌专员
数字营销专员
售后专员
产品规划专员
媒介专员
管理咨询
管理培训生
IT管理培训生
行政管理
销售
公关
法务
项目
银行
财务审计类
人力资源类
行政管理类
公关媒介类
客服类
市场/营销类
销售/商务类
管理培训生
评论
(31)
来自
中国电信2025春招笔试...
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题