私のアルゴリズムクラスでは、グラフ表示の隣接リストの引き戻しは、各ノードに対応する隣接ノードの配列を反復するO(n)ルックアップ時間であると言われています。私は自分の隣接ノードのHashSetにマップするHashMapを使って自分の隣接リストを実装していますが、O(1)ルックアップしか取らないでしょうか?私は行方不明のものがありますか?HashSetを使用したO(1)ルックアップ時間の隣接リスト
2
A
答えて
4
あなたが知っているように、HashMapのキーを使って値を調べるのはO(1)です。ただし、隣接リストでは、HashMapの値も隣接するノードのリストです。隣接リストの主な目的は、隣接ノードを反復することです。たとえば、DFSやBFSのようなグラフトラバーサルアルゴリズム。あなたのケースでは、HashSet。 HashSetの要素の数をnとします。次に、HashSet内のすべての要素を反復するために、O(n)があります。
So, total complexity would be O(1)+O(n).
Where O(1)= look up in HashMap
O(n)= iterate all the elements
一般的に、疎なグラフの場合、隣接リストはほんの僅かなエッジしか持たないグラフなので好ましいです。これは、各ノード(HashMapのキー)内の隣接する要素の数が少ないことを意味します。要素を探すことはそれほどコストがかかりません。
2
私は自分の隣接ノードのを設定し、ハッシュにノードをマップするHashMapを使用して、私の隣接リストを実装して、O(1)時間を見てかかるだろうではないことだけ? [重点鉱山]
右—が、「adjacency list」は、通常、アレイまたはリンクされたリストではなく、HashSetのような表現を意味します:つまり、隣接リストは、むしろ頂点の隣人を反復処理するために最適化されています2つの頂点が隣接しているかどうかを照会するよりも
関連する問題
- 1. multigraphの隣接リストが与えられた場合、O(| V | + | E |)時間内の等価(単純な)無向グラフの隣接リストを計算する
- 2. C(+)でのO(1)ルックアップ
- 3. HashSet - HashSet O(1)でオブジェクトにアクセスしていますか?
- 4. リンクリストを使用したC++での隣接リストの実装
- 5. 隣接リスト表現の時間の複雑さ?
- 6. 隣接リストによる一定時間の操作
- 7. O(| V | + | E |)内の隣接リストの逆数
- 8. HashSetのルックアップの複雑さ?
- 9. matlabは隣接リストを隣接リストに変換します
- 10. 隣接リストindegree
- 11. 隣接リスト
- 12. O(1)ルックアップで.NET集合コレクション?
- 13. リストの隣接リストエラー
- 14. グラフの隣接リストが間違った出力を返す
- 15. big-oを使用した時間複雑度解析
- 16. [kdb +/q]:隣接リストを隣接リストに変換する
- 17. 1列のデータ構造アドレスを格納するためのリスト、より良いルックアップC++のO(1)
- 18. マルチグラフと隣接リスト
- 19. 隣接リストとグラフ
- 20. 隣接リスト表現
- 21. O(N)時間とO(C)空間の複雑さでJava 8ストリームAPIを使用してリストからmax(min)を1つだけ削除する方法
- 22. ハッシュテーブル操作の時間複雑度はO(1)またはO(N)ですか?
- 23. Cのグラフの隣接リスト
- 24. 隣接リストの実装Python
- 25. 無向グラフの隣接リスト
- 26. SQL隣接リストのクエリ
- 27. O(1)時間でpythonリストの要素を削除する方法
- 28. C++の隣接リストを使用するグラフ
- 29. 隣接リストを使用した重み付けされていないグラフ
- 30. STL(リストのベクトル、隣接リスト)のベクトル - C++
私はHashSetの意味を明確にしていません。私は自分のキーの値としてHashSetデータ構造(基本的にO(1)ルックアップ時間の要素のセット)を使用していることを意味していました。私が正しいとすれば、私の価値は、私がHashSetという名前のジェネリックリストであると思ったのです。 – discuit
ええええええええええええええええええええええええええええええええええええリストの主な目的は隣接ノードを保存することです、そして、それらのノードがDFSのようなアルゴリズムに必要とされている時はいつでも使用し、すべてを繰り返します。ですから、HashSetを使用すると、複雑さもO(n)回繰り返されます。 HashSetはO(1)です。あなたは正しいです。私の更新された答えを見てください。今は明らかだと思います。 –