グラフの接続コンポーネントを計算したいかのように思えます。 networkxパッケージとそのtools for computing componentsを調べることをお勧めします。例えば
、我々のデータは数値のペアのリスト、グラフ内のエッジを表す各ペアであると仮定する。これらのエッジで表されるグラフにおいて
pairs = [
(1, 2),
(2, 4),
(3, 5),
(2, 5),
(7, 9),
(9, 10),
(8, 7)
]
、の任意の対の間の経路が存在しますセット{1, 2, 3, 4, 5}
のノードと、任意のノードのペアの間のパスも{6, 7, 8, 9, 10}
にあります。しかし、例えば、5
から7
への経路はありません。つまり、グラフには2つの接続されたコンポーネントがあります。これらのコンポーネントを発見するために
、我々は最初のnetworkx
をインポートし、グラフを作成します。コンポーネントを計算
>>> import networkx as nx
>>> graph = nx.from_edgelist(pairs)
は発電機であり、従ってここでは、我々は変換
>>> list(nx.connected_components(graph))
>>> [{1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}]
nx.connected_components
のと同じくらい簡単です接続されたすべてのコンポーネントを表示するために結果をリストに表示します。我々はまた、すぐに接続されているコンポーネントの数を数えることができる
>>> nx.node_connected_component(graph, 3)
{1, 2, 3, 4, 5}
:
我々はまた、指定されたノードを含む連結成分を見つけることができます
>>> nx.number_connected_components(graph)
2
あなたはの連結成分を見つけようとしていますグラフ? – jme
@jmeはい、私がやろうとしているようです。 – pyrookie