适用于矩阵稀疏模式的哈希函数

时间:2012-05-17 15:08:21

标签: c++ hash hashmap sparse-matrix unordered-map

我正在使用以一般稀疏格式(压缩行)存储的稀疏矩阵。即我存储矩阵:

0 x y 0
0 0 0 0 
z 0 0 0

以下列形式:

  • 矩阵尺寸:[3,4]
  • 每行的偏移量:[0,2,2,3]
  • 每个非零条目的列:[1,2,0]
  • 非零元素:[x,y,z]

我正在寻找哈希函数,这将允许我“缓存”稀疏模式(即上面带有整数的前三个向量)。为此,我想我需要一个好的哈希函数,我可以提供给我计划使用的哈希映射实现,即C ++的std::unordered_map

有没有人有关于如何为这样的问题找到好的哈希函数的一些提示?

1 个答案:

答案 0 :(得分:2)

如果您的CSR表示对于每个矩阵是唯一的,即非零元素以从左到右,从上到下的顺序显示,那么您可以散列所有向量并使用boost::hash_combine组合散列(如果你不想依赖Boost,只需复制粘贴它,它很短。)