dポイントプレゼントキャンペーン実施中!

ハッシュ関数の定義はWikipedidaによると「データが与えられた場合にそのデータを代表する数値を得る操作、または、その様な数値を得るための関数のこと」となっていますが、
色んな記事見ているとキー値(x)をデータの個数(n)で割った時の余り、
つまりx mod nみたいな計算が一般的みたいな書かれ方しているような気がします。

ハッシュ関数と言ったら上記のようなx mod nという理解でいいのでしょうか?
また、なぜ冒頭で定義されたはずの関数が簡単なモジュロ計算で表されるようになってしまったのでしょうか?

A 回答 (2件)

> ハッシュ関数と言ったら上記のようなx mod nという理解でいいのでしょうか?


Wikipedia見てたならそういう理解にはならないはずです。
もう一度読んでください。
「3 ハッシュ関数のアルゴリズム」に具体例がいくつもあって、そこを見るだけでもmodだけではないことは分かる。

ハッシュ関数 - Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%83% …


> また、なぜ冒頭で定義されたはずの関数が簡単なモジュロ計算で表されるようになってしまったのでしょうか?
簡単で分かりやすいから例として挙げられただけだと思いますが。
ハッシュ関数の定義を満たす関数なんていくらでもあるわけで、モジュロ計算はその内の1つ。
    • good
    • 0
この回答へのお礼

>ハッシュ関数の定義を満たす関数なんていくらでもあるわけで、>モジュロ計算はその内の1つ。

なるほど、あくまでも定義を満たしてる関数の一つだったということで腑に落ちました。

お礼日時:2014/09/10 21:12

>ハッシュ関数と言ったら上記のようなx mod nという理解でいいのでしょうか?


厳密には違いますね。あくまでも一方向関数というだけで剰余計算だけがそうとも限りません。

>関数が簡単なモジュロ計算で表されるようになってしまった
便利だからだと思います。余りは一様に分布するので衝突する確率も低いですし。
    • good
    • 0
この回答へのお礼

modがよくつかわれる理由がわかりました。ありがとうございます。

お礼日時:2014/09/10 21:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!