1. ホーム
  2. algorithm

[解決済み] 良いハッシュ関数とは?

2022-05-14 10:27:42

質問

良いハッシュ関数とは?大学のデータ構造の講義でハッシュ関数とその応用をたくさん見ましたが、良いハッシュ関数を作るのはかなり難しいということがほとんどでした。衝突を避けるための経験則として、私の教授は次のように言っていました。

function Hash(key)
  return key mod PrimeNumber
end

(modはCや類似の言語での%演算子)

で、素数はハッシュテーブルのサイズになります。これは衝突を避けるためのある程度良い関数であり、高速なものであることはわかりますが、より良いものを作るにはどうしたらよいでしょうか?数値キーに対する文字列キーのためのより良いハッシュ関数があるのでしょうか?

どのように解決するのですか?

基本的にあらゆる種類のデータについて、ハッシュ表の検索を行うために - Paul Hsiehによるこのものが、私がこれまで使用した中で最も優れています。

http://www.azillionmonkeys.com/qed/hash.html

もしあなたが暗号的な安全性やより高度な何かを気にしているなら、YMMV。

暗号の安全性とか、もっと高度なことをお考えなら、YMMVです。