我正在处理以一般稀疏格式(压缩行)存储的稀疏矩阵。 IE。我存储矩阵:
0 x y 0
0 0 0 0
z 0 0 0
形式为:
- 矩阵维度:[3,4]
- 每一行的偏移量:[0,2,2,3]
- 每个非零条目的列:[1,2,0]
- 非零元素:[x,y,z]
我正在寻找允许我“缓存”稀疏模式(即上面的前三个整数 vector )的哈希函数。为此,我想我需要一个好的哈希函数,我可以将其提供给我计划使用的 HashMap 实现,即 C++ 的 std::unordered_map
。
对于如何为这样的问题找到一个好的哈希函数,有没有人有一些提示?
最佳答案
如果您的 CSR 表示对于每个矩阵都是唯一的,即非零元素以从左到右、从上到下的顺序出现,那么您可以散列所有 vector 并使用 boost::hash_combine
组合散列。 (如果你不想依赖 Boost,只需复制粘贴它,它非常短)。
关于c++ - 适用于矩阵稀疏模式的哈希函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10638373/