什么是快速矩阵或二维数组,用于在C++中存储邻接矩阵

What is a fast matrix or two-dimensional array to store an adjacency matrix in C++

本文关键字:用于 C++ 邻接矩阵 存储 二维数组 什么      更新时间:2023-10-16

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

现在我有以下内容:

  • 我的模拟每个时间步长都会输出一个包含 112 位的boost::dynamic_bitset
  • 我使用 bitset 作为 Google 稀疏哈希中的键来映射到一个整数值,该值可用作我想要构造的邻接矩阵的索引。

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

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

我希望我把我的问题说得足够清楚。

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