矩阵乘法
矩阵乘法
矩阵计算
加减法
要求:两个矩阵的长宽相同。
结果:每一个位置相加。
乘法
常数乘以矩阵
一个数 \(x\) 乘以矩阵 \(a\),那么等同于 \(a\) 中的每一个元素乘以 \(x.\)
矩阵乘以矩阵
要求:矩阵 \(a\) 的列和矩阵 \(b\) 行相同,即 \(a\) 的大小为 \(n,m\),则 \(b\) 的大小为 \(m,u.\)
计算公式:\(c_{i,j}=\sum_{k=1}^m a_{i,k}\times b_{k,j}.\)
不难得到以下代码:
for (int i = 1;i <= n;i ++)// a行
for (int j = 1;j <= u;j ++)// b列
for (int k = 1;k <= m;k ++)// a列,b行
c[i][j] = a[i][k] * b[k][j];
尽管这样的时间复杂度是 \(\mathcal{O}(n^3)\) 的,但是有更快的Strassen算法的改进复杂度,但对比赛作用不大(除了卡常)。
根据定义可以推出:结合律;分配律;但是没有交换律。
广义矩阵乘法
这是一个十分重要的内容,可以用于加速 \(dp.\)
但是其也是 动态 dp
的一种,所以放在 \(dp\) 内容,链接:动态dp。