CCF CSP认证 20230502 矩阵运算 暴力题解 + 满分题解+简化编码 Python实现

文章讲述了如何在编程中高效地实现矩阵乘法和向量点乘,通过预处理和运算顺序调整降低时间与空间复杂度,重点介绍了两种方法:暴力解法和利用矩阵运算规则的优化解法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

  本题目对数学基本知识带有一定的考察,首先,需要知道矩阵的乘法怎么算、一个向量点乘矩阵怎么算,具体的知识在线性代数有详细讲述,编码实现这俩功能。然后,在算 Q × K T ) ) × V Q \times K^T)) \times V Q×KT))×V的过程中,通过对元素的预处理、交换运算次序的方式,对程序进行改进以减少时间使用、空间使用。题目版权归CCF所有,真题跳转官网查看
  真题来源: 矩阵运算
  官网地址:www.cspro.org(模拟考试入口)

题目分析

  有大小为 nd 列( n × d n \times d n×d)的三个矩阵 Q、K、V ,以及长度为n一维行向量W,在依次输入 Q、K、VW 的每个元素后,计算 ( W ⋅ ( Q × K T ) ) × V (W \cdot (Q \times K^T)) \times V (W(Q×KT))×V并输出计算结果,其中 K T K^T KTK 的转置。

暴力题解

  • 第一步,接受参数 nd 列,构造并初始化矩阵 Q、K、V ,由于是无序的,可统一存在矩阵字典 matrix 中,键为矩阵名,值是二维列表。
  • 第二步,构造并初始化 W K T K^T KTW 直接存在一维列表; K T K^T KT需要对 K 遍历,将 K [ i ] [ j ] K[i][j] K[i][j]存储在 K T [ j ] [ i ] K^T[j][i] KT[j][i]处。
  • 第三步,实现 一维向量 W · 点乘的功能 _dot。参数 _a 表示 W_b 表示 ( Q × K T ) (Q \times K^T) (Q×KT)部分,两个for循环,使得 ( Q × K T ) (Q \times K^T) (Q×KT)第i行每一个值✖️W第i个值
  • 第四步,实现矩阵叉乘的功能 _cro。参数 _a_b 分别乘号代表左、右两边的矩阵,设 _a n × d n \times d n
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值