私は次のようにハッシュの概念にいくつかの理解の問題を抱えています:
キーを数値として持つハッシュテーブル(1-D配列、たとえばA [100] )を実装したとします。単純なハッシュ関数H(Key)%Table_Sizeが1つあります。これは、ターゲットインデックスをハッシュテーブルに返します(この特定のキーに関連付けられた値にアクセスしている間)。
0(キー)をテーブルに格納したいとします。このキーをH(ハッシュ関数)に渡すと、ランダムなインデックス、たとえば25が返されます。
配列A(インデックス25)のこの場所には2つの可能性があります。
- A [25]には、すでに保存されている0以外のキーが含まれています(以前)
- A[25]には0が含まれています
最初の可能性には衝突があり、簡単に識別できます(現在のkey:0とすでに保存されているkey:kが異なるため)。したがって、最初の可能性では問題ありません。
しかし、2つ目は、衝突の有無をどうやって知ることができるでしょうか。
私が知っている限り、ハッシュテーブルまたは配列はメインメモリの一部になります。A[25]がメモリ位置500に格納されているとします。
この場所(500)が実際に空であるか、他のキーで既に埋められている天気をどのように知ることができますか?
メモリーセルのどのステータスまたは値がEMPTYまたはNULLまたはUNUSEDの場所を表しますか?
そして、衝突チェックを行ってこの場所にキーとして0を格納したい場合はどうなりますか?
現在、メモリの場所がEMPTY、NULL、またはUNUSEDの場合、RESET状態(すべてのセルが0)になると想定しています。これは本当ですか ?
ばかげた質問かもしれませんが、そのような場合の衝突をどうやってチェックするのか気になります。
-
前もって感謝します!!(ハイテイン、ハイデラバード)