ロビンフッドハッシュ法

ロビンフッドハッシュ法（Robin Hood Hashing）は、1986年にPedro Celisによって公開された連想配列の一種。

要素の格納にはただひとつの配列を使用し、要素のハッシュ値を配列長で割った余りを格納先のインデックスとする。
このとき、要素と共にこの余りを格納する。つまり最初の挿入ではこの値はインデックスに等しい。
すでに格納先が埋まっている場合、それ以降のインデックスでどの要素も本来の位置からできるだけ近い場所になるような位置に格納または入れ替えを行う。探索時には要素のハッシュ値を計算してそれを配列長で割った余りを探索の起点にして線形探索を行う。要素の削除には元論文で提案されている要素の代わりに削除フラグを格納しておく方法と、前方の要素を持ってきて初期位置との距離ができるだけ小さくなるように詰める方法がある。後者の場合探索がより高速になることがある図解あり。ロビンフッドハッシュ法はRustのような比較的新しい言語で採用例がある。

 脚注 

 関連項目 
 ルックアップテーブル
 メモ化

Category:データ型