矩阵乘法基础
A
∗
B
=
{
1
2
3
4
5
6
}
∗
{
1
4
2
5
3
6
}
=
{
14
32
32
77
}
A*B= \left\{ \begin{matrix} 1&2&3\\4&5&6 \end{matrix} \right\}* \left\{ \begin{matrix} 1&4\\2&5\\3&6 \end{matrix} \right\}= \left\{ \begin{matrix} 14&32\\32&77 \end{matrix} \right\}
A∗B={142536}∗⎩⎨⎧123456⎭⎬⎫={14323277}
A
∗
B
A*B
A∗B的理解是,
B
B
B矩阵是
2
2
2个
3
3
3维向量,
A
A
A矩阵提供了
3
3
3个维度的变换方法
[这里再给出一个
B
∗
A
B*A
B∗A参考]
B
∗
A
=
{
1
4
2
5
3
6
}
∗
{
1
2
3
4
5
6
}
=
{
17
22
27
22
29
36
27
36
45
}
B*A= \left\{ \begin{matrix} 1&4\\2&5\\3&6 \end{matrix} \right\}* \left\{ \begin{matrix} 1&2&3\\4&5&6 \end{matrix} \right\}= \left\{ \begin{matrix} 17&22&27\\22&29&36\\27&36&45 \end{matrix} \right\}
B∗A=⎩⎨⎧123456⎭⎬⎫∗{142536}=⎩⎨⎧172227222936273645⎭⎬⎫
也就是说,向量的数量不会变化,而左乘的矩阵决定了变化到的空间是几维的
所以显然运算上每个向量的值不会互相影响
那么我们来说说对左边的这个矩阵的理解,左边每一个“向量”的意义是分别指导右边的每一个维度怎么变,因为本来的维度可能被分拆到好多个维度,也可能压缩到一个维度,影响上。
一个
A
i
,
j
A_{i,j}
Ai,j会和
B
B
B的第
j
j
j行乘,答案会显示在第
i
i
i列
这样写就好理解了,因为向量间不影响,不妨研究这样的乘法,矩阵乘向量,结果就是简单的向量加法了
{
i
^
j
^
k
^
}
∗
{
1
2
3
}
=
i
^
+
2
j
^
+
3
k
^
\left\{ \begin{matrix} \hat i& \hat j& \hat k \end{matrix} \right\}* \left\{ \begin{matrix} 1\\2\\3 \end{matrix} \right\} = \hat i+2\hat j+3\hat k
{i^j^k^}∗⎩⎨⎧123⎭⎬⎫=i^+2j^+3k^
OI中的矩阵
OI中,常见的是一个DP数组右乘一个转移矩阵,转移出来的显然还得是
n
n
n个数字,如果是n个向量那么转移矩阵就没有修饰的空间了,转移矩阵修饰的程度取决于维度,所以应该是形如这样的矩阵形式,方阵左乘一个
n
n
n维向量,这样结果还是一个向量
{
A
1
,
1
.
.
.
A
1
,
n
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
A
n
,
n
}
∗
{
f
1
f
2
.
.
.
f
n
}
\left\{ \begin{matrix} A_{1,1}&...&A_{1,n}\\...&...&...\\...&...&A_{n,n} \end{matrix} \right\}* \left\{ \begin{matrix} f_1\\f_2\\...\\f_n \end{matrix} \right\}
⎩⎨⎧A1,1...............A1,n...An,n⎭⎬⎫∗⎩⎪⎪⎨⎪⎪⎧f1f2...fn⎭⎪⎪⎬⎪⎪⎫
这时候我们发现
A
i
,
j
A_{i,j}
Ai,j的意义就是
f
j
f_j
fj对
f
i
f_i
fi的贡献
转移矩阵的构造
魔改 d p dp dp式啊 f [ i ] + = A [ i ] [ j ] ∗ f [ j ] f[i]+=A[i][j]*f[j] f[i]+=A[i][j]∗f[j]
事实上
不过事实上,在OI中,我们习惯把行列反过来,因为大概跟图论中
E
[
u
]
[
v
]
E[u][v]
E[u][v]是
u
u
u到
v
v
v一样,我们把初始数组设为
F
[
1
,
2
,
3
,
.
.
.
,
n
]
=
A
[
0
]
[
1
,
2
,
3
,
.
.
.
.
,
n
]
F[1,2,3,...,n]=A[0][1,2,3,....,n]
F[1,2,3,...,n]=A[0][1,2,3,....,n]
n阶线性递推的转移式子
F
[
i
]
+
=
A
[
j
]
[
i
]
∗
F
[
j
]
,
其
中
i
是
指
下
一
次
循
环
中
第
i
位
F[i]+=A[j][i]*F[j],其中i是指下一次循环中第i位
F[i]+=A[j][i]∗F[j],其中i是指下一次循环中第i位
如
F
[
i
=
n
]
指
的
其
实
是
相
对
于
F
[
j
=
n
]
来
说
的
n
+
1
如F[i=n]指的其实是相对于F[j=n]来说的n+1
如F[i=n]指的其实是相对于F[j=n]来说的n+1
而那种类似图论的题就不需要考虑这个了