実用的なアプリケーションでは、しかしながら、ハッシュ関数を構築し、衝突を完全に回避することはできません。
送付方法を開きます
この方法の基本的な考え方は次のとおりです。アドレスの競合は、いくつかの方法に従って、あなたがこれまでに空の位置を見つけるまで、ハッシュテーブル内の他のストレージユニットを検出し続けた場合。このプロセスは、以下の式によって記述することができる:
H I(キー)=(H)(キー+ DI)MODのM(I = 1,2、...、K(K≤M - 1))
ここで、H(キー)キー直接アドレスハッシュキーワードは、mはジアドレスがたびに再検出をインクリメントし、ハッシュ・テーブルの長さです。
この方法では、最初の要素に直接計算されたハッシュアドレスH(キー)と、メモリセルは他の要素によって占有されている場合、アドレスH(キー)+メモリセルのD 2を表示し続け、そして見つけるまで繰り返します記憶部は、キーユニットのデータ要素に格納されたキーワード空です。
デルタdは、エミュレート異なっており、それらに応じて異なる名称有していてもよい
:エミュレートされたDI = 1、2、。3、...プロービング線形(1)。
再ハッシュと、(2)DI 2. 1 ^ = - ^ 2 1 、2 ^ 2、 - 2 ^ 2、K ^ 2、-k ^ 2 ...... 検出する二次再ハッシュ;
(3)DI =擬似ランダム再ハッシュの擬似ランダムシーケンス、
実施例1は、ハッシュ関数H(キー)=キーMOD 7が設けられており 、 0から6までのハッシュテーブルアドレス空間によって再度プロービングキーストリング(32、13、49、55、22、38、21)線形二次再ハッシュし、ハッシュテーブルのハッシュを検出する方法が構成されています。
溶液:
(1)線形プロービング再ハッシュ:
32%7 = 4; 7 = 6 13%; 49%7 = 0;
55%= 6 7競合、次のメモリアドレスは(6 + 1)= 7%0依然として衝突、その後、次のメモリアドレス:( 6 + 2)1 = 7%無衝突は、保存することができます。
7 = 22%1つの競合、次のメモリアドレス:( 1 + 1)= 7%2無衝突、
38%3 = 7;
21%7 = 0衝突、上記方法に従っては、検出空間5まで続きます、記憶場所に対応する結果として得られるハッシュテーブルを衝突しない:
インデックス:. 5 4 3 0 1 6 2
49 55 32 22 38であり、21は13である
(2)二次再ハッシュ検出:
インデックス:012345 6
49 32 55 22 21である38である13である
注:他の要素は同一のハッシュアドレスに切り捨てられるので、要素を削除生じるオープンアドレスの競合を用いてハッシュテーブルメソッドを直接、削除することはできません注意する必要そう通常、それは(要素が削除されたことを示す特別なフラグを設定し、アドレスを見つけるさまざまなオープンアドレス法、空のアドレス位置(すなわち、オープンアドレス)の条件が検索失敗です)。
例
、H(k)を仮定すると、リニアテーブル(38,25,74,63,52,48)所与=競合検出オープンリニアアドレス指定方法あれば、K%6は、ハッシュのハッシュ・メモリ・アドレスを計算しますハッシュテーブルの平均長さで見つけることがあります()。
A. 1.5 B. C. 1.7 2 2.3 D. 2、
問題解決のプロセス:
(1)計算時間(K):38%6 = 2 25%6 = 1 74%6 = 2 63%6 = 3 52%6 = 448パーセント6 = 0
(2)対処:1 2 3 4 5 0:競合なし競合が全て記載されている対処することができる
1台線形要素(38):38(1番目にありません競合)
2、第2の要素(25)の線形形式:25(1ない衝突で)
74(第1衝突、アドレス+ 1):3、線状第三の要素(74)を形成し
4の直鎖状の3つの要素(74):74(衝突で2ない)
5、四つの要素の線形形式(63):63(第1衝突、アドレス+ 1)
6、四つの要素の線形形式(63): 63(2ない衝突で)
7は、5つの要素の線形形式(52):52(第1衝突、アドレス+ 1)
8は、5つの要素の線形形式(52):52(第2無競合)
9、表6の直鎖素子(48))が競合している48(第
上記アドレッシングプロセスを経て、リニアテーブルの各要素は、固有のアドレスを有しています。
2.3表1の結果6線形要素、平均長さを見つけるためにハッシュテーブルルックアップで、9を通して対処:9/6 = 1.5、回答選択: