2017-07-16 5 views
0

私はΘ(1)の部分がハッシュテーブルを計算するのに使う時間ですが、私はΘ(α)の部分を理解していません。ハッシュテーブルの検索に失敗したのはなぜ時間複雑度Θ(1 +α)ですか?

私の見解では、時間の複雑さはΘ(n)です。 αが期待される長さであり、テーブルがm個のスロットを有すると仮定する。キーがテーブル内にないことを保証するために、各スロットを探索する必要があり、各スロットは長さを除いてαを有するので、合計時間はα倍mであるので、Θ(n)である。

誰かが私が正しく理解しなかった部分を教えてもらえますか?

答えて

2

特定のキーがハッシュテーブルに含まれているかどうかのテストでは、すべてのスロットをテストする必要はありません。指定したキー(1)のハッシュ値を計算するだけです。このハッシュ値は、ハッシュテーブル内にある場合、キーがどのスロットにあるかを識別します。したがって、そのスロット内のすべてのエントリ(α)を指定されたキーと比較するだけで、Θ(1 +α)が得られます。他のスロットにキーを格納できないため、他のスロットを見る必要はありません。

+0

ありがとうございました!分かったと思います。したがって、与えられた各キーはハッシュ関数で計算され、ある特定の場所に向かう特定の番号を取得します。この方法では、このスロットを見るだけで済みます。私は正しい? – Root

+0

はい、それがハッシュテーブルの仕組みです。ハッシュ関数は、キーを1つのスロットにマッピングします(これは「ロケーション」と呼ばれます)。異なるキーは同じハッシュ値を有することができ、すなわち、それらは同じスロットにマッピングされる(これは衝突と呼ばれる)。したがって、実際にそこにあるかどうかを調べるには、そのスロット内のすべてのキーを特定のキー(ハッシュ値ではない)と比較する必要があります。 – Guenther

関連する問題