まばらに入力されたキーのリストには、64 ビットから 16 ビットの完全なハッシュ関数が必要です。
長さ64ビットの48326個のキーを持つPythonの辞書があります。このキーのリストの最小完全ハッシュを作成したいと思います。(MPHを計算するのに数日待つ必要がないので、16ビットハッシュにマッピングしても問題ありません)
目的は、最終的にこのディクショナリを dict 値を含む配列として C に移植することであり、インデックスは key を input として取得する最小完全ハッシュ関数によって計算されます。構築中のアプリケーションの C ポートで外部ハッシュ ライブラリを使用できません
質問: キーを入力として受け取り、ハッシュ パラメータを提供し、(ハッシュに使用される定義済みアルゴリズムに基づいて) 出力として提供する Python ライブラリはありますか。
ライブラリの完全性 2.0.0を見つけましたが、キーが 64 ビット形式であるため、これがハングしました。(2000個のキーのサブセットでテストした場合でも)
編集 コメントで示唆されているように、私はスティーブ・ハノフのアルゴを見て、64 ビット整数を取るようにハッシュ関数を変更しました (このwiki ページに従って FNV プライムとオフセットの値を変更します)
結果を取得している間、残念ながら、マップは -ve インデックス値を返しますが、それを機能させることはできます。つまり、-ve インデックスをチェックして、ハッシュ計算にさらに 4 サイクルを追加する必要があります。
これは避けたい