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

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

我正在处理以一般稀疏格式(压缩行)存储的稀疏矩阵。 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/

相关文章:

java - 使用 Hashmap 生成排列

java - 如何将 HashMap 转换/转换为 LinkedHashMap?

c++ - 带有嵌套 vector 的 map

sql-server - 计算 SQL Server 数据库中字符串的哈希值——值得付出努力吗?

c++ - 来自原始指针的 QSharedPointer

c++ - 在 C++ 中获取 double 的精确位表示

c++ - Rabin-Karp 算法代码中的负哈希值

javascript - 通过java将任意长度的数组传递给php并在php内处理

c++ - 如何使用 C++ 模板模拟类型引用?

c++ - 如何继承#include 类?