時間の複雑さを学び始めており、ある種の単純な時間の複雑さの例を調べました。
|V|=n
および|E|=m
を使用してグラフの深さ優先検索の平均時間複雑度を計算し、開始ノードを「u」、終了ノードを「v」にする方法を知りたいと思いました。
DFSの時間の複雑さはO(n + m)です。各ノードに1回だけアクセスし、ツリー(サイクルなし)の場合はすべてのエッジを1回横断するという事実を考慮すると、この複雑さが生じます。
たとえば、開始ノードがuで終了ノードがvの場合、vが最後にアクセスしたノードになる最悪のシナリオを考えています。したがって、u接続コンポーネントの最初のネイバーの各コンポーネントを訪問し、次に2番目のネイバーの接続コンポーネントを訪問し、最後のネイバーの接続コンポーネントまでvを見つけます。各ノードを一度だけ訪問し、交差しませんでした同じEdgeが複数回。
グラフが隣接リストの形式で与えられる場合はO(n + m)になりますが、グラフが隣接行列の形式である場合、複雑さはO(n * n)になります。エッジが見つかるまで列を作ります。