Wikipedia極大で連結な部分グラフというのが分かりにくいかもしれないが、言葉からのイメージ通りに考えて恐らく間違いない。(3)-------(4)上の図の左側は任意の2頂点間に経路(道)が存在するので連結グラフ。4が1つの連結成分となっている。連結成分が1つであればそのグラフは連結グラフであるといえる。4の2つの連結成分を持つ。上の図は無向グラフだが、有向グラフの場合は強連結という考え方がある。V)(Eは辺の数、Vは頂点の数)とのこと。以下の隣接行列のグラフを例とする。(3)---1-->(4)connected_components()の第一引数にリストを指定するとエラーとなる。NumPy配列ndarrayだとOK。scipy_connected_components.py返り値は、連結成分の個数と、各頂点が属する連結成分のラベル。4が同じ連結成分であることを示している。connection='weak')では有向グラフでも向きは考慮されない。1に至る経路や4から3に至る経路は存在しないが、向きを問わず頂点間に経路が存在していればつながっているとみなされる。引数にはscipy.sparse行列(疎行列)も指定可能。scipy_connected_components.pycsr_matrixは重みと頂点のリストから生成することも可能。scipy_connected_components.pyconnected_components()の内部ではnumpy.ndarrayであってもcsc_matrixなど他の形式のscipy.sparse行列であっても、すべてcsr_matrixに変換される。最初からcsr_matrixを生成できるのであればそちらのほうが効率的。scipy.sparse行列(疎行列)の生成などについての詳細は以下の記事を参照。引数return_labelsconnected_components()の引数return_labelsをFalse(デフォルトはTrue)とすると、ラベルを示す配列は返されず、連結成分の個数のみが返される。connection引数directedとconnectionによって、どのような状態を連結とみなすかを設定できる。connection='weak')では、向きを問わず頂点間に経路が存在していればその頂点間はつながっているとみなされる。connection='strong'とすると、有向グラフにおいて、頂点iと頂点jに対してiからjへの経路とjからiの経路が両方とも存在しているときのみ、その頂点間はつながっているとみなされる。グラフ上の任意の2頂点間に双方向の経路が存在しているグラフを強連結グラフ、そのような連結成分を強連結成分という。以下のグラフを例とする。両端に矢がある矢印は両方の向きの経路が存在していることを意味している。(3)<--1-->(4)デフォルトでは最初の例と同じ結果。scipy_connected_components.pyconnection='strong'とすると以下のような結果となる。1と2は同じ連結成分とはみなされない。次の例は以下のグラフ。2はそれぞれ行き来できる経路が存在するため、connection='strong'としても一つの連結成分とみなされる。scipy_connected_components.pydirected=Falseとすると向きが考慮されなくなり、頂点間に経路が存在していればその頂点間はつながっているとみなされる。directed=Falseの場合はconnectionの値は無視される。connection='weak'(デフォルト)は同じ状態。connection='strong'のときのみ強連結成分の個数取得・判定となる。重み付きグラフの場合connected_components()では辺の重みは考慮されない。0でなければ負の値でもなんでも経路が存在するとみなされる。これまでの例ではすべての辺の重み(コスト)を1としていたが、その値を変えても同じ結果となる。