Components

Importem la biblioteca networxk.

>>> import networkx as nx

Creem un graf buit.

>>> g = nx.Graph()

Hi afegim dos camins.

>>> nx.add_path(g, [1, 2, 4, 3, 1])
>>> nx.add_path(g, [1, 5, 3])

Visualitzem el graf.

>>> import matplotlib.pyplot as plt
>>> nx.draw_networkx(g)
>>> plt.show()
../_images/components-1.svg

És connex?

>>> nx.is_connected(g)
True

Quants components té?

>>> nx.number_connected_components(g)
1

Quins components té?

>>> for c in nx.connected_components(g):
...     print(sorted(c))
[1, 2, 3, 4, 5]

Hi afegim un altre camí.

>>> nx.add_path(g, [6, 7])

Tornem a visualitzar el graf.

>>> nx.draw_networkx(g)
>>> plt.show()
../_images/components-2.svg

És connex?

>>> nx.is_connected(g)
False

Quants components té?

>>> nx.number_connected_components(g)
2

Quins components té?

>>> for c in sorted(nx.connected_components(g), key=len):
...     print(sorted(c))
[6, 7]
[1, 2, 3, 4, 5]

Hi afegim un vèrtex.

>>> g.add_node(8)

Visualitzem el graf un cop més.

>>> nx.draw_networkx(g)
>>> plt.show()
../_images/components-3.svg

És connex?

>>> nx.is_connected(g)
False

Quants components té?

>>> nx.number_connected_components(g)
3

Quins components té?

>>> for c in sorted(nx.connected_components(g), key=len):
...     print(sorted(c))
[8]
[6, 7]
[1, 2, 3, 4, 5]

Quin és el component de 2?

>>> cjt = nx.node_connected_component(g, 2)
>>> cjt
{1, 2, 3, 4, 5}