[解決済み] ハッシュテーブルの実行時の複雑さ (挿入、検索、削除)
質問
なぜ、ハッシュテーブル上のこれらの関数の実行時の複雑さが異なるのでしょうか?
wikiでは、検索と削除はO(n)です(ハッシュテーブルのポイントは一定のルックアップを持つことだと思ったので、検索がO(n)なら何の意味もないでしょう)。
少し前の講習会のノートを見ると、全てO(1)のものも含め、ある特定の詳細によって複雑さの幅があるようです。すべての O(1) が得られるなら、なぜ他の実装が使用されるのでしょうか?
C++やJavaのような言語で標準的なハッシュテーブルを使用している場合、時間の複雑さはどの程度になると予想されますか?
どのように解決するのですか?
ハッシュテーブル
は
O(1)
平均的で
アモルファス
のような複雑なケースもありますが
O(n)
最悪の場合
時間の複雑さ [そして、ここがあなたの混乱するところだと思います]。
ハッシュテーブルの問題は
O(n)
最悪の時間複雑性であり、その理由は2つあります。
-
あまりに多くの要素が同じキーにハッシュ化された場合:このキーの中を探すのに
O(n)
の時間がかかります。 - ハッシュテーブルがその ロードバランス - を過ぎると、リハッシュ [新しい大きなテーブルを作成し、各要素をテーブルに再挿入すること] をしなければなりません。
とはいえ、言われているのは
O(1)
のため、平均的で償却された場合。
- 多くのアイテムが同じキーにハッシュされることは非常に稀です [良いハッシュ関数を選択し、大きな負荷分散がない場合]。
-
リハッシュ操作である
O(n)
の後に起こる可能性があります。n/2
の後に起こる可能性があります。O(1)
: したがって、opごとの平均時間を合計すると、:(n*O(1) + O(n)) / n) = O(1)
リハッシュの問題があるので注意 - リアルタイムのアプリケーションや低レベルのアプリケーションを必要とする レイテンシー - は、データ構造としてハッシュテーブルを使用すべきではありません。
EDITです。
ハッシュテーブルのもう一つの問題。
キャッシュ
大規模なハッシュ・テーブルで性能低下が見られるかもしれないもう一つの問題は、キャッシュの性能によるものです。
ハッシュテーブルのキャッシュ性能の問題
そのため、大規模なコレクションでは、テーブルの関連部分をメモリからキャッシュに再ロードする必要があるため、アクセス時間が長くなる可能性があります。
関連
-
[解決済み】決定木(比較ソートアルゴリズム)の葉の最短の深さ)
-
[解決済み] クイックソートとヒープソートの比較
-
[解決済み] CLRSの相対的漸近成長に関する問題(表)の解き方について教えてください。
-
[解決済み] k-meansの時間計算量はどの程度ですか?
-
[解決済み] 簡単な面接問題が難しくなった:1~100の数字が与えられたとき、ちょうどk個の数字が欠けていることを見つけなさい。
-
[解決済み】PHPパスワードのハッシュとソルトの安全性について
-
[解決済み】Pythonの辞書はハッシュテーブルの一例ですか?
-
[解決済み] ハッシュテーブルとトライ(プレフィックスツリー)のどちらを選べばいいですか?
-
[解決済み] ハッシュテーブルは本当にO(1)になるのか?
-
[解決済み] ブルームフィルターを使用するメリットは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] グラフにおいて最小容量が最大となる経路の探索
-
[解決済み] ベルマンフォードとダイクストラの比較。どのような状況下でベルマンフォードが優れているか?
-
[解決済み] このHeld-Karp TSP Pseudocodeの説明をお願いします。
-
[解決済み] 2つのNFAの交点の求め方
-
[解決済み] バックトラッキングとダイナミックプログラミングの違い
-
[解決済み] ラジアンを度数に変換する方法は?
-
[解決済み] T = {<M> | Mはwを受け入れるときはいつでも$w^R$を受け入れるTMである}とする。Tが決定不可能であることを示せ
-
[解決済み】大きなӨ記号は、具体的に何を表すのですか?
-
[解決済み] 検索語句の上位10位を見つけるアルゴリズム
-
[解決済み] リンクリストのソートで最も高速なアルゴリズムは?