跳到主要内容

稀疏数组

稀疏数组(包括稀疏向量、稀疏矩阵等)是含有足够多 0 的数组,通过用特殊的方式表示它们,能提升时间和空间的效率。

阐述

实例

稀疏矩阵的稀疏列存储

struct SparseMatrixCSC{Tv,Ti<:Integer} <: AbstractSparseMatrixCSC{Tv,Ti}
m::Int # Number of rows
n::Int # Number of columns
colptr::Vector{Ti} # Column j is in colptr[j]:(colptr[j+1]-1)
rowval::Vector{Ti} # Row indices of stored values
nzval::Vector{Tv} # Stored values, typically nonzeros
end

一个 m×nm\times n 的矩阵存储包括 3 个部分:

  • colptr:一个 n+1n+1 大小的向量,存储了每一列在总存储中的起始位置
  • rowval:每一个元素的行位置
  • nzval:所有非零元的总存储,按列排布

元素的逐列读取通常比较快,但是逐行读取就比较慢。插入元素通常非常慢。

性质

相关内容

参考文献