Algorithm 将CSR/CSC转换为BSR的算法复杂性

Algorithm 将CSR/CSC转换为BSR的算法复杂性,algorithm,scipy,sparse-matrix,complexity-theory,Algorithm,Scipy,Sparse Matrix,Complexity Theory,我想知道从CSC(压缩稀疏列)或CSR(压缩稀疏行)转换到BSR(阻塞稀疏行)的算法复杂度是多少 说我有 具有非零元素的CSCm x m-矩阵a=CSC(m,m) a CSRm x m-矩阵B=CSR(m,m)与n非零元素 BSR格式: 首先,我不确定scipy.sparse.bsr格式是否使用mkl。看起来大部分的bsr类代码都在scipy文档(python代码)的source链接中。但是它看起来也像是csr到bsr转换的核心是C语言,代码在https://github.com/sc

我想知道从
CSC(压缩稀疏列)
CSR(压缩稀疏行)
转换到
BSR(阻塞稀疏行)
的算法复杂度是多少

说我有

  • 具有非零元素的CSC
    m x m
    -矩阵
    a=CSC(m,m)
  • a CSR
    m x m
    -矩阵
    B=CSR(m,m)
    n
    非零元素
BSR格式:


首先,我不确定
scipy.sparse.bsr
格式是否使用
mkl
。看起来大部分的
bsr
类代码都在
scipy
文档(python代码)的
source
链接中。但是它看起来也像是csr到bsr转换的核心是C语言,代码在
https://github.com/scipy/scipy/blob/v1.3.1/scipy/sparse/sparsetools/csr.h
。代码中的注释是
Complexity:Linear
。Scipy和MKL实现可能完全不同。感谢代码参考,由于BSR非常类似于CSR(它只使用一行中密集子矩阵的向量),所以BSR几乎可以肯定是具有恒定空间开销的条目数的线性时间。CSC到BSR取决于内部算法,我不知道。常识性的实现也可以是线性时间,但可能需要线性临时空间。无论如何,创建一个基准测试将很容易,它可以转换100x100、1000x1000和10000x1000以及可能更大的具有各种稀疏性的示例,并查看其行为。首先,我不确定
scipy.sparse.bsr
格式是否使用
mkl
。看起来大部分的
bsr
类代码都在
scipy
文档(python代码)的
source
链接中。但是它看起来也像是csr到bsr转换的核心是C语言,代码在
https://github.com/scipy/scipy/blob/v1.3.1/scipy/sparse/sparsetools/csr.h
。代码中的注释是
Complexity:Linear
。Scipy和MKL实现可能完全不同。感谢代码参考,由于BSR非常类似于CSR(它只使用一行中密集子矩阵的向量),所以BSR几乎可以肯定是具有恒定空间开销的条目数的线性时间。CSC到BSR取决于内部算法,我不知道。常识性的实现也可以是线性时间,但可能需要线性临时空间。无论如何,创建一个转换100x100、1000x1000和10000x1000以及可能更大的具有各种稀疏性的示例的基准测试并查看其行为是很容易的。