[解決済み] ダイクストラアルゴリズムの時間複雑性計算の理解
2023-01-06 21:37:40
質問
以下の隣接リストを用いて、Dijkstra Algorithmの時間計算をbig-O記法で計算したのですが、うまくいきませんでした。しかし、思ったように計算が進まず、順を追って理解することにしました。
- 各頂点は(V-1)個の頂点と接続できるため、各頂点に隣接する辺の数はV - 1となる。ここで、Eは各頂点に接続するV-1個の辺を表すとする。
-
Finding & min heapにおける各隣接頂点の重みの更新は、O(log(V)) + O(1) または
O(log(V))
. -
したがって、上記のステップ1とステップ2から、ある頂点に隣接するすべての頂点を更新するための時間複雑度はE*(logV)です。 または
E*logV
. -
したがって、すべてのV個の頂点に対する時間の複雑さは、V * (E*logV) 、すなわち
O(VElogV)
.
しかし、Dijkstra Algorithmの時間複雑度はO(ElogV)です。なぜでしょうか?
どのように解決するのですか?
ダイクストラの最短経路アルゴリズムは
O(ElogV)
というところにあります。
-
V
は頂点の数 -
E
はエッジの総数
解析は正しいが、記号の意味が違う! あなたの言うアルゴリズムは
O(VElogV)
であり、ここで
-
V
は頂点の数 -
E
は一つのノードに接続されるエッジの最大数です。
の名前を変更しましょう。
E
を
N
. つまり、ある分析では
O(ElogV)
と言い、別の分析では
O(VNlogV)
. どちらも正しく、実際には
E = O(VN)
. という違いがあります。
ElogV
がよりタイトな推定であることです。
関連
-
[解決済み】Quickselectの時間の複雑さを説明する
-
[解決済み] どのようにすれば、ほとんどすべてのアルゴリズムを修正して、最良の場合の実行時間を持つようにできるか?
-
[解決済み] Breadth First Searchの時間複雑性解析
-
[解決済み] ゲーム「2048」の最適なアルゴリズムとは?
-
[解決済み] ヒープの構築はどうして時間計算量O(n)になるのですか?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み】アルゴリズムの時間複雑性を求めるには?
-
[解決済み] キャッシュの無効化 - 一般的な解決策はありますか?
-
[解決済み] クロスワードを生成するアルゴリズム[クローズド]について
-
[解決済み] ユダヤ人の足の爪を切る最適なアルゴリズムとは?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】クイックソートとヒープソートの比較
-
[解決済み】whileループの時間複雑性とは?
-
[解決済み] log(n!)=Θ(n-log(n))でしょうか?
-
[解決済み] クロスワードを生成するアルゴリズム[クローズド]について
-
[解決済み] アルゴリズム設計マニュアル』の解答はどこにあるのですか?[クローズド]
-
[解決済み] 検索語句の上位10位を見つけるアルゴリズム
-
[解決済み] クイックソートとマージソートの比較 [重複]。
-
[解決済み] ビット単位で、モジュラス演算子の代わりに使用
-
[解決済み] リンクリストのソートで最も高速なアルゴリズムは?
-
[解決済み] 挿入ソートとバブルソートアルゴリズムの比較