ページ 11

ハッシュテーブルのサイズ

Posted: 2013年5月19日(日) 18:11
by monsterenergy
C言語で、ハッシュテーブルをチェイン法で実装しようと思っているのですが、
ハッシュテーブルのサイズ(推奨値)を求める計算式というのは存在するのでしょうか。
(調べたところ、見つからなかったです。)

計算式はなくて、メモリとかを考慮してとか、実際に速度を検証してとかしたうえで、
サイズを決定する感じでしょうか。

コメントいただけると助かります。
よろしくお願いいたします。

Re: ハッシュテーブルのサイズ

Posted: 2013年5月19日(日) 18:18
by softya(ソフト屋)
ハッシュテーブルのサイズと言うのはハッシュ値を格納した部分のことでしょうか? それとも連結リストの先も含めたサイズでしょうか?
どちらにしてもハッシュ値の計算式とデータの傾向に左右されるので、実データを食わせずに事前に決めるのは難しいと思います。

Re: ハッシュテーブルのサイズ

Posted: 2013年5月19日(日) 19:31
by monsterenergy
>softya(ソフト屋) さん

連結リンクのサイズは決まっています。(データの最大件数)
連結リンクの先頭インデックスを格納するハッシュテーブルのサイズの
決め方で悩んでいます。

やはり実際に検証して調整する必要があるのですね。
コメントいただきどうもありがとうございます。

Re: ハッシュテーブルのサイズ

Posted: 2013年5月19日(日) 23:00
by softya(ソフト屋)
ハッシュテーブル化する以上は、連結リンクは出来るだけ短いほうが良いはずです。
そうするとハッシュテーブルのサイズは肥大化しますが限界も有るはずで、そこそこ高速で連結リンクが短いものという妥協点は実データでしか得られません。
ただ、予定データ件数が分かっているのなら、ハッシュが理想平均分散した場合の連結リストの深さは計算が簡単に出来るので、そこからテーブルサイズを決めるって事はできるのでは?