【数据结构】三对角矩阵(带状矩阵)的压缩 数组下标转换

这篇具有很好参考价值的文章主要介绍了【数据结构】三对角矩阵(带状矩阵)的压缩 数组下标转换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

王道书中给出定义如下:
三对角矩阵,矩阵,数据结构,算法
书中没有给出具体的推导过程,在CSDN上也没搜到,因此我来发一篇(哈哈哈哈哈

推导过程如下:

首先除去第一行。

从第二行开始,当矩阵的下标为(i,j)的时候:

  • 前面一定会有第一行的2个
  • 会有从第2行开始到第i-1行的每行3个,因此是3(i-1-2+1)=3(i-2)
  • j的取值是从i-1到i+1,因此第i行的第j个数在本行的次序是:j-(i-1)+1=j-i+2.

综上, a i j a_{ij} aij在所有不为0的数中的次序就是2+3(i-2)+j-i+2=2i+j-2

数组下标如果从0开始,那么它在压缩后的数组中的下标就是次序减1,也就是2i+j-3

然后把第一行带入演算,发现也是ok的,因此答案就是2i+j-3

数组向矩阵的转换可以通过这个式子反推。假设数组中下标为k的元素,我们要找到它的i和j。

在三对角矩阵中,我们有: i − 1 ≤ j ≤ i + 1 i-1 \leq j \leq i+1 i1ji+1因此就有: 3 i − 4 ≤ k ≤ 3 i − 2 3i-4\leq k \leq 3i-2 3i4k3i2

也就是: 3 ( i − 1 ) ≤ k + 1 ≤ 3 i − 2 3(i-1)\leq k+1\leq 3i-2 3(i1)k+13i2

我们可以通过向下取整函数得到准确的 i − 1 i-1 i1,即 ⌊ k + 1 3 ⌋ = i − 1 \lfloor \frac{k+1}{3}\rfloor=i-1 3k+1=i1也就是 i = ⌊ k + 1 3 ⌋ + 1 i=\lfloor \frac{k+1}{3}\rfloor+1 i=3k+1+1.

有了i之后,j就很好求了,带入 k = 2 i + j − 3 k=2i+j-3 k=2i+j3就能得到j。文章来源地址https://www.toymoban.com/news/detail-728901.html

到了这里,关于【数据结构】三对角矩阵(带状矩阵)的压缩 数组下标转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据结构】数组和字符串(五):特殊矩阵的压缩存储:稀疏矩阵——压缩稀疏行(CSR)

    【数据结构】数组和字符串(一):矩阵的数组表示   矩阵是以按行优先次序将所有矩阵元素存放在一个一维数组中。但是对于特殊矩阵,如对称矩阵、三角矩阵、对角矩阵和稀疏矩阵等, 如果用这种方式存储,会出现大量存储空间存放重复信息或零元素的情况,这样会造

    2024年02月05日
    浏览(53)
  • 【C语言 数据结构】数组与对称矩阵的压缩存储

    提到数组,大家首先会想到的是:很多编程语言中都提供有数组这种数据类型,比如 C/C++、Java、Go、C# 等。但本节我要讲解的不是作为数据类型的数组,而是数据结构中提供的一种叫数组的存储结构。 和线性存储结构相比,数组最大的不同是:它存储的数据可以包含多种“一

    2024年02月04日
    浏览(48)
  • 【数据结构】数组(稀疏矩阵、特殊矩阵压缩、矩阵存储、稀疏矩阵的快速转置、十字链表)

    前几期期链接: 【数据结构】栈与队列的概念和基本操作代码实现 【数据结构】树与二叉树的概念与基本操作代码实现 k维数组的定义: k 维数组 D = { a j 1 , j 2 , . . . , j k } k维数组D={ a_{j_1, j_2, ..., j_k} } k 维数组 D = { a j 1 ​ , j 2 ​ , ... , j k ​ ​ } k 0 称为数组的维数,

    2024年04月09日
    浏览(140)
  • 【数据结构】数组和字符串(四):特殊矩阵的压缩存储:稀疏矩阵——三元组表

    【数据结构】数组和字符串(一):矩阵的数组表示   矩阵是以按行优先次序将所有矩阵元素存放在一个一维数组中。但是对于特殊矩阵,如对称矩阵、三角矩阵、对角矩阵和稀疏矩阵等, 如果用这种方式存储,会出现大量存储空间存放重复信息或零元素的情况,这样会造

    2024年02月05日
    浏览(44)
  • 数组:矩阵快速转置 矩阵相加 三元组顺序表/三元矩阵 随机生成稀疏矩阵 压缩矩阵【C语言,数据结构】(内含源代码)

    目录 题目: 题目分析: 概要设计: 二维矩阵数据结构: 三元数组三元顺序表顺序表结构: 详细设计: 三元矩阵相加: 三元矩阵快速转置: 调试分析: 用户手册: 测试结果:  源代码: 主程序:  头文件SparseMatrix.h:  头文件Triple.h: 总结: 稀疏矩阵A,B均采用 三元组

    2023年04月26日
    浏览(63)
  • 【数据结构】矩阵的压缩存储

    5.1 普通矩阵的存储 用二维数组存储 分为行优先和列优先: 行优先:优先存放一行的数据。 列优先:优先存放一列的数据。 注意下标是从0还是1开始的! 5.2 对称矩阵的存储 对称矩阵定义 若n阶方阵中任意一个元素 a i , j a_{i,j} a i , j ​ 都有 a i , j = a j , i a_{i,j}=a_{j,i} a i , j

    2024年03月18日
    浏览(57)
  • 【数据结构】特殊矩阵的压缩存储

    🌈 自在飞花轻似梦,无边丝雨细如愁 🌈   🌟 正式开始学习数据结构啦~此专栏作为学习过程中的记录 🌟 数组是由n个相同类型的数据元素所构成的有限序列 数组和线性表的关系: 数组是线性表的推广:一维数组可以看做是一个线性表,而对于二维数组而言,可以看成是有

    2024年02月11日
    浏览(47)
  • 数据结构--特殊矩阵的压缩存储

    各数组元素大小相同,且物理上连续存放。 数组元素a[i]的存放地址= LOC + i * sizeof(ElemType) ( 0 ≤ i 10 ) (0le i 10) ( 0 ≤ i 10 ) 注:除非题目特别说明,否则数组 下标默认从 0 开始 color{red}下标默认从0开始 下标默认从 0 开始 注意审题 ! 易错 ! color{purple}注意审题!易错! 注意审题

    2024年02月16日
    浏览(60)
  • 数据结构(五)----特殊矩阵的压缩存储

    目录 1.一维数组的存储结构 2.二维数组的存储结构 3.普通矩阵的存储 4.特殊矩阵的压缩存储 (1)对称矩阵 (2)三角矩阵 (3)三对角矩阵 (4)稀疏矩阵的压缩存储 1.一维数组的存储结构 一维数组的定义如下: ElemType a[10]; 各数组元素大小相同,且物理上连续存放。 数组元

    2024年04月28日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包