特殊矩阵的压缩存储

一维数组的存储结构

ElemType arr[10];

各数组元素大小相同,且物理上连续存放。

 数组元素a[i]的存放地址 = LOC + i * sizeof(ElemType)。(LOC为起始地址)

二维数组的存储结构

ElemType b[2][4];

二维数组也具有随机存取的特性(需要明确是行优先还是列优先)。 

普通矩阵的存储

特殊矩阵的存储

对称矩阵的压缩存储

策略:只存储主对角线及下三角区(或上三角区)的元素。可以按行优先或列优先将各元素存入一维数组中。

重点即在于矩阵下标和一维数组下标的映射

按照行优先原则

 a_{i,j} (i\geqslant j)\rightarrow B[k]  考虑a_{i,j}是第几个元素,其前面有i-1 行,且第 k 行有k个元素,则前 i -1行共有[1+2+3+...+i-1]个元素,a_{i,j}是第i行第j个,则它是第\frac{i(i-1)}{2}+j个元素。由于数组的下标是从0开始的,因此k=\frac{i(i-1)}{2}+j-1

a_{i,j} (i< j)\rightarrow B[k],即在上三角区,由于是对称矩阵,所以a_{i,j}=a_{j,i},所以k=\frac{j(j-1)}{2}+i-1

按照列优先原则

 a_{i,j} (i\geqslant j)\rightarrow B[k]  考虑a_{i,j}是第几个元素,其前面有 j-1 列,且第 k 列有n-k+1个元素,则前 j -1列共有[n+n-1+...+n-(j-1)+1]个元素,a_{i,j}是第 j 列的 i-j+1个(从对角线开始数),则它是第\frac{(j-1)(2n-j+2)}{2}+i-j+1个元素。由于数组的下标是从0开始的,因此k=\frac{(j-1)(2n-j+2)}{2}+i-j

三角矩阵的压缩存储

策略:按行优先原则将上三角区(或下三角区)的元素存入一维数组中。

我们创建一个一维数组B[k],共有\frac{n(n+1)}{2}+1个元素,我们将上三角的相同元素c存在一维数组末尾。

下三角

上三角

三对角矩阵的压缩存储

三对角矩阵,又称带状矩阵,当|i-j|>1时,有a_{i,j}=0,(1\leq i,j\leq n)

策略:只存储带状部分,即当|i-j|≤1时的元素。按行优先(或列优先)原则存储。我们创建一个一维数组B[k],共有3n-2个元素。

按照行优先原则,考虑a_{i,j}是第几个元素,前i-1行有3(i-1)-1个元素,a_{i,j}是第i行的j-i+2个元素,所以a_{i,j}是第2i-j+2个元素,所以k=2i-j-3

稀疏矩阵的压缩存储

顺序存储

链式存储!!!

总结

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

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

相关文章

Maven(21)如何使用Maven进行代码检查?

Maven提供了多种方式来进行代码检查&#xff0c;包括使用静态代码分析工具如Checkstyle、PMD和FindBugs。以下是如何使用这些工具进行代码检查的详细步骤和代码示例&#xff1a; 步骤 1: 添加插件依赖 首先&#xff0c;你需要在pom.xml文件中添加相应的插件依赖。以下是一个包…

JavaCV学习第一课

1、 JavaCV [1] 是一款基于JavaCPP [2]调用方式&#xff08;JNI的一层封装&#xff09;&#xff0c;由多种开源计算机视觉库组成的包装库&#xff0c;封装了包含FFmpeg、OpenCV、tensorflow、caffe、tesseract、libdc1394、OpenKinect、videoInput和ARToolKitPlus等在内的计算…

vue2开发 对接后端(go语言)常抛异常情况以及处理方法汇总

背景 在Vue2开发中&#xff0c;与后端&#xff08;Go语言&#xff09;接口对接时出现异常通常是由于前后端之间的数据交互出现了问题。常见的异常包括数据格式不匹配、请求方法不匹配、请求头部信息错误、跨域请求问题等。 常见异常 如出现报错提示&#xff1a; json : can…

SQLite 语法

SQLite 语法 SQLite 是一种轻量级的数据库管理系统&#xff0c;它遵循 SQL&#xff08;结构化查询语言&#xff09;标准。SQLite 的语法相对简单&#xff0c;易于学习和使用。本文将详细介绍 SQLite 的基本语法&#xff0c;包括数据定义语言&#xff08;DDL&#xff09;、数据…

河南高校大数据实验室建设案例分享

泰迪智能科技在与中国各地高校的合作中积累了丰富的经验&#xff0c;尤其是在大数据和人工智能领域。过去多年里与河南省内多所高校在大数据领域进行了积极的探索和建设&#xff0c;形成了一系列具有特色的大数据实验室。这些实验室不仅促进了高校内部的科研创新&#xff0c;也…

VulkanTutorial(12·recreation swap chain,Vertex buffers)

Swap chain recreation 我们要优化程序&#xff0c;因为window surface&#xff08;窗口大小&#xff09;可能会发生变化&#xff0c;导致swapchain不再兼容&#xff0c;当这个事件发生时&#xff0c;我们应该重新创建swapchain 实例 我们写新的recreateSwapChain和cleanupS…

qt QPicture详解

1、概述 QPicture类是Qt框架中的一个重要图形类&#xff0c;它主要用于记录和回放QPainter的绘图指令。这个类能够跨平台、无分辨率依赖地绘制图形&#xff0c;非常适合用于实现打印预览和图像操作等场景。QPicture可以将绘图操作序列化为一种独立于平台的格式&#xff0c;保存…

获取vue.config.js里代理的路径

vue.config.js 主要用于配置 Vue CLI 的构建和开发服务器选项&#xff0c;不能直接拿到里面的值&#xff0c;如果是自己重新写的config&#xff0c;引入到页面就可以拿到 下面说&#xff0c;我的解决办法&#xff0c;如果有更好的&#xff0c;一定要给我说啊 在public目录下创…

【数据结构】宜宾大学-计院-实验六

实验 6 栈和队列&#xff08;综合实验&#xff09; 实验目的&#xff1a;实验内容&#xff1a;进制转换问题&#xff1a;第1题测试结果&#xff1a;第1题代码实现&#xff1a; 括号匹配问题&#xff1a;第2题测试结果&#xff1a;第2题代码实现&#xff1a; 回文字符串问题&…

Day22 opencv图像预处理

图像预处理 在计算机视觉和图像处理领域&#xff0c;图像预处理是一个重要的步骤&#xff0c;它能够提高后续处理&#xff08;如特征提取、目标检测等&#xff09;的准确性和效率。OpenCV 提供了许多图像预处理的函数和方法&#xff0c;常见的操作包括图像空间转换、图像大小调…

LabVIEW for Linux 介绍

LabVIEW for Linux 介绍 1. 兼容性 LabVIEW for Linux 设计用于多种 Linux 发行版&#xff0c;包括 CentOS、Ubuntu 等。在安装之前&#xff0c;务必检查与您特定发行版版本的兼容性。 2. 程序移植 可移植性&#xff1a;在许多情况下&#xff0c;LabVIEW 程序&#xff08;VI…

axios竟态问题

竟态问题 在我们日常开发经常遇到一些竟态问题 例子1 现象1 表格分页&#xff0c;如果设置请求loading, 先切换到分页第99页&#xff0c;迅速在又切换到第1页&#xff0c;最后列表显示的是第99页数据。 原因 由于第99页请求数据花费时间可能500ms,第1页数据只需要100ms,第1页…

《深入浅出HTTPS​​​​》读书笔记(4):密码学

解决HTTP安全的方法就是采用HTTPS&#xff0c;理解HTTPS之前必须掌握基本的密码学知识&#xff0c;HTTPS本质上就是对密码学算法的组合。 【密码学的四个目标】 1&#xff09;机密性&#xff08;隐私性&#xff09; 在网络中传递的数据如果具备机密性&#xff0c;那么传输的数据…

《Python游戏编程入门》注-第4章2

《Python游戏编程入门》的“4.2.2 键盘事件”中介绍了通过键盘事件来监听键盘按键的方法。 1 键盘事件 玩家点击键盘中某个按键实际上包含了两个动作&#xff1a;点击按键和释放按键&#xff0c;也就是按键按下和松开。按键按下的对应的事件是KEYDOWN&#xff0c;按键松开对应…

递归到分治

一、递归与分治&#xff1a; 1、递归&#xff1a;如果一个问题分可以简化为某些更小的、更简单的子问题来解决&#xff0c;那么可以用递归 2、分治&#xff1a;如果想并行处理&#xff0c;可以用到分治 二、假设我们有一段文本&#xff0c;需要统计每个单词出现的频率。我们将…

yarn : 无法加载文件,未对文件 进行数字签名。无法在当前系统上运行该脚本。

执行这个命令时报错&#xff1a;yarn --registryhttps://registry.npm.taobao.org yarn : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\yarn.ps1。未对文件 C:\Users\Administ rator\AppData\Roaming\npm\yarn.ps1 进行数字签名。无法在当前系统上运行该脚本。有…

数据结构(8.5_2)——基数排序

基数排序 第一趟“分配”&#xff1a;按"个位"进行分配 第一趟“收集”&#xff1a; 第二趟“分配”&#xff1a;按"十位"进行分配("个位"越大的越先入队) 第二趟“收集”&#xff1a; 第三趟“分配”&#xff1a;按"百位"进行分配(&…

力扣——113. 路径总和

113. 路径总和 II 给你二叉树的根节点 root 和一个整数目标和 targetSum &#xff0c;找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [5,4,8,11,null,13,4,7,2,null,null,5,1], t…

漫途焊机安全生产监管方案,提升安全生产管理水平!

随着智能制造时代的到来&#xff0c;企业安全生产管理的重要性日益凸显。特别是在现代工厂中&#xff0c;焊机的安全生产监管成为了一个不容忽视的重要环节。传统的焊机安全生产监管方式存在诸多不足&#xff0c;如人工巡检频率低、数据延迟、安全隐患发现不及时等问题。因此&a…

《Linux系统编程篇》管道(Linux 进程间通信(IPC))——基础篇

文章目录 引言理解 Linux 进程间通信&#xff08;IPC&#xff09;基础什么是进程间通信&#xff08;IPC&#xff09;&#xff1f; 管道&#xff08;Pipe&#xff09;的基本介绍使用场景&#xff1a;管道特点&#xff1a;管道类型&#xff1a;匿名管道命名管道&#xff08;FIFO&…