数据结构-拓展突破-特殊矩阵(对称矩阵,三角矩阵,三对角矩阵,稀疏矩阵)的压缩存储)

这篇具有很好参考价值的文章主要介绍了数据结构-拓展突破-特殊矩阵(对称矩阵,三角矩阵,三对角矩阵,稀疏矩阵)的压缩存储)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 对称矩阵

数据结构-拓展突破-特殊矩阵(对称矩阵,三角矩阵,三对角矩阵,稀疏矩阵)的压缩存储)

对称矩阵的定义:

若n阶方阵中任意一个元素a,都有a(i,j)=a(j,i)则该矩阵为对称矩阵
也就是说对称矩阵的元素关于对角线对称。对角线上半部分称为上三角区,下半部分称为下三角区。

对称矩阵的压缩存储策略:只存储主对角线+下三角区(或主对角线+上三角区)

可以定义一维数组,将这些元素按照行优先的方式存储。
这个一维数组的大小(1+2+3+……+n)=(1+n)*n/2

矩阵还原过程(原矩阵的行号,列号映射到一维数组的下标)

按照行优先策略先计算 a(i,j)是矩阵的第几个元素

[1+2+3+……+i-1]+j个元素=(i-1)*i/2个元素
说明这个元素在一维数组的下标为[(i-1)*i/2]-1 数组下标从0开始

如果访问的是没有保存到一维数组的那半部分数据,可以根据对称原理找到对称位置的元素即可。

2. 三角矩阵

下三角矩阵:
数据结构-拓展突破-特殊矩阵(对称矩阵,三角矩阵,三对角矩阵,稀疏矩阵)的压缩存储)
下三角矩阵:除了主对角线和下三角区,其余的元素都相同

上三角矩阵与之类似。

压缩存储策略:按行优先原则将橙色区元素存入一维数组中。并在最后一个位置存储常量c

矩阵还原过程(原矩阵的行号,列号映射到一维数组的下标) 这里使用下三角矩阵为例

[1+2+3+……+i-1]+j个元素=j+(i-1)*i/2个元素
说明这个元素在一维数组的下标为[j+(i-1)*i/2]-1 数组下标从0开始

如果访问的是上半个三角元素,直接将其映射到一维数组的最后一个位置[(n+1)*n/2]

3. 三对角矩阵

数据结构-拓展突破-特殊矩阵(对称矩阵,三角矩阵,三对角矩阵,稀疏矩阵)的压缩存储)

三对角矩阵,又称带状矩阵:当|i-j>1时,有aj= 0 (1<i, j ≤n)

压缩存储策略:按行优先(或列优先)原则,只存储带状部分

带状矩阵第一行和最后一行是2个元素,中间行元素都是三个。
n阶带状矩阵 数组大小为3n-2

矩阵还原过程(原矩阵的行号,列号映射到一维数组的下标)

  • |i-j|>1 值为0,不需要到一维数组哪里查找。

  • |i-j|≤1 找a(i,j)是数组第几个元素即可
    3(i-1)-1+j-i+2=2*i+j-2

    对应数组下标2i+j-3

4. 稀疏矩阵

数据结构-拓展突破-特殊矩阵(对称矩阵,三角矩阵,三对角矩阵,稀疏矩阵)的压缩存储)
稀疏矩阵:非零元素远远少矩阵元素的个数

压缩存储策略:

  • 顺序存储:使用三元组形式存储<行,列,值>

  • 十字链表法:一条链表代表稀疏矩阵的行,另一条链表代表稀疏矩阵的列。

    非零元素节点声明:值+行号+列号+同行的下一个节点指针+同列的下一个节点指针。

数据结构-拓展突破-特殊矩阵(对称矩阵,三角矩阵,三对角矩阵,稀疏矩阵)的压缩存储)文章来源地址https://www.toymoban.com/news/detail-402971.html

到了这里,关于数据结构-拓展突破-特殊矩阵(对称矩阵,三角矩阵,三对角矩阵,稀疏矩阵)的压缩存储)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【数据结构】特殊矩阵的压缩存储

    🌈 自在飞花轻似梦,无边丝雨细如愁 🌈   🌟 正式开始学习数据结构啦~此专栏作为学习过程中的记录 🌟 数组是由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)
  • 24考研数据结构-数组和特殊矩阵

    数据结构是计算机科学中的基础概念,它涉及组织和存储数据的方式以及对数据的操作。在数据结构中,数组和特殊矩阵是两种常见的数据组织形式。本文将对数组和特殊矩阵进行介绍,并讨论它们在实际应用中的特点和用途。 数组是一种线性数据结构,它由相同类型的元素

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

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

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

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

    2024年02月04日
    浏览(48)
  • 【考研】数据结构——特殊矩阵的压缩存储(含真题)

    本文内容源于对《数据结构(C语言版)》(第2版)、王道讲解学习所得心得、笔记整理和总结。 本文主要以举例子的方式讲解考研选择题型中的特殊矩阵的压缩存储知识点,配以图文(含408真题)。 可搭配以下链接进行学习: 【2023考研】数据结构常考应用典型例题(含真

    2024年02月03日
    浏览(53)
  • 【数据结构】特殊矩阵的压缩存储|保姆级详解+图解

    作者: 努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:算法、数据结构、Java等相关知识。 博主主页: @是瑶瑶子啦 所属专栏: 【数据结构】:该专栏专注于数据结构知识,持续更新,每一篇内容优质,浅显易懂,不失深度! 近期目标: 写好专栏

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

    前几期期链接: 【数据结构】栈与队列的概念和基本操作代码实现 【数据结构】树与二叉树的概念与基本操作代码实现 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月08日
    浏览(47)
  • 【数据结构】数组和字符串(四):特殊矩阵的压缩存储:稀疏矩阵——三元组表

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

    2024年02月05日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包