矩阵详解(欢迎补充)

一、概念


矩阵(martrix)是由n行m列数字构成的数表。
记:A\epsilon R^{nm}
A=\begin{pmatrix} &a_{1,1} ...&a_{1,m}\\ &... &... \\ &a_{1,n} ...&a_{n,m}\\ \end{pmatrix}
矩阵中第i行第j列的元素可记为a_{ij}

二、矩阵的运算

加法:行数列数均相等的两个矩阵,对应位置的数分别加减。
乘法(与数值相乘):所有元素都乘以这个数值。
乘法(矩阵相乘):
A\epsilon R^{_{nm}}B\epsilon R^{^{mp}}
C=AB \epsilon R^{np},且C_{ij}=\sum_{r=1}^{m} A_{ij}*b_{ij}
行数相等的两个矩阵,矩阵C中第i行第j列元素的计算方式:取出矩阵A中的第i行与矩阵B中的第j列,对应项相乘再相加。
满足结合律与对加法的交换律:
(AB)C=A(BC)
(A+B)C=AC+BC

三、定义


矩阵结构体储存:

struct martrix
{
    int n,m,a[N][N];
} A,B;

//矩阵乘法(矩阵相乘)实现:
for (int i=1;i<=n;i++)
{
    for (int k=1;k<=m;k++)
    {
        for (int j=1;j<=p;j++)
        {
            c[i][j]+=a[i][k]*b[k][j];
        }
    }
}

时间复杂度O(nmp)。 

四、一些特殊操作


1 矩阵倒置:也称行列转换,记A的转换矩阵为A^T

A=\begin{pmatrix} 3 &1 \\ 2& 1 \\ 1 &0 \\ \end{pmatrix}


A^T=\begin{pmatrix} 3 &2 &1 \\ 1 &1 &0 \end{pmatrix}

2 斐波那契数列


一般推算:F_n=F_{n-1}+F_{n-2}
优化至O(logn):

\begin{pmatrix} f[n]\\f[n-1] \end{pmatrix}=\begin{pmatrix} 1&1 \\ 1&0 \end{pmatrix}*\begin{pmatrix} f_{n}\\f_{n-1} \end{pmatrix}

3 定长路径数量

一共n个点的有向图中,边长相同,存在重边。给定k,求所有点对之间长度为k路径数量。
设其邻接矩阵为G,其中G[u][v]表示u指向v的边数,答案为G^{k[u][v]}
G^{2[u][v]}=min(G[u][v]+G[w][v])
G^{k[u][v]}=min(G^{(k-1)[u][w]}+G[w][v])
C[i][j]=min(A[i][k]+b[k][j])

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值