123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- import numpy as np
- from numpy.testing import assert_equal, assert_array_almost_equal
- from scipy.sparse import csgraph
- def test_weak_connections():
- Xde = np.array([[0, 1, 0],
- [0, 0, 0],
- [0, 0, 0]])
- Xsp = csgraph.csgraph_from_dense(Xde, null_value=0)
- for X in Xsp, Xde:
- n_components, labels =\
- csgraph.connected_components(X, directed=True,
- connection='weak')
- assert_equal(n_components, 2)
- assert_array_almost_equal(labels, [0, 0, 1])
- def test_strong_connections():
- X1de = np.array([[0, 1, 0],
- [0, 0, 0],
- [0, 0, 0]])
- X2de = X1de + X1de.T
- X1sp = csgraph.csgraph_from_dense(X1de, null_value=0)
- X2sp = csgraph.csgraph_from_dense(X2de, null_value=0)
- for X in X1sp, X1de:
- n_components, labels =\
- csgraph.connected_components(X, directed=True,
- connection='strong')
- assert_equal(n_components, 3)
- labels.sort()
- assert_array_almost_equal(labels, [0, 1, 2])
- for X in X2sp, X2de:
- n_components, labels =\
- csgraph.connected_components(X, directed=True,
- connection='strong')
- assert_equal(n_components, 2)
- labels.sort()
- assert_array_almost_equal(labels, [0, 0, 1])
- def test_strong_connections2():
- X = np.array([[0, 0, 0, 0, 0, 0],
- [1, 0, 1, 0, 0, 0],
- [0, 0, 0, 1, 0, 0],
- [0, 0, 1, 0, 1, 0],
- [0, 0, 0, 0, 0, 0],
- [0, 0, 0, 0, 1, 0]])
- n_components, labels =\
- csgraph.connected_components(X, directed=True,
- connection='strong')
- assert_equal(n_components, 5)
- labels.sort()
- assert_array_almost_equal(labels, [0, 1, 2, 2, 3, 4])
- def test_weak_connections2():
- X = np.array([[0, 0, 0, 0, 0, 0],
- [1, 0, 0, 0, 0, 0],
- [0, 0, 0, 1, 0, 0],
- [0, 0, 1, 0, 1, 0],
- [0, 0, 0, 0, 0, 0],
- [0, 0, 0, 0, 1, 0]])
- n_components, labels =\
- csgraph.connected_components(X, directed=True,
- connection='weak')
- assert_equal(n_components, 2)
- labels.sort()
- assert_array_almost_equal(labels, [0, 0, 1, 1, 1, 1])
- def test_ticket1876():
- # Regression test: this failed in the original implementation
- # There should be two strongly-connected components; previously gave one
- g = np.array([[0, 1, 1, 0],
- [1, 0, 0, 1],
- [0, 0, 0, 1],
- [0, 0, 1, 0]])
- n_components, labels = csgraph.connected_components(g, connection='strong')
- assert_equal(n_components, 2)
- assert_equal(labels[0], labels[1])
- assert_equal(labels[2], labels[3])
- def test_fully_connected_graph():
- # Fully connected dense matrices raised an exception.
- # https://github.com/scipy/scipy/issues/3818
- g = np.ones((4, 4))
- n_components, labels = csgraph.connected_components(g)
- assert_equal(n_components, 1)
|