加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 列和行交换的最佳稀疏矩阵表示

发布时间:2020-12-16 06:59:42 所属栏目:百科 来源:网络整理
导读:我正在寻找稀疏矩阵表示,允许有效的行和列交换.经典表示(通过压缩行,压缩列或三元组)似乎只允许执行一个或另一个但从不展位. 有谁知道这个好的数据结构? – 编辑 – 为了澄清,我希望能够交换行,如交换行5和行7,以及交换列,如交换列6和列8. 解决方法 您可能
我正在寻找稀疏矩阵表示,允许有效的行和列交换.经典表示(通过压缩行,压缩列或三元组)似乎只允许执行一个或另一个但从不展位.
有谁知道这个好的数据结构?

– 编辑 –
为了澄清,我希望能够交换行,如交换行5和行7,以及交换列,如交换列6和列8.

解决方法

您可能只想添加另一级别的间接来处理交换,无论哪种效率都不高.例如,如果您有一个稀疏表示可以有效地交换行而不是列,那么就有一个数组从真实列映射到有效列.访问元素时,使用该数组查找正确的基础元素.

class SparseMatrix {
  public:
    Element& operator()(Index row,Index col)
    {
      return matrix(row,col_map[col]);
    }

    void swapRows(Index row1,Index row2)
    {
      matrix.swapRows(row1,row2);
    }

    void swapCols(Index col1,Index col2)
    {
      swap(col_map[col1],col_map[col2]);
    }

  private:
    FastRowSwapSparseMatrix matrix;
    vector<Index> col_map;
};

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读