IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构_特殊矩阵的压缩存储 -> 正文阅读

[数据结构与算法]数据结构_特殊矩阵的压缩存储

数据结构_特殊矩阵的压缩存储


压缩存储:对于一个矩阵之中的相同元素分配同一存储单元。 矩阵的压缩存储通常是将二维数据存储的矩阵映射到一维数组之中。

对称矩阵

若n阶矩阵满足a ij = a ji (1<=i,j<=n),称为n阶对称矩阵。

若n阶矩阵为对称矩阵,那么实现压缩存储,只需要对矩阵的含对角线的上三角进行存储。(如图的虚线框内)对于对称矩阵可以用上三角也可以用下三角,下三角的表达式容易推导,所以采用下三角,想用上三角的可以参考三角矩阵的内容。
在这里插入图片描述
我们需要把虚线框内的元素对应到一维数组,来找寻aij在一维数组中的位置。方便理解,一维数组从B[1]开始。
在这里插入图片描述

要求对称矩阵压缩到一维数组B[ k ],我们需要知道
(1)需要存储的元素数目
(2)矩阵元素aij 与B[ k ]中的k值的对应关系

(1)矩阵第i行有i个元素,1<=i<=n,即元素总和为n*(n+1)/2
(2) 观察第 i 行的起始位置对应k值
在这里插入图片描述

i=1 , k=1 —> a1=1
i=2 , k=2 —> a2=a1+1
i=3 , k=4 —> a3=a2+2
i=4 , k=7 —> a4=a3+3

则 an = an-1 + n-1
得推导式
an = n * (n-1)/2 + 1
即 ai = i * (i-1)/2+1
又因为j是第i行的偏移量,所以
k = i * (i-1)/2+1+(j-1) ----> k = i * (i-1)/2+j
而上三角的内容因为a ij = a ji (1<=i,j<=n),所以将j映射为i即可。
最后得到表达式
在这里插入图片描述

三角矩阵

三角矩阵有上三角矩阵和下三角矩阵之分,上三角矩阵是指矩阵下三角(不含对角线)的元均为常数或者零的n阶矩阵。

  1. 下三角矩阵
    在对称矩阵的存储中就用的是下三角矩阵,得到的公式为:
    在这里插入图片描述

  2. 上三角矩阵

下三角为常数c或零的矩阵
在这里插入图片描述

类似的,要求上三角矩阵压缩到一维数组B[ k ],我们需要知道
(1)需要存储的元素数目
(2)矩阵元素aij 与B[ k ]中的k值的对应关系

(1)矩阵第i行有i个元素,1<=i<=n,即元素总和为n*(n+1)/2
(2)观察第 i 行的起始位置对应k值在这里插入图片描述

i=1 , k=1 —> a1=1
i=2 , k=n+1 —> a2=a1 + n
i=3 , k=n+n-1+1 —> a3=a2 + n-1
i=4 , k=n+n-1+n-2+1 —> a4=a3 + n-2

则 am = am-1 + n - (m-2)
得推导式
am = (m-1) * n + 1 - ( 1+2+3+…m-2 ) ===>
am = (m - 1) * (2n - m + 2) / 2 +1

ai = (i - 1) * (2n - i + 2) / 2 +1
又因为j - i是第i行的偏移量,所以
k = (i - 1) * (2n - i + 2) / 2 +1 +( j - i)
最后得到表达式
在这里插入图片描述

对角矩阵

对角矩阵的所有非零元素都集中在以主对角线为中心的带状区域中,其他都为零。下面讲述常见的三对角矩阵,m条对角线的n阶对角矩阵压缩存储的通用寻址公式请参考 知网论文
在这里插入图片描述
类似的,要求上三角矩阵压缩到一维数组B[ k ],我们需要知道
(1)需要存储的元素数目
(2)矩阵元素aij 与B[ k ]中的k值的对应关系

(1)矩阵第1和n行有2个元素,其中行都是3个元素,即元素总和为3*n-2
(2)观察对应关系
在这里插入图片描述

观察主对角线上的元与k值
i=1 , k=1 —> a1=1
i=2 , k=4 —> a2=a1+3
i=3 , k=7 —> a3=a2+3
i=4 , k=10 —> a4=a3+3
即ai = 3*(i-1) + 1
则当i = j 时,即主对角线元
k = 3*(i-1) + 1 … (1)
而当i = j - 1时,即主对角线元右边的元(一行三个元)
k = 3*(i-1) + 2 … (2)
而当i = j +1时,即主对角线元左边的元
k = 3*(i-1) … (3)
综合三个式子得到式子:
在这里插入图片描述

k = 2*(i-1) + j

则最后结果为
k = 2 (i-1) + j

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-08-03 11:27:45  更:2021-08-03 11:30:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:56:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码