예제 #1
0
    def test_is_bipartite(self):
        biadjacency = star_wars(metadata=False)
        adjacency = bipartite2undirected(biadjacency)
        self.assertTrue(is_bipartite(adjacency))

        bipartite, pred = is_bipartite(adjacency, return_biadjacency=True)
        self.assertEqual(bipartite, True)
        self.assertEqual(np.all(biadjacency.data == pred.data), True)

        adjacency = sparse.identity(2, format='csr')
        bipartite, biadjacency = is_bipartite(adjacency,
                                              return_biadjacency=True)
        self.assertEqual(bipartite, False)
        self.assertIsNone(biadjacency)

        adjacency = directed2undirected(cyclic_digraph(3))
        bipartite, biadjacency = is_bipartite(adjacency,
                                              return_biadjacency=True)
        self.assertEqual(bipartite, False)
        self.assertIsNone(biadjacency)

        with self.assertRaises(ValueError):
            is_bipartite(cyclic_digraph(3))

        self.assertTrue(~is_bipartite(sparse.eye(3)))
예제 #2
0
    def test_largest_cc(self):
        adjacency = cyclic_digraph(3)
        adjacency += adjacency.T
        largest_cc, indices = largest_connected_component(adjacency,
                                                          return_labels=True)

        self.assertAlmostEqual(
            np.linalg.norm(largest_cc.toarray() -
                           np.array([[0, 1, 1], [1, 0, 1], [1, 1, 0]])), 0)
        self.assertEqual(np.linalg.norm(indices - np.array([0, 1, 2])), 0)

        biadjacency = star_wars(metadata=False)
        largest_cc, indices = largest_connected_component(biadjacency,
                                                          return_labels=True)

        self.assertAlmostEqual(
            np.linalg.norm(
                largest_cc.toarray() -
                np.array([[1, 0, 1], [1, 0, 0], [1, 1, 1], [0, 1, 1]])), 0)
        self.assertEqual(np.linalg.norm(indices[0] - np.array([0, 1, 2, 3])),
                         0)
        self.assertEqual(np.linalg.norm(indices[1] - np.array([0, 1, 2])), 0)

        self.assertTrue(
            isinstance(
                largest_connected_component(adjacency, return_labels=False),
                sparse.csr_matrix))
예제 #3
0
 def test_scaling(self):
     adjacency = cyclic_digraph(3)
     with self.assertRaises(ValueError):
         check_scaling(-1, adjacency, regularize=True)
     adjacency = test_graph_disconnect()
     with self.assertRaises(ValueError):
         check_scaling(-1, adjacency, regularize=False)
예제 #4
0
 def test_is_acyclic(self):
     adjacency_with_self_loops = sparse.identity(2, format='csr')
     self.assertFalse(is_acyclic(adjacency_with_self_loops))
     directed_cycle = cyclic_digraph(3)
     self.assertFalse(is_acyclic(directed_cycle))
     undirected_line = linear_graph(2)
     self.assertFalse(is_acyclic(undirected_line))
     acyclic_graph = linear_digraph(2)
     self.assertTrue(is_acyclic(acyclic_graph))
예제 #5
0
    def test_dir2undir(self):
        n = 3
        adjacency = cyclic_digraph(n)
        ref = directed2undirected(adjacency)
        self.assertEqual(ref.shape, adjacency.shape)
        self.assertTrue(is_symmetric(ref))

        adjacency = house()
        n = adjacency.shape[0]
        error = 0.5 * directed2undirected(adjacency) - adjacency
        self.assertEqual(error.nnz, 0)

        slr = SparseLR(adjacency, [(np.zeros(n), np.zeros(n))])
        slr = 0.5 * directed2undirected(slr)
        self.assertEqual(slr.shape, (n, n))

        x = np.random.randn(n)
        error = np.linalg.norm(slr.dot(x) - adjacency.dot(x))
        self.assertAlmostEqual(error, 0)
예제 #6
0
 def setUp(self) -> None:
     """Load graph for tests."""
     self.adjacency = cyclic_digraph(3)
예제 #7
0
 def setUp(self):
     """Simple graphs for tests."""
     self.adjacency = cyclic_digraph(3)
     self.dense_mat = np.identity(3)
 def test_shortest_paths(self):
     with self.assertRaises(ValueError):
         shortest_path(cyclic_digraph(3), [0, 1], [0, 1])