負荷係数は、ハッシュ テーブルがどの程度満たされているかを測定します。負荷係数を超えた場合は、ハッシュ テーブルのサイズを増やし、エントリを新しいより大きなハッシュ テーブルに再ロードします。これをリハッシュと呼びます。負荷係数 l (ラムダ) は、ハッシュ テーブルがどの程度満たされているかを測定します。
の数の比率です
要素をハッシュ テーブルのサイズに変換します。つまり、l = n / N、n は要素の数、N はハッシュ テーブル内の位置の数を示します。
ハッシュ テーブルが空の場合、l はゼロであることに注意してください。オープン アドレッシング スキームの場合、l は 0 と 1 の間にあります。ハッシュ テーブルがいっぱいの場合、l は 1 になります。個別のチェーン スキームの場合、l は任意の値にすることができます。
l が増加すると、衝突の確率が増加します。研究によると、オープン アドレッシング スキームの場合は負荷係数を 0.5 未満に、セパレート チェーン スキームの場合は 0.9 未満に維持する必要があります。
負荷係数を特定のしきい値以下に維持することは、ハッシュのパフォーマンスにとって重要です。 Java API の java.util.HashMap クラスの実装では、しきい値 0.75 が使用されます。負荷率がしきい値を超えると、ハッシュ テーブルのサイズを増やし、マップ内のすべてのエントリを新しいより大きなハッシュ テーブルに 再ハッシュ する必要があります。ハッシュ テーブルのサイズが変更されたため、ハッシュ関数を変更する必要があることに注意してください。再ハッシュの可能性を減らすには、コストがかかるため、ハッシュ テーブルのサイズを少なくとも 2 倍にする必要があります。定期的な再ハッシュを使用する場合でも、ハッシュはマップの効率的な実装です。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3