プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

データ構造におけるLCFSハッシング(後着優先方式)の仕組みと探索時間の評価式

LCFSハッシングとは

この記事では、LCFSハッシング(Last Come First Serve Hashing:後着優先ハッシング)について詳しく解説します。LCFSはオープンアドレス法(開番地法)の一種であり、従来の衝突解消の戦略を変更した興味深い手法です。

従来のオープンアドレス法との違い(FCFS方式)

オープンアドレス法によるハッシングのアルゴリズムを確認すると、2つの要素が衝突した場合、先に到着した要素がテーブルに保持され、後から来た要素は次の空き場所へ移動しなければなりません。つまり、通常のオープンアドレス法は「先着順(FCFS:First Come First Serve)」の基準で動作していると言えます。

LCFS方式の動作原理

LCFS(Last Come First Serve:後着優先)方式では、まったく逆の方法で処理が行われます。新しい要素を挿入する際、まず位置x0への配置を試みます。その場所がすでに要素yによって占有されている場合(yj = x0 のとき)、既存の要素yを次の位置yj+1へ移動させます。さらにその場所にも要素zが存在すれば、同様に押し出していく、という手順を繰り返します。つまり、最後に到着した要素が常に優先的に配置されるのがLCFS方式の特徴です。

期待探索時間の評価式

PobleteとMunroの研究によれば、空のテーブルにn個の要素を挿入した後の期待探索時間は、以下の式によって上界付けられることが示されています。

$$E[W]=1+\Gamma^{-1}(\alpha n)\lgroup 1+\frac{\ln\:\ln\:\frac{1}{1+\alpha}}{\ln\:\Gamma^{-1}(\alpha n)}+O(\frac{1}{\ln^{2}\:\Gamma^{2}(\alpha n)})\rgroup$$

ここで、Γはガンマ関数を表し、Γ-1(αn)は次のように近似できます。

$$\Gamma^{-1}(\alpha n)=\frac{\ln\:n}{\ln\:\ln\:n}\lgroup 1+\frac{\ln\:\ln\:\ln\:n}{\ln\:\ln\:n}+O(\frac{1}{\ln\:\ln\:n})\rgroup$$

この結果から、LCFSハッシングは単純な後着優先という規則を採用するだけで、衝突連鎖の解析において理論的に優れた性質を持つことが分かります。

  1. Rツリー(R-Tree)とは?空間データ構造の基本とクアッドツリーとの違いを徹底解説

    本記事では、Rツリー(R-Tree)というデータ構造について詳しく解説します。Rツリーは、空間データのインデックスを効率的に格納するために設計された木構造であり、空間的な検索やデータの保存において非常に有用な仕組みです。Rツリーは現実世界のさまざまな場面で活用されており、主な応用例は以下の通りです。多次元情報のインデックス化ゲームデータの管理地理空間座標(ジオスペーシャルデータ)の保持仮想マップの実装Rツリーの構造例以下に、Rツリーによる空間データの表現例を示します。この空間データに対応するRツリーの構造は次のようになります。Rツリーの主な特性Rツリーには、以下のような重要な特性があります。R

  2. ハーフエッジデータ構造(HalfedgeDS)とは?基本概念とCGAL実装例をわかりやすく解説

    はじめにテンプレートパラメータとして用いられるハーフエッジデータ構造(Halfedge Data Structure、略称 HalfedgeDS)は、頂点・辺・面の接続情報(インシデンス情報)を管理できる、辺を中心としたデータ構造として定義されています。平面地図(planar map)や多面体など、任意の次元空間に埋め込まれた向き付け可能な2次元曲面の表現に適した構造です。このデータ構造では、各辺が逆向きの向きを持つ2つのハーフエッジ(半辺)に分割されます。各ハーフエッジは、隣接する1つの面と1つの頂点への参照を保持し、逆に各面および各頂点にも、それぞれ1つの接続ハーフエッジが格納されます。さ