- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
矩阵乘法入门
矩阵运算是属于线性代数里的一个重要内容,上学期学完后只觉得矩阵能解线性方程,不过高中的时候听说过矩阵能优化常系数递推以及将坐标上的点作线性变换,于是找了些资料研究了一下,并把许多经典题以及HDU shǎ崽大牛总结的矩阵乘法的题目/forum/read.php?tid=15908[1]、[2]和开设的矩阵乘法DIY Contest给做完了,感觉收获颇丰。 一个矩阵就是一个二维数组,为了方便声明多个矩阵,我们一般会将矩阵封装一个类或定义一个矩阵的结构体,我采用的是后者: 最特殊的矩阵应该就是单位矩阵E了,它的对角线的元素为1,非对角线元素为0。 若A为n×p矩阵,B为p×m矩阵,则它们的乘积AB(有时记做A·B)将是一个n×m矩阵。其乘积矩阵AB的第i行第j列的元素为: 一般矩阵乘法采用朴素的O(n^3)的算法:矩阵加法就是简单地将对应的位置的两个矩阵的元素相加:在ACM的题目中,我们一般考虑的是n阶方阵之间的乘法以及n阶方阵与n维向量(把向量看成n×1的矩阵)的乘法。矩阵乘法最重要的性质就是满足结合律,同时它另一个很重要的性质就是不满足交换率,这保证了矩阵的幂运算满足快速幂取模(A^k % MOD)算法:假设k = 27,则k的二进制表示为11011,所以按二进制展开,乘以相应的权值,可以看出:k的二进制的每一位矩阵A都要平方,在k二进制为1的位:末矩阵×平方后的A,在k二进制为0的位则末矩阵×E(单位矩阵),即不变。代码如下:重载按位与(乘方)和加法时注意,加法的优先级高于按位与*-+-^许多题目还要求S = A + A2 + A3 + … + Ak.。其实再作一次二分即可:只需计算log(n)个A的幂即可。 将二分若A中=m表示从i到j有m条有向边,则中=n表示从i经过k条有向边到达j,这样的走法有n种 矩阵在ACM里用处最大的就是加速常系数递推方程的计算,最经典的例子就是Fibonacci数列,如果普通的递推,计算第n项复杂度为o(n),显然对于10^9左右的数据就力不从心了。如果用矩阵快速幂递推的话,计算第n项的复杂度为o(k3*log(n)),对应一般的题目已经绰绰有余了,有的题目可以根据矩阵的特殊性进行优化,可以达到o(k2*log(n))。 由常系数递推式右边有两项,所以向量和矩阵的规格都为2。容易如下递推: 实现计算Fibonacci数列第k项的代码如下:在朴素递推公式中采用线性递推,耗时,而采用矩阵快速幂时是将n二进制分解,耗时恰好可以将消去,最后有不能由去套矩阵凑,注意矩阵乘法不满足交换律
文档评论(0)