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

データ構造のバケット化メソッド


Bucketingは、ハッシュテーブルを1次元配列ではなく2D配列として構築します。配列内のすべてのエントリは大きく、M個のアイテムを保持するのに十分です(Mはデータの量ではなく、定数です)。

問題

  • 多くの無駄なスペースが作成されます。
  • Mを超える場合は、別の戦略を実行する必要があります。
  • メモリベースの実装ではあまりパフォーマンスが良くありませんが、バケットがディスクベースの場合は実行可能です。

バケット化の場合、λ>1であっても問題ありません。ただし、λが大きいほど衝突の可能性が高くなります。 λ>1は、最小1回の衝突があることを保証します(鳩の巣原理)。これにより、実行時間とバケットが不足する可能性の両方が向上します。

M個の場所と各場所のY個のバケットのハッシュテーブルの場合

  • 検索の成功-O(Y)ワーストケース
  • 検索の失敗-O(Y)ワーストケース
  • 挿入-O(Y)-成功した場合、バケットは失敗した挿入を処理するための適切な方法がありません。
  • 削除-O(Y)
  • ストレージ:O(M * Y)

  1. データ構造のB+ツリー

    ここでは、B+ツリーとは何かを確認します。 B +ツリーは、Bツリーの拡張バージョンです。このツリーは、Bツリーのより良い挿入、削除、および検索をサポートします。 Bツリー、キー、およびレコード値は、内部ノードとリーフノードに格納されます。 B +ツリーレコードでは、リーフノードに保存できます。内部ノードはキー値のみを保存します。 B+ツリーのリーフノードもリンクリストのようにリンクされています B+ツリーの例 − これは、検索、挿入、削除などの基本的な操作をサポートします。各ノードで、アイテムが並べ替えられます。位置iの要素には、その前後に子があります。したがって、以前に痛んだ

  2. ハーフエッジデータ構造

    はじめに テンプレートパラメータまたはハーフエッジデータ構造(HalfedgeDSと略記)のHDSは、平面マップ、多面体、またはその他の方向付け可能な2次元など、頂点、エッジ、および面の入射情報を維持できるエッジ中心のデータ構造として定義されます。ランダムな次元に埋め込まれたサーフェス。各エッジは、反対方向の2つのハーフエッジに分割されます。各ハーフエッジには、1つの入射面と1つの入射頂点が格納されます。各面と各頂点に1つの入射ハーフエッジが格納されます。ハーフエッジデータ構造のバリエーションを減らすと、面のハーフエッジポインタや面の保存など、この情報の一部を削除できます。 ハーフエッジデ