この質問は少し賢明かもしれませんが、私は本当に償却分析に深く浸透しようとしていますが、なぜハッシュテーブルの挿入がO(1)償却されているのか混乱しています。ハッシュテーブルO(1)償却またはO(1)平均償却?
この定義を使用すると、「償却分析は、最悪の場合の各操作の平均パフォーマンス(時間をかけて)を示します」。ハッシュテーブルへのN個の挿入が最悪の場合のように、すべての操作で衝突が発生するようです。ユニバーサルハッシングは、負荷バランスが低く保たれているときに1/mのレートで衝突を保証しますが、理論的にはすべてのインサートに対して衝突を起こすことはまだ可能ではありませんか?技術的に平均は、ハッシュテーブルの挿入のための分析を償却ように思え
はO(1)です。
編集:ハッシュテーブルは、対応するリンクリストの最後に要素が配置されている基本チェーンを使用すると想定できます。私の疑問の真実は、確率論的アルゴリズムの償却分析を指しています。
編集2: 私は 「もそこ償却走行時間の間に微妙だが重要なディのFFレンスだと時間を実行している期待、クイックソートのthisポストを見つけランダムなピボットとクイックソートはO(n個のnを記録)時間を実行している期待がかかりますが、その。最悪の場合の実行時間はΘ(n^2)です。これはクイックソートが(n^2)ドルの費用を払う可能性は低いですが、nが大きくなるとゼロに近づく確率が低いことを意味します。これはおそらく私の質問に答えると思う。
ハッシュテーブルを実装する方法はたくさんありますが、実装の選択に違いがあります。たとえば、ハッシュ・バケットが(ソートされていない)リンク・リストである場合、insertは* always * O(1)となります。 – psmears
実装の違いによって、さまざまな方法で衝突が処理されます。例えば、衝突は次の利用可能なスポットに入るか、リンクされたリストを介して同じスポットに記憶されてもよいし、類似しているがツリーを介して記憶されてもよい。どのように衝突が処理されるかについての詳細を指定して、分析する固定された目標を持ってください。 – TheGreatContini