Compressed Sparse Row (CSR)行压缩存储相关错误概念纠正

2024-06-13 00:08

本文主要是介绍Compressed Sparse Row (CSR)行压缩存储相关错误概念纠正,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之前关于矩阵压缩存储的知识都是网上看的,比如这篇

稀疏矩阵存储格式总结+存储效率对比:COO,CSR,DIA,ELL,HYB

里面对ia数组,即行偏移数组的表述是这样的。强调了ia数组中存的是某行的第一个元素的偏移。

今天测试一个国外数学教授开源的AGMG库时才发现如果按之前的理解,还原后的矩阵将和理论上的无法统一。

翻看维基发现,CSR的ia定义并没有说其存储的是第一个元素的偏移信息。ia只是存储了非零行的start索引,这里的start与该行第一个非零元在ja和a中的索引没有关系,其实只是表示了该行中的非零元对应的col值和val值分布在ja[row_start]~ja[row_end],a[row_start]~a[row_end]之间。也就是说,该行中的非零元对应的col和val在ja和a中的顺序可以是随意的,不是必须从左到右,即对应col值从小到大。

以第一幅图的矩阵为例

1700
0280
5039
0604

按之前片面的理解,ia,ja,a只能固定格式如下,(用0做基)

ia: 0 2 4 7 9

ja: 0 1 1 2 0 2 3 1 3

a:  1 7 2 8 5 3 9 6 4

其实还可以这么写

ia: 0 2 4 7 9

ja: 1 0 2 1 3 2 0 3 1

a:  7 1 8 2 9 3 5 4 6

虽然ia一样,但每行的非零元们在ja和a中属于该行的slice中的索引排序不分先后。

之所以出现之前的片面理解是因为我们习惯了矩阵的Z字形读法,都按第一种来了。

这篇关于Compressed Sparse Row (CSR)行压缩存储相关错误概念纠正的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1055734

相关文章

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

使用SpringBoot+InfluxDB实现高效数据存储与查询

《使用SpringBoot+InfluxDB实现高效数据存储与查询》InfluxDB是一个开源的时间序列数据库,特别适合处理带有时间戳的监控数据、指标数据等,下面详细介绍如何在SpringBoot项目... 目录1、项目介绍2、 InfluxDB 介绍3、Spring Boot 配置 InfluxDB4、I

SpringBoot3匹配Mybatis3的错误与解决方案

《SpringBoot3匹配Mybatis3的错误与解决方案》文章指出SpringBoot3与MyBatis3兼容性问题,因未更新MyBatis-Plus依赖至SpringBoot3专用坐标,导致类冲... 目录SpringBoot3匹配MyBATis3的错误与解决mybatis在SpringBoot3如果

一文带你迅速搞懂路由器/交换机/光猫三者概念区别

《一文带你迅速搞懂路由器/交换机/光猫三者概念区别》讨论网络设备时,常提及路由器、交换机及光猫等词汇,日常生活、工作中,这些设备至关重要,居家上网、企业内部沟通乃至互联网冲浪皆无法脱离其影响力,本文将... 当谈论网络设备时,我们常常会听到路由器、交换机和光猫这几个名词。它们是构建现代网络基础设施的关键组成

nginx配置错误日志的实现步骤

《nginx配置错误日志的实现步骤》配置nginx代理过程中,如果出现错误,需要看日志,可以把nginx日志配置出来,以便快速定位日志问题,下面就来介绍一下nginx配置错误日志的实现步骤,感兴趣的可... 目录前言nginx配置错误日志总结前言在配置nginx代理过程中,如果出现错误,需要看日志,可以把

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

Python错误AttributeError: 'NoneType' object has no attribute问题的彻底解决方法

《Python错误AttributeError:NoneTypeobjecthasnoattribute问题的彻底解决方法》在Python项目开发和调试过程中,经常会碰到这样一个异常信息... 目录问题背景与概述错误解读:AttributeError: 'NoneType' object has no at