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

データ構造の分割によるハッシュ


ここでは、除算によるハッシュについて説明します。このために、ハッシュ関数-

を使用します
ℎ(𝑥) = 𝑥 𝑚𝑜𝑑 𝑚

このハッシュ関数を使用するために、配列A [0、…m –1]を維持します。ここで、配列の各要素は、リンクリストの先頭へのポインターです。リンクリストLiは配列要素A[i]を指し、h(x)=iとなるすべての要素xを保持します。この手法は、連鎖によるハッシュとして知られています。

このようなハッシュテーブルで、要素xを増やしたい場合、これにはO(1)時間がかかります。インデックスi=h(x)を計算します。次に、リストLiにxを追加または追加します。要素を検索または削除する場合、そのプロセスはそれほど簡単ではありません。インデックスi=h(x)を見つける必要があります。次に、リストLiをトラバースします。目的の値に達するか、リストが使い果たされるまで。この操作には、リストL iのサイズに対応する時間がかかります。 。セットSに0、m、2m、3m、…。、nmの要素がある場合、L0に格納されているすべての要素は、検索と削除に直線的な時間がかかります。

このような状況は非常にまれです。たとえば、Sが普遍集合Uに均一かつ独立して分布し、uがmの倍数である場合、各リストの予想サイズL i はn/mのみです。この場合、検索と削除には Oが必要です。 (1 +α)時間。上記のシナリオを回避するには、mを賢く選択する必要があります。通常、mを2の累乗として使用することは避けます。mを2の累乗に近すぎない素数として使用することをお勧めします。


  1. データ構造のマージアルゴリズム

    マージアルゴリズムは、2つの並べ替えられたリストを1つのリストにマージするために使用されます。このアルゴリズムはさまざまな場合に使用されます。マージソートを実行する場合は、ソーターリストをより大きなリストにマージする必要があります。 アプローチは簡単です。 2つのリストを取ります。2つのポインタがあります。最初のものは最初のリストの要素を指し、2番目のものは2番目のリストの要素を指します。それらの値に基づいて、これら2つのリストのいずれかから小さい要素が取得され、対応するリストのポインターが増加します。この操作は、1つのリストがなくなるまで実行されます。その後、最後にマージされたリストの最後

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

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