特殊矩阵的压缩存储(对称矩阵,三角矩阵,三对角矩阵,稀疏矩阵)

news2024/11/24 13:50:55

目录

  • 1.数组的存储结构
    • 1.—维数组
    • 2.二维数组
      • 1.行优先存储
      • 2.列优先存储
  • 2.特殊矩阵
    • 1.对称矩阵
      • 1.行优先存储
    • 2.三角矩阵
      • 1.上三角矩阵
      • 2.下三角矩阵
    • 3.三对角矩阵(带状矩阵)
    • 4.稀疏矩阵

1.数组的存储结构

1.—维数组

各数组元素大小相同,且物理上连续存放。
数组元素a[i]的存放地址= 起始地址 L O C + i ∗ s i z e o f ( E l e m T y p e ) ( 0 < i < 10 ) 起始地址LOC+i * sizeof(ElemType)(0<i<10) 起始地址LOC+isizeof(ElemType)(0<i<10)

2.二维数组

1.行优先存储

M行N列的二维数组b[M][N]中,若按行优先存储
则b[i][j]的存储地址= L O C + ( i ∗ N + j ) ∗ s i z e o f ( E l e m T y p e ) LOC + (i*N+ j) * sizeof(ElemType) LOC+(iN+j)sizeof(ElemType)

2.列优先存储

M行N列的二维数组b[M][N]中,若按列优先存储
则b[i][i]的存储地址= L O C + ( j ∗ M + i ) ∗ s i z e o f ( E l e m T y p e ) LOC+ ( j*M+i ) * sizeof(ElemType) LOC+(jM+i)sizeof(ElemType)

2.特殊矩阵

1.对称矩阵

若n阶方阵中任意一个元素aij,都有 a i j = a j i aij=aji aij=aji则该矩阵为对称矩阵
压缩存储策略:只存储主对角线+下三角区(或主对角线+上三角区)

1.行优先存储

1.下三角区
策略:只存储主对角线+下三角区
①存储的数组长度: ( 1 + n ) ∗ n / 2 (1+n)*n/2 (1+n)n/2
②矩阵下标 a i j aij aij与一维数组下标k的映射关系: k = i ( i − 1 ) 2 + j − 1 , i > = j k=\frac{i(i-1)}{2}+j-1,i>=j k=2i(i1)+j1,i>=j

2.上三角区
根据对称矩阵的性质: a i j = a j i aij = aji aij=aji
k = j ( j − 1 ) 2 + i − 1 , i < j k=\frac{j(j-1)}{2}+i-1,i<j k=2j(j1)+i1,i<j

2.三角矩阵

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

1.上三角矩阵

除了主对角线和上三角区,其余的元素都相同。
按照行优先的原则,映射关系: k = ( i − 1 ) ( 2 n − i + 2 ) 2 + j − i , i < = j ( 上三角区和主对角线元素 ) k=\frac{(i-1)(2n-i+2)}{2}+j-i,i<=j(上三角区和主对角线元素) k=2(i1)(2ni+2)+jii<=j(上三角区和主对角线元素)
k = n ( n + 1 ) 2 , i > j ( 下三角区元素 ) k = \frac{n(n+1)}{2},i>j(下三角区元素) k=2n(n+1)i>j(下三角区元素)
在这里插入图片描述

2.下三角矩阵

除了主对角线和下三角区,其余的元素都相同。
按照行优先的原则,映射关系: k = i ( i − 1 ) 2 + j − 1 , i > = j ( 下三角区和主对角线元素 ) k=\frac{i(i-1)}{2}+j-1,i>=j(下三角区和主对角线元素) k=2i(i1)+j1i>=j(下三角区和主对角线元素)
k = n ( n + 1 ) 2 , i < j ( 上三角区元素 ) k = \frac{n(n+1)}{2},i<j(上三角区元素) k=2n(n+1)i<j(上三角区元素)

在这里插入图片描述

3.三对角矩阵(带状矩阵)

三对角矩阵,又称带状矩阵 当 ∣ i − j ∣ > 1 时,有 a i j = 0 ( 1 < = i , j ≤ n ) 当|i -j|>1时,有aij=0 (1<=i, j ≤n) ij>1时,有aij=0(1<=i,jn)
压缩存储策略:按行优先((或列优先)原则,只存储带状部分。
①已知aij求数组下标k:
前i-1行共 3 ( i − 1 ) − 1 3(i-1)-1 3(i1)1个元素
aij是i行第 j − i + 2 j-i+2 ji+2个元素
aij是第 2 i + j − 2 2i+j-2 2i+j2个元素
k = 2 i + j − 3 k=2i+j-3 k=2i+j3(数组下标从0开始)
②若已知数组下标k,如何得到i,j?
即第k+1个元素:
i = 「 ( k + 2 ) / 3 ] i =「(k+2)/3] i=(k+2)/3](向上取整)
k = 2 i + j − 3 k=2i+j-3 k=2i+j3得,
j = k − 2 i + 3 j=k-2i+3 j=k2i+3

在这里插入图片描述

4.稀疏矩阵

稀疏矩阵:非零元素远远少于矩阵元素的个数。
压缩存储策略:
①顺序存储:三元组<行,列,值>,会失去随机存储的特性。
例如:
在这里插入图片描述
对应的三元组为:
在这里插入图片描述

②链式存储:十字链表法
结点说明:
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1190042.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue-router路由守卫进阶

vue-router路由守卫进阶 路由守卫&#xff0c;可以想象为古代御前侍卫&#xff0c;路由守卫&#xff0c;则是对路由进行权限控制 分类&#xff1a;全局守卫、独享守卫、组件内守卫 全局前置-路由守卫 作用&#xff1a;主要用来鉴权 用户点击导航区&#xff0c;随后引起路径的…

Android平台上执行C/C++可执行程序,linux系统编程开发,NDK开发前奏。

Android平台上执行C/C可执行程序&#xff0c;linux系统编程开发&#xff0c;NDK开发前奏准备。 1.下载NDK&#xff0c;搭建NDK开发环境 下载地址 https://developer.android.com/ndk/downloads 下载过程中点击下面箭头的地方&#xff0c;点击鼠标右键&#xff0c;复制好下载…

自动化实战 - 测试个人博客系统

前言 本篇使用Selenium3Junit5对个人博客进行自动化测试&#xff0c;如有错误&#xff0c;请在评论区指正&#xff0c;让我们一起交流&#xff0c;共同进步&#xff01; 文章目录 前言一.web自动化测试用例二.测试准备1.注册界面自动化测试测试过程中遇到的Bug: 2.登录界面自动…

坐标系转换(仅作记载)

一.极坐标转换为普通坐标系 参考&#xff1a;极坐标方程与直角坐标方程的互化 - 知乎 (zhihu.com) 公式&#xff1a;&#xff08;无需考虑象限引起的正负问题&#xff09; 普通坐标系转换为极坐标系 参考&#xff1a; 极坐标怎么与直角坐标系相互转化&#xff1f; - 知乎 (zh…

若依 验证码出不来 Fontconfig head is null, check your fonts or fonts configuration

是因为使用的OenJDK不支持awt包下的字体 解决方法&#xff1a; 安装FontConfig组件即可 yum install -y fontconfig

找不到模块“./App.vue”或其相应的类型声明。ts(2307)

先看报错信息&#xff1a; 这是我们初始创建是就自带的&#xff0c;怎么会错误呢&#xff0c;实际上是因为未定义 .vue文件的类型&#xff0c;导致 ts 无法解析其类型&#xff0c;在env.d.ts中定义后即可解决。 对于我们初学者来说&#xff0c;刚刚按照视频来创建的项目怎么啥…

048-第三代软件开发-数据回放

第三代软件开发-数据回放 文章目录 第三代软件开发-数据回放项目介绍数据回放 关键字&#xff1a; Qt、 Qml、 Data、 play back、 数据 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt Meta-Object Language&#xff09;和 C 的…

4个杀手级Pycharm高效插件

本文将介绍4个学习Python的人都应该安装的Pycharm插件&#xff0c;通过这些插件提高工作效率并使Pycharm看起来更美观。 1、简介 Pycharm是Python最受欢迎的集成开发环境之一。它具有良好的代码助手、漂亮的主题和快捷方式&#xff0c;使编写代码变得简单快捷。 话虽如此&…

两台linux虚拟机之间实现免密登录

主要实现两台虚拟机之间的免密登录&#xff0c;总所周知&#xff0c;虚拟机之间登录使用的协议是ssh协议&#xff0c;端口号是 22 主机 创建对应的加密文件 [rootweb-2 ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.s…

【每日一题】逃离火灾

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;二分枚举空间复杂度&#xff1a; O ( m n ) O(mn) O(mn)。 写在最后 Tag 【二分答案】【BFS】【数组】【2023-11-09】 题目来源 2258. 逃离火灾 题目解读 现在有一个人在一个二维网格的左上角&#xff0c;坐标 (0, 0…

2023年11月PHP测试覆盖率解决方案

【题记&#xff1a;最近进行了ExcelBDD PHP版的开发&#xff0c;查阅了大量资料&#xff0c;发现PHP测试覆盖率解决方案存在不同的历史版本&#xff0c;让我花费了蛮多时间&#xff0c;为了避免后人浪费时间&#xff0c;整理本文&#xff0c;而且网上没有给出Azure DevOps里面P…

GPT-4-Turbo的128K长度上下文性能如何?超过73K Tokens的数据支持依然不太好!

本文原文来自DataLearnerAI官方网站&#xff1a;GPT-4-Turbo的128K长度上下文性能如何&#xff1f;超过73K Tokens的数据支持依然不太好&#xff01; | 数据学习者官方网站(Datalearner)https://www.datalearner.com/blog/1051699526438975 GPT-4 Turbo是OpenAI最新发布的号称…

MySQL:锁机制

目录 概述三种层级的锁锁相关的 SQLMyISAM引擎下的锁InnoDB引擎下的锁InnoDB下的表锁和行锁InnoDB下的共享锁和排他锁InnoDB下的意向锁InnoDB下的记录锁&#xff0c;间隙锁&#xff0c;临键锁记录锁&#xff08;Record Locks&#xff09;间隙锁&#xff08;Gap Locks&#xff0…

基于光流法的车辆检测计数算法matlab仿真,对比Horn-Schunck光流和Lucas-Kanade光流

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 Horn-Schunck光流法 4.2 Lucas-Kanade光流法 5.算法完整程序工程 1.算法运行效果图预览 HS光流 LK光流 2.算法运行软件版本 matlab2022a 3.部分核心程序 ........................…

nav2 调节纯追踪算法

纯追踪算法 纯追踪基础 The core idea is to find a point on the path in front of the robot and find the linear and angular velocity to help drive towards it. 核心思想是在机器人前方的路径上找到一个点&#xff0c;并找到一个合适的线速度和角速度&#xff0c;以驱…

Netty 是如何利用EventLoop实现千万级并发的

经过前面几篇文章的介绍&#xff0c;我们掌握了 Netty 的 5 个核心组件&#xff0c;但是有了这 5 个核心组件 Netty 这个工厂还是无法很好的运转&#xff0c;因为缺少了一个最核心的组件&#xff1a;EventLoop&#xff0c;它 是 Netty 中最最核心的组件&#xff0c;也是 Netty …

竞赛选题 深度学习疫情社交安全距离检测算法 - python opencv cnn

文章目录 0 前言1 课题背景2 实现效果3 相关技术3.1 YOLOV43.2 基于 DeepSort 算法的行人跟踪 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习疫情社交安全距离检测算法 ** 该项目较为新颖&#xff0c;适合作为竞赛…

SQL 注入漏洞详解

SQL 注入漏洞详解 漏洞描述 sql注入漏洞是指恶意用户在应用与数据库交互的地方利用非法的操作获取数据库内容从以下两点分析: 没有对用户输入的数据进行充分的过滤和验证&#xff0c;导致一些用户利用此漏洞向数据库插入恶意sql语句非法请求数据库从而获得一些敏感数据在与数…

【服务发现与配置】Consul特性及搭建

文章目录 一、前言二、概念2.1、什么是Consul&#xff1f;2.2、Consul具有哪些特点?2.3、Consul 架构图2.4、Consul的使用场景 三、安装3.1. 下载3.2. 解压3.3. 拷贝到usr目录下3.4. 查看 安装是否成功3.5. 启动 四、Consul 开机自启动4.1. 路径/usr/lib/systemd/system/&…

ubuntu 安装redis详细教程

下载redis安装包 链接如下&#xff1a; http://redis.io/download 本例版本为&#xff1a;redis-7.2.3.tar.gz 下载安装包到目录/opt下&#xff0c;路径可修改&#xff0c;本例为/opt wget https://github.com/redis/redis/archive/7.2.3.tar.gz 解压安装包&#xff0c;并…