web-dev-qa-db-ja.com

深さ優先グラフアルゴリズムの時間の複雑さ

時間の複雑さを学び始めており、ある種の単純な時間の複雑さの例を調べました。

|V|=nおよび|E|=mを使用してグラフの深さ優先検索の平均時間複雑度を計算し、開始ノードを「u」、終了ノードを「v」にする方法を知りたいと思いました。

18
Learner

DFSの時間の複雑さはO(n + m)です。各ノードに1回だけアクセスし、ツリー(サイクルなし)の場合はすべてのエッジを1回横断するという事実を考慮すると、この複雑さが生じます。

たとえば、開始ノードがuで終了ノードがvの場合、vが最後にアクセスしたノードになる最悪のシナリオを考えています。したがって、u接続コンポーネントの最初のネイバーの各コンポーネントを訪問し、次に2番目のネイバーの接続コンポーネントを訪問し、最後のネイバーの接続コンポーネントまでvを見つけます。各ノードを一度だけ訪問し、交差しませんでした同じEdgeが複数回。

25
gabitzish

グラフが隣接リストの形式で与えられる場合はO(n + m)になりますが、グラフが隣接行列の形式である場合、複雑さはO(n * n)になります。エッジが見つかるまで列を作ります。

19
piyush.mukati