タグ

ハッシュ関数とアルゴリズムに関するrin51のブックマーク (2)

  • magic number - yamanetoshi's diary

    今日は県立図書館に昨日購入したナニとメモ用端末を持ち込み勉強。 # 結局メモは取ってないんですが ... で、件のテキストに magic number なソレに関する記述あり。Knuth 先生は_乗数が 2^32 の黄金比に近いほどよい結果が得られる_と言われているとの事。hash_long の定義は include/linux/hash.h にて以下。 #if BITS_PER_LONG == 32 /* 2^31 + 2^29 - 2^25 + 2^22 - 2^19 - 2^16 + 1 */ #define GOLDEN_RATIO_PRIME 0x9e370001UL #elif BITS_PER_LONG == 64 /* 2^63 + 2^61 - 2^57 + 2^54 - 2^51 - 2^18 + 1 */ #define GOLDEN_RATIO_PRIME 0x9e

    magic number - yamanetoshi's diary
    rin51
    rin51 2013/06/05
    > Knuth 先生は乗数が 2^32 の黄金比に近いほどよい結果が得られると言われているとの事
  • 短いハッシュの作り方 - OKWAVE

    いくらでも方法はあるので、質問者さんが挙げられているサイトが実際にどうやっているかはわかりませんが、 6文字程度の文字列では、「衝突しないハッシュ関数」を作るのは非常に困難であり、「衝突が発生する」ことがあるのを前提にして設計しないとといけません。 こういう場合、「ハッシュテーブル」におけるハッシュの取り扱いが参考になるでしょう。 ハッシュテーブルにおけるハッシュ関数は、名前が同じ「ハッシュ」でも、取り扱い方はmd5やsha1などとは異なります。 ハッシュテーブル用のハッシュ関数にはいろいろありますが、 中でもKnuth のアルゴリズムが有名です。 そういったハッシュ関数を使って最大値[62^6]のハッシュを生成し、それを 62進数に6桁に変換して、それを文字列化すればいいでしょう。 Knuth のハッシュ関数: http://d.hatena.ne.jp/yamanetoshi/2009

    短いハッシュの作り方 - OKWAVE
  • 1