いくつかのグラフ アルゴリズムを調べています (これは宿題ではありません。アルゴリズムとデータ構造についてブラッシュアップしているだけです)。質問があります。次の無向グラフがあるとします。
var graph = {
9: [19, 26],
13: [19, 5],
17: [],
26: [11, 18],
18: [9],
19: [],
23: [24],
24: [],
11: [],
18: []
};
グラフは基本的に次のようになります。
このグラフにはいくつの連結成分がありますか? グラフだけ見ると、3 つのコンポーネントがあるように見えます。しかし、実際にアルゴリズムを実装すると (各頂点を反復処理し、その頂点が検出されない場合はその頂点を開始点として使用して bfs を実行します。また、bfs は検出された頂点をマークします)。
から開始すると9
、最終的に次のノードが検出されます: [19, 26, 11, 18]
。ただし、の隣接リスト13
にないため、 は検出されません。19
ただし、19
は13
の隣接リストにあります。これが、1 つの余分なコンポーネントになってしまう理由です。
これは正しいです?実際には 4 つの個別のコンポーネントがありますか?もしそうなら、接続されたコンポーネントの私の理解は間違っていますか?