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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
monsterenergy

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

#1

投稿記事 by monsterenergy » 13年前

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

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

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#2

投稿記事 by softya(ソフト屋) » 13年前

ハッシュテーブルのサイズと言うのはハッシュ値を格納した部分のことでしょうか? それとも連結リストの先も含めたサイズでしょうか?
どちらにしてもハッシュ値の計算式とデータの傾向に左右されるので、実データを食わせずに事前に決めるのは難しいと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

monsterenergy

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

#3

投稿記事 by monsterenergy » 13年前

>softya(ソフト屋) さん

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

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#4

投稿記事 by softya(ソフト屋) » 13年前

ハッシュテーブル化する以上は、連結リンクは出来るだけ短いほうが良いはずです。
そうするとハッシュテーブルのサイズは肥大化しますが限界も有るはずで、そこそこ高速で連結リンクが短いものという妥協点は実データでしか得られません。
ただ、予定データ件数が分かっているのなら、ハッシュが理想平均分散した場合の連結リストの深さは計算が簡単に出来るので、そこからテーブルサイズを決めるって事はできるのでは?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る