【问题标题】:Storing sparse matrix & efficient iteration存储稀疏矩阵和高效迭代
【发布时间】:2014-05-08 05:54:16
【问题描述】:

什么是存储稀疏矩阵的紧凑方法,允许有效地迭代每一行和每一列?

【问题讨论】:

    标签: c++ matrix iterator sparse-matrix


    【解决方案1】:

    关于该主题的Wikipedia article 提到了几种为稀疏矩阵构建数据结构的方法,部分利用了矩阵的实际结构来表示。似乎没有适用于各种矩阵的规范表示方式。

    【讨论】:

    • 感谢您的回答!我确实读过那篇文章,但我需要的有点不同。我的矩阵需要的只是对行和列的迭代。我不需要按索引访问。因此,可能还有其他特定的方法可以将此类矩阵存储在内存中。
    • @typedef 好的,我明白了,但最终目标是什么?行和列是否会按条目索引?
    • 抱歉,“将按条目编入索引”是什么意思?我没有提到允许遍历行或列的只读矩阵就足够了。
    • @typedef 基本上我是在问澄清;请更具体地说明“遍历每一行和每一列”的含义。我想一些数据将被读取或写入行和列。
    • 好的,谢谢,我知道了。所以,我需要一个 ReadOnlySparseMatrix 类,它(例如)有两种方法:GetRowConstIterator(ui32 row) 和 GetColumnConstIterator(ui32 col)。这些函数返回的迭代器应该有 IsValid() 方法和 operator*。所有描述的方法都应该是 O(1)。当然,有一个简单的解决方案:存储两个常用的稀疏矩阵,一个是行优先的,另一个是列优先的,但我认为这可以优化为不多次存储相同的数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 2012-10-14
    • 2012-05-15
    • 1970-01-01
    • 2021-10-25
    • 2015-09-01
    相关资源
    最近更新 更多