什么是快速矩阵或二维数组来存储C ++中的邻接矩阵

时间:2013-10-29 12:07:13

标签: c++ arrays matrix multidimensional-array adjacency-matrix

我试图推断一个我只能模拟的过程的马尔可夫链。最终图形将包含的状态/顶点的数量非常大,但我事先并不知道顶点的数量。

现在我有以下内容:

  • 我的模拟每时间步输出一个包含112位的boost::dynamic_bitset
  • 我使用bitset作为Google Sparse Hash中的键来映射到一个整数值,该值可以用作我想构建的邻接矩阵的索引。

现在我需要一个好的/快速矩阵或二维数组来存储整数。它应该:

  • 使用我在Google Sparse Hash中存储的整数值作为行/列号。 (例如,我想通过matrix(3,4) = 3
  • 之类的操作来访问/更改存储的整数
  • 我不知道提前需要的行数或列数。所以它应该能够动态添加行和列。
  • 大多数值都是0,所以它应该是一个稀疏的实现。
  • 行数和列数将非常大,因此应该非常快。
  • 简单易用。我不需要很多数学运算,它应该是一种快速简单的存储和访问整数的方法。

我希望我的问题足够清楚。

1 个答案:

答案 0 :(得分:0)

我建议http://www.boost.org/doc/libs/1_54_0/libs/numeric/ublas/doc/matrix_sparse.htm - 提升UBLAS稀疏矩阵。稀疏矩阵存储有几种不同的实现,因此阅读文档可以帮助您选择适合您目的的类型。 (TLDR:稀疏矩阵具有快速检索或快速插入。)