C言語で、ハッシュテーブルをチェイン法で実装しようと思っているのですが、
ハッシュテーブルのサイズ(推奨値)を求める計算式というのは存在するのでしょうか。
(調べたところ、見つからなかったです。)
計算式はなくて、メモリとかを考慮してとか、実際に速度を検証してとかしたうえで、
サイズを決定する感じでしょうか。
コメントいただけると助かります。
よろしくお願いいたします。
ハッシュテーブルのサイズ
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: ハッシュテーブルのサイズ
ハッシュテーブルのサイズと言うのはハッシュ値を格納した部分のことでしょうか? それとも連結リストの先も含めたサイズでしょうか?
どちらにしてもハッシュ値の計算式とデータの傾向に左右されるので、実データを食わせずに事前に決めるのは難しいと思います。
どちらにしてもハッシュ値の計算式とデータの傾向に左右されるので、実データを食わせずに事前に決めるのは難しいと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
monsterenergy
Re: ハッシュテーブルのサイズ
>softya(ソフト屋) さん
連結リンクのサイズは決まっています。(データの最大件数)
連結リンクの先頭インデックスを格納するハッシュテーブルのサイズの
決め方で悩んでいます。
やはり実際に検証して調整する必要があるのですね。
コメントいただきどうもありがとうございます。
連結リンクのサイズは決まっています。(データの最大件数)
連結リンクの先頭インデックスを格納するハッシュテーブルのサイズの
決め方で悩んでいます。
やはり実際に検証して調整する必要があるのですね。
コメントいただきどうもありがとうございます。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: ハッシュテーブルのサイズ
ハッシュテーブル化する以上は、連結リンクは出来るだけ短いほうが良いはずです。
そうするとハッシュテーブルのサイズは肥大化しますが限界も有るはずで、そこそこ高速で連結リンクが短いものという妥協点は実データでしか得られません。
ただ、予定データ件数が分かっているのなら、ハッシュが理想平均分散した場合の連結リストの深さは計算が簡単に出来るので、そこからテーブルサイズを決めるって事はできるのでは?
そうするとハッシュテーブルのサイズは肥大化しますが限界も有るはずで、そこそこ高速で連結リンクが短いものという妥協点は実データでしか得られません。
ただ、予定データ件数が分かっているのなら、ハッシュが理想平均分散した場合の連結リストの深さは計算が簡単に出来るので、そこからテーブルサイズを決めるって事はできるのでは?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。