これは宿題に関する質問であり、正しいアプローチについて私はひどく混乱しています。実行時分析の確率は?
mスロットのハッシュテーブルが存在します。 シンプルユニフォームハッシング仮説(SUHA)とする。
n個の挿入操作を実行しますが、n個の要素すべてがスロット0にマップされます(これは可能ではありませんが、可能です)。
ここで、疑問は、テーブルにハッシュが存在していてもいなくてもよいランダムなキー 'x'を検索するよう求められます。 検索の実行時の上限はどのくらいですか?
これは私のアプローチである:
我々はスハを想定しているので、スロットにハッシュキーの確率は1/mです。実際にキーがスロット0にハッシュした場合、探索はO(n)時間かかり、そうでなければO(m-1)時間かかる。この論理によって、解はO(n/m + [(m-1))に単純化する[1/m] * O(n)+ [(m-1)/ m]^2]/m)。
1.この方法で確率を漸近ランタイムに乗算できますか?
2.おそらくランタイムを決定する役割を果たしますか?
確かに、確率が要因として作用するかどうかはわかりません。その場合、ランタイムは単にn +(m-1)ではありませんか? (チェーンを見渡し、残りのスロットを見る時間) – Janmajay
いいえ、残りのすべてのスロットを調べる必要があるのはなぜですか?マップには、以前の値が存在する場所にハッシュした場合に値を格納する方法を定義する衝突解決があります。たとえば、リンクされたリストが各スロットに格納され、コリジョンの値がリストの末尾に追加されるというような、単一のリンクされたリストを使用した場合を考えてみましょう。あなたの検索で最悪の場合、長さnのリンクされたリストですので、n個のアイテムを検索するだけです –
ええ、それは意味があります。私の質問を修正し、n/2要素がスロット0にマップし、n/2要素がスロット1にマップすると、答えは変わらないでしょうか?私は本当に確率が役割を果たす状況を考えようとしています! – Janmajay