グラフの連結成分の発見
無向グラフの連結成分と有向グラフの強連結成分を理解します。DFSおよびBFSベースのアルゴリズムで効率的に識別する方法を学びます。
Graph Properties
詳細な説明
連結成分
連結成分は、セット内のすべての頂点が何らかのパスを通じて他のすべての頂点に到達できる頂点の最大セットです。
無向グラフ
無向グラフでの連結成分の発見は簡単です:
- 未訪問のノードからDFS/BFSを開始
- 到達したすべてのノードが同じ成分に属する
- 次の未訪問ノードから繰り返す
- すべてのノードが訪問されるまで続ける
有向グラフ:強連結成分(SCC)
有向グラフでは、強連結成分はすべてのノードが辺の方向に従って他のすべてのノードに到達できる最大セットです。
Kosarajuのアルゴリズム:
- DFSを実行し終了時刻を記録
- グラフを転置(すべての辺を逆転)
- 転置グラフで終了時刻の逆順にDFSを実行
- ステップ3の各DFS木がSCC
時間計算量
すべての成分発見アルゴリズムは**O(V + E)**で実行されます。
ユースケース
ソーシャルネットワーク分析ではコミュニティやフレンドクラスターの発見に連結成分を使用します。ネットワークエンジニアはインフラの分離サブネットやパーティションの識別に使用します。コンパイラはコールグラフで再帰関数グループを検出するために強連結成分を使用します。