带状矩阵[BandMatrix]解网格图一类问题

文章目录

方法

顾名思义解这样一个方程组:
带状矩阵[BandMatrix]解网格图一类问题
其中 dd 称为带宽
对于传统的高斯消元(不管是回代型还是高斯-约旦型)都是 O(n3)O(n^3)
但是如果求某些特殊问题(如概率dp,期望dp)可以做到 O(nd2)O(nd^2)
我们每次沿对角线对一个 ddd*d 的矩阵进行消元:
带状矩阵[BandMatrix]解网格图一类问题
注意每次 ddd*d 的矩形只消第一列,即:
带状矩阵[BandMatrix]解网格图一类问题
最后得到这些格子还有系数:
带状矩阵[BandMatrix]解网格图一类问题
然后回代即可
时间复杂度每个矩形高斯消元是 O(d2)O(d^2)O(n)O(n) 个矩形,所以解方程为 O(nd2)O(nd^2),回代每个元回代 O(d)O(d) 次,回代时间复杂度为 O(nd)O(nd)
所以总的时间复杂度为 O(d2)O(d^2)

适用范围

这时会发现一个很严重的问题
如果消元时候对角线上系数消为 00 怎么办?
我们并不能交换行列
这是实际存在的,但对于一些场合并不会出现这样的问题
一般而言用作高斯消元的时候是解概率dp或期望dp
如果最终每个变量都有解(矩阵满秩)那就不会出现这样的问题
首先针对 dpdp 满秩的矩形的有个特性:
对于前 ii 行将 [i+1,n][i+1,n] 的变量看为参数移项后满秩
就是假设提前知道 [i+1,n][i+1,n] 变量的值代入
因为这是dp(有点难讲述)
然后考虑归纳证明前 iii*i 矩形中对角线消元时不会为 00
已知 (i1)(i1)(i-1)*(i-1) 矩形能消成只有对角线上有系数的矩阵,
考虑由 (i1)(i-1)iixix_i 由参数变为变量从每一行最右边的值移过来,因为 dpdp 的实际意义能得出前 ii 行的矩阵必然满秩,对于第 ii行只有第 ii个位置有系数,解出 ii 后回代即可

思考

能对部分选主元的题目进行简化