数据结构与算法-三对角矩阵的压缩公式推导
- 三对角矩阵
- 压缩公式推导
(1)考虑a[i,j]处在第2到第n-1行之间:
我们可以看到,从第二行开始,元素的个数都为3个。对于a[i,j]将要存储的数组下标k
,首先前(i-1)行元素的个数是(i-2)*3 +2(i-2减去的是第一行和自己这行;第一行元素的个数为2),又a[i,j]属于第i行所有元素的第j-i+2个元素(随便找一行j-i看下就能得到),所以k= (i-2)*3 +2 + j-i+2-1 = 2i+j-3(注意数组下标为元素位序-1).
(2)特殊考虑第一行发现也符合上式.
(3)故数组下标k=2i+j-3
- 逆推导坐标
(1)i = [(k+1)/3] + 1
k+1为元素总个数,整除3之后是除了第一行的行数,+1即为实际行数.
(2)j = k -2i +3
直接代入压缩公式可得.