0

一般的なスパース形式(圧縮された行)で格納されたスパース行列を使用しています。つまり、行列を保存します。

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

次の形式で:

  • マトリックスの寸法:[3,4]
  • 各行のオフセット:[0,2,2,3]
  • ゼロ以外の各エントリの列:[1,2,0]
  • ゼロ以外の要素:[x、y、z]

スパースパターン(つまり、上記の整数を持つ最初の3つのベクトル)を「キャッシュ」できるハッシュ関数を探しています。そのためには、使用する予定のハッシュマップ実装に提供できる優れたハッシュ関数、つまりC++が必要だと思いますstd::unordered_map

このような問題に適したハッシュ関数を見つけるためのヒントはありますか?

4

1 に答える 1

2

CSR表現が行列ごとに一意である場合、つまりゼロ以外の要素が左から右、上から下の順序で表示される場合は、すべてのベクトルをハッシュし、を使用してハッシュを組み合わせることができますboost::hash_combine(依存関係が必要ない場合)ブースト、コピーして貼り付けるだけで、非常に短いです)。

于 2012-05-17T15:12:31.587 に答える