OI 中的矩阵

  • 矩阵加速递推
  • 广义矩阵乘法

基本概念及其运算

定义

n×mai,j 排成的 nm 列的表称为 nm 列的矩阵,简称 n×m 矩阵,记作:

An×m=[a1,1a1,2an,1a2,1a2,2an,2an,1an,2an,m]

n=m,则称 A方阵

方阵

En×n=En=[111]

称为 n 阶单位矩阵,简称单位矩阵,其主对角线上的元素为 1,其余为 0

矩阵

On×m=[000000000]

称为零矩阵,其元素全为 0

加法

An×m+Bn×m=Cn×mci,j=ai,j+bi,j

数乘

An×mx=Bn×mbi,j=ai,jx

乘法

An×mBm×p=Cn×pci,j=k=1mai,kbk,j

A0=E,Am×mn=An1A,n[1,+)Z

理解

加法

加法即为对应位置数做加法。

A 的行数 = B 的行数,A 的列数 = B 的列数才能做加法。

矩阵加法有以下性质:

  • 交换律:A+B=B+A
  • 结合律:(A+B)+C=A+(B+C)
  • 单位元:A+O=A。零矩阵在矩阵加法中充当单位元。

数乘

数乘即对矩阵的所有数乘以一个数。

矩阵数乘有以下性质:

  • 交换律:Ax=xA

乘法

An×mBm×p=Cn×pci,j=k=1mai,kbk,j

A 的列数 = B 的行数才能相乘。

代码实现时间复杂度为 O(nmp)

C 的第 i 行第 j 列的数为 A 的第 i 行横着的的 m 个数对应 B 的第 j 列竖着的 m 个数 相乘再相加:

An×m=[ai,1ai,2ai,m]Bm×p=[b1,jb2,jbm,j]Cm×p=An×mBm×p=[ci,j]

ci,j=ai,1b1,j+ai,2b2,j++ai,mbm,j

A 的每一行和 B 的每一列生成一个 ci,j,所以 C 的有 A 的行数 行,有 B 的列数 列,即 Cnp 列。

性质

矩阵乘法有以下性质:

  • 无交换律。

  • 结合律:(An,mBm,p)Cp,q=An,m(Bm,pCp,q)

    证明:
    Wn,p=An,mBm,p,Xn,q=(An,mBm,p)Cp,q,Ym,q=Bm,pCp,q,Zn,q=An,m(Bm,pCp,q)

    wi,j=k1mai,k1bk1,j

    xi,j=k2pwi,k2ck2,j=k2p(k1mai,k1bk1,k2)ck2,j=k1mk2pai,k1bk1,k2ck2,j

    yi,j=k2pbi,k2ck2,j

    zi,j=k1mai,k1yk2,j=k1mai,k1(k2pbk1,k2ck2,j)=k1mk2pai,k1bk1,k2ck2,j

    xi,j=zi,j,原命题得证。

  • 与加法的左分配律:(An,m+Bn,m)Cm,p=An,mCm,p+Bn,mCm,p

    证明:

    LHSi,j=km(ai,k+bi,k)ck,j=kmai,kck,j+bi,kck,j=kmai,kck,j+kmbi,kck,j=RHSi,j

  • 与加法的右分配律:Cn,m(Am,p+Bm,p)=Cn,mAm,p+Cn,mBm,p

    证明:

    LHSi,j=k=1mci,k(ak,j+bk,j)=k=1mci,kak,j+ci,kbk,j=k=1mci,kak,j+k=1mci,kbk,j=RHSi,j

  • 单位元:An,mEm,m=En,nAn,m=An,mE 在矩阵乘法中充当单位元。

用途

当用一个 1n 列的矩阵 A1×n 乘一个 nn 的方阵 Bn 会得到一个 1n 列的矩阵 C1×n

C1,i 的值由 A 的所有值和 B 的第 i 行的值确定。B 像是 nRnR 的函数,×B 像是对 An 个数进行一次递推。

例如:

Fibonacci 数列:fn=fn1+fn2,f1=f2=1

A=[fifi1]

B=[1110]

AB=[1fi+1fi11fi+0fi1]=[fi+1fi]

进行了一次递推!

ABB=[fi+1fi][1110]=[1fi+1+1fi1fi+1+0fi]=[fi+2fi+1]

进行了两次递推!

根据矩阵乘法的结合律,ABB=AB2。所以可以配合快速幂在 O(23logn) 的时间复杂度内求出 fn

A 相当于状态,B 相当于状态之间的递推关系,×Bn 相当于进行了 n 次递推,递推关系类似于 ai=b1a1+b2a2+b2a3++bnan

结合快速幂可以在 O(n3logm) 求出 An,nm

只有方阵才有幂运算。

广义矩阵乘法

(,) 的矩阵乘法:

An×mBm×p=Cn×pci,j=k=1mai,kbk,j

若要 运算满足结合律 (An×mBm×p)Cp×q=An×m(Bm×pCp×q),则需以下条件:

  1. 交换律:ab=ba
  2. 结合律:(ab)c=a(bc)
  3. 的左分配律:(ab)c=(ac)(bc)
  4. 的右分配律:c(ab)=(ca)(cb)

证明:

(An×mBm×p)Cp×q=Xn×q

An×m(Bm×pCp×q)=Yn×q

xi,j=k2=1p(k1=1mai,k1bk1,k2)ck2,j=k2=1pk1=1mai,k1bk1,k2ck2,j3.=k1=1mk2=1pai,k1bk1,k2ck2,j1.yi,j=k1=1mai,k1(k2=1pbk1,k2ck2,j)=k1=1mk2=1pai,k1(bk1,k2ck2,j)4.=k1=1mk2=1pai,k1bk1,k2ck2,j2.

则原命题得证。

常见的满足结合律的有 (+,min),(+,max),(×,+)

对于矩阵,也满足上述 4 个条件,所以元素是矩阵的矩阵也满足普通矩阵乘法的结合律!也就是矩阵套矩阵符合乘法结合律

一旦满足乘法结合律,就可用快速幂在 O(n3logm) 时间复杂度内求出类似 A1,nBn,nm 的值。

本文作者:kuailedetongnian

本文链接:https://www.cnblogs.com/kuailedetongnian/p/18642544

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   kuailedetongnian  阅读(9)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起