数据结构与算法-三对角矩阵的压缩公式推导

数据结构与算法-三对角矩阵的压缩公式推导

  • 三对角矩阵
    在这里插入图片描述
  • 压缩公式推导
    (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
    直接代入压缩公式可得.
  • 22
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 三对角矩阵压缩存储下的转置矩阵可以通过以下算法求得: 1. 首先,将三对角矩阵压缩存储形式转换为一般矩阵的形式,即将矩阵中的非零元素放回原来的位置上,同时补充上缺失的零元素。 2. 然后,对于一般矩阵的转置矩阵,可以直接将原矩阵的行列互换得到。 3. 最后,将转置矩阵重新压缩存储,即可得到三对角矩阵压缩存储下的转置矩阵。 需要注意的是,在进行矩阵转置时,由于三对角矩阵的特殊性质,可以直接交换矩阵的上下三角部分,而不需要对角线上的元素进行操作。 ### 回答2: 由于三对角矩阵压缩存储下,只存储非零元素,且只有主对角线、上对角线和下对角线有非零元素,因此我们可以通过遍历压缩存储后的矩阵,来构造转置后的矩阵。 假设三对角矩阵的维数为n,其压缩存储的三个一维数组分别为a、b、c,其中a存储主对角线元素,b存储上对角线元素,c存储下对角线元素。(注意此处并不保存对角线上的元素) 那么对于转置矩阵,其非零元素也只会存在于主对角线、上对角线和下对角线,因此我们可以构造一个新的三个一维数组a'、b'、c',分别存储转置矩阵的主对角线、上对角线和下对角线元素。 对于矩阵A的第i行第j列元素,它会出现在矩阵B的第j行第i列元素,因此我们只需要将A矩阵中的a[i]、b[i]、c[i]对应的元素值,分别存储到B矩阵的a'[i]、b'[i-1]、c'[i]位置上即可。 具体实现步骤如下: 1. 根据矩阵A的维数n,分别创建空数组a'、b'、c',长度均为n。 2. 遍历矩阵A的压缩存储数组a、b、c,对于每一个非零元素A[i][j],将其值存储到B[j][i]对应的位置上。 3. 对于压缩存储数组b、c,需要分别处理上对角线和下对角线元素。由于转置后的矩阵中,上对角线元素会出现在下对角线上,下对角线元素会出现在上对角线上,因此在处理上下对角线元素时,需要将它们对调并反转(即b->c,c->b)。 4. 返回构造好的转置矩阵B。 总的来说,三对角矩阵压缩存储下的转置矩阵可以通过遍历压缩存储后的矩阵,并将每个非零元素按照转置后的位置存储到新的压缩数组中,来得到。 ### 回答3: 首先,我们需要知道什么是三对角矩阵和它的压缩存储方式。 三对角矩阵是指对角线上方、下方各相邻一个对角线上的元素均为0的矩阵。例如,一个5阶的三对角矩阵可以表示为: a1 b1 0 0 0 c1 a2 b2 0 0 0 c2 a3 b3 0 0 c3 a4 b4 0 0 0 c4 a5 b5 其中,a1,a2...a5,b1,b2...b4,c1,c2...c4为矩阵中的元素。 压缩存储方式是指将三对角矩阵中的元素压缩成一个一维数组,只保留非零元素。例如,将上述5阶矩阵压缩存储为一个一维数组,即可得到: a1 b1 c1 a2 b2 c2 a3 b3 c3 a4 b4 c4 a5 b5 根据定义,转置矩阵的第i行第j列的元素等于原矩阵的第j行第i列元素。因此,要求三对角矩阵的转置,可以将原矩阵的压缩存储数组中每个非零元素的下标进行互换(即原来在第i行第j列的元素在转置矩阵中应当在第j行第i列)。 具体实现过程如下: 1. 首先,将原矩阵的压缩存储数组按照原顺序复制一份,记为A; 2. 对A中的所有下标进行互换操作。具体地,对于下标i,若它对应的行为m,列为n,则将A[i]放到其在转置矩阵中对应的位置,即A[n*(m-1)+i]。其中,下标从0开始计算。 例如,对于上述例子,按照以上步骤进行转置后可以得到: a1 c1 0 0 0 b1 a2 c2 0 0 0 b2 a3 c3 0 0 b3 a4 c4 0 0 0 b4 a5 c5 将该转置矩阵进行压缩存储,即得到: a1 c1 b1 a2 c2 b2 a3 c3 b3 a4 c4 b4 a5 c5 因此,设计算法求三对角矩阵压缩存储下的转置矩阵的时间复杂度为O(n),其中n为矩阵的大小。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值