Exemple #1
0
 def setUp(self):
     self.graph_builder = GraphBuilder(5)
     self.graph_builder.connect(1, 0)
     self.graph_builder.connect(2, 0)
     self.graph_builder.connect(0, 3)
     self.graph_builder.connect(3, 4)
     self.graph = self.graph_builder.build()
Exemple #2
0
 def setUp(self):
     self.graph_builder = GraphBuilder(6, graph_node=EnhancedNode)
     self.graph_builder.connect(0, 4)
     self.graph_builder.connect(0, 5)
     self.graph_builder.connect(1, 3)
     self.graph_builder.connect(2, 4)
     self.graph = self.graph_builder.build()
Exemple #3
0
 def setUp(self):
     self.graph_builder = GraphBuilder(13, graph_node=EnhancedNode)
     self.graph_builder.connect(0, 1)
     self.graph_builder.connect(0, 2)
     self.graph_builder.connect(0, 6)
     self.graph_builder.connect(0, 5)
     self.graph_builder.connect(5, 3)
     self.graph_builder.connect(5, 4)
     self.graph_builder.connect(3, 4)
     self.graph_builder.connect(7, 8)
     self.graph_builder.connect(9, 10)
     self.graph_builder.connect(9, 11)
     self.graph_builder.connect(9, 12)
     self.graph_builder.connect(11, 12)
     self.graph = self.graph_builder.build()
Exemple #4
0
 def setUp(self):
     self.graph_builder = GraphBuilder(11)
     self.graph_builder.directional_connect(0, 1)
     self.graph_builder.directional_connect(1, 2)
     self.graph_builder.directional_connect(2, 0)
     self.graph_builder.directional_connect(1, 3)
     self.graph_builder.directional_connect(3, 4)
     self.graph_builder.directional_connect(4, 5)
     self.graph_builder.directional_connect(5, 3)
     self.graph_builder.directional_connect(6, 5)
     self.graph_builder.directional_connect(6, 7)
     self.graph_builder.directional_connect(7, 8)
     self.graph_builder.directional_connect(8, 9)
     self.graph_builder.directional_connect(9, 6)
     self.graph_builder.directional_connect(9, 10)
     self.graph = self.graph_builder.build()
    def setUp(self):
        self.graph_builder = GraphBuilder(5, graph_node=EnhancedNode)
        self.graph_builder.directional_connect(1, 0)
        self.graph_builder.directional_connect(0, 2)
        self.graph_builder.directional_connect(2, 1)
        self.graph_builder.directional_connect(0, 3)
        self.graph_builder.directional_connect(3, 4)
        self.graph = self.graph_builder.build()

        self.graph_builder = GraphBuilder(11, graph_node=EnhancedNode)
        self.graph_builder.directional_connect(0, 1)
        self.graph_builder.directional_connect(1, 2)
        self.graph_builder.directional_connect(2, 0)
        self.graph_builder.directional_connect(1, 3)
        self.graph_builder.directional_connect(3, 4)
        self.graph_builder.directional_connect(4, 5)
        self.graph_builder.directional_connect(5, 3)
        self.graph_builder.directional_connect(6, 5)
        self.graph_builder.directional_connect(6, 7)
        self.graph_builder.directional_connect(7, 8)
        self.graph_builder.directional_connect(8, 9)
        self.graph_builder.directional_connect(9, 6)
        self.graph_builder.directional_connect(9, 10)
        self.graph2 = self.graph_builder.build()
Exemple #6
0
class CycleDetectionTest(TestCase):
    def setUp(self):
        self.graph_builder = GraphBuilder(5)
        self.graph_builder.connect(1, 0)
        self.graph_builder.connect(2, 0)
        self.graph_builder.connect(0, 3)
        self.graph_builder.connect(3, 4)
        self.graph = self.graph_builder.build()

    def test_cycle(self):
        cd = CycleDetector(self.graph)
        self.assertEqual(cd.is_cycle_detected(), False)

    def test_cycle_exist(self):
        self.graph_builder.connect(1, 2)
        self.graph = self.graph_builder.build()
        cd = CycleDetector(self.graph)
        self.assertEqual(cd.is_cycle_detected(), True)
class ConnectedComponentsTestCase(TestCase):
    def setUp(self):
        self.graph_builder = GraphBuilder(5, graph_node=EnhancedNode)
        self.graph_builder.directional_connect(1, 0)
        self.graph_builder.directional_connect(0, 2)
        self.graph_builder.directional_connect(2, 1)
        self.graph_builder.directional_connect(0, 3)
        self.graph_builder.directional_connect(3, 4)
        self.graph = self.graph_builder.build()

        self.graph_builder = GraphBuilder(11, graph_node=EnhancedNode)
        self.graph_builder.directional_connect(0, 1)
        self.graph_builder.directional_connect(1, 2)
        self.graph_builder.directional_connect(2, 0)
        self.graph_builder.directional_connect(1, 3)
        self.graph_builder.directional_connect(3, 4)
        self.graph_builder.directional_connect(4, 5)
        self.graph_builder.directional_connect(5, 3)
        self.graph_builder.directional_connect(6, 5)
        self.graph_builder.directional_connect(6, 7)
        self.graph_builder.directional_connect(7, 8)
        self.graph_builder.directional_connect(8, 9)
        self.graph_builder.directional_connect(9, 6)
        self.graph_builder.directional_connect(9, 10)
        self.graph2 = self.graph_builder.build()

    def test_connected_components(self):
        cc = StrongComponents(self.graph)
        self.assertEqual(3, cc.get_number_of_components())

        cc = StrongComponents(self.graph2)
        self.assertEqual(4, cc.get_number_of_components())
Exemple #8
0
class ConnectedComponentsTestCase(TestCase):
    def setUp(self):
        self.graph_builder = GraphBuilder(11)
        self.graph_builder.directional_connect(0, 1)
        self.graph_builder.directional_connect(1, 2)
        self.graph_builder.directional_connect(2, 0)
        self.graph_builder.directional_connect(1, 3)
        self.graph_builder.directional_connect(3, 4)
        self.graph_builder.directional_connect(4, 5)
        self.graph_builder.directional_connect(5, 3)
        self.graph_builder.directional_connect(6, 5)
        self.graph_builder.directional_connect(6, 7)
        self.graph_builder.directional_connect(7, 8)
        self.graph_builder.directional_connect(8, 9)
        self.graph_builder.directional_connect(9, 6)
        self.graph_builder.directional_connect(9, 10)
        self.graph = self.graph_builder.build()

    def test_reachablity(self):
        nodes = self.graph_builder.get_nodes_with_ids([0, 5])
        node1 = nodes[0] if nodes[0].id == 0 else nodes[1]
        node2 = nodes[0] if nodes[0].id == 5 else nodes[1]

        self.assertTrue(is_reachable(node1, node2, self.graph))

    def test_reachablity_unreachable(self):
        nodes = self.graph_builder.get_nodes_with_ids([0, 6])
        node1 = nodes[0] if nodes[0].id == 0 else nodes[1]
        node2 = nodes[0] if nodes[0].id == 6 else nodes[1]

        self.assertFalse(is_reachable(node1, node2, self.graph))
Exemple #9
0
class BipartiteTestCase(TestCase):
    def setUp(self):
        self.graph_builder = GraphBuilder(6, graph_node=EnhancedNode)
        self.graph_builder.connect(0, 4)
        self.graph_builder.connect(0, 5)
        self.graph_builder.connect(1, 3)
        self.graph_builder.connect(2, 4)
        self.graph = self.graph_builder.build()

    def test_bipartite(self):
        bp_checker = BiPartiteChecker(self.graph)
        self.assertTrue(bp_checker.is_graph_bipartite())

    def test_bipartite_another(self):
        self.graph_builder.connect(0, 1)
        self.graph = self.graph_builder.build()
        bp_checker = BiPartiteChecker(self.graph)
        self.assertTrue(bp_checker.is_graph_bipartite())

    def test_non_bipartite(self):
        self.graph_builder.connect(0, 1)
        self.graph_builder.connect(0, 3)
        self.graph = self.graph_builder.build()
        bp_checker = BiPartiteChecker(self.graph)
        self.assertFalse(bp_checker.is_graph_bipartite())
Exemple #10
0
class ConnectedComponentsTestCase(TestCase):
    def setUp(self):
        self.graph_builder = GraphBuilder(13, graph_node=EnhancedNode)
        self.graph_builder.connect(0, 1)
        self.graph_builder.connect(0, 2)
        self.graph_builder.connect(0, 6)
        self.graph_builder.connect(0, 5)
        self.graph_builder.connect(5, 3)
        self.graph_builder.connect(5, 4)
        self.graph_builder.connect(3, 4)
        self.graph_builder.connect(7, 8)
        self.graph_builder.connect(9, 10)
        self.graph_builder.connect(9, 11)
        self.graph_builder.connect(9, 12)
        self.graph_builder.connect(11, 12)
        self.graph = self.graph_builder.build()

    def test_connected_components(self):
        cc = ConnectedComponents(self.graph)

        nodes = self.graph_builder.get_nodes_with_ids([0, 1])
        self.assertTrue(cc.is_connected(nodes[0], nodes[1]))

        nodes = self.graph_builder.get_nodes_with_ids([0, 7])
        self.assertFalse(cc.is_connected(nodes[0], nodes[1]))

        nodes = self.graph_builder.get_nodes_with_ids([0, 3])
        self.assertTrue(cc.is_connected(nodes[0], nodes[1]))

        nodes = self.graph_builder.get_nodes_with_ids([10, 12])
        self.assertTrue(cc.is_connected(nodes[0], nodes[1]))

        nodes = self.graph_builder.get_nodes_with_ids([6, 11])
        self.assertFalse(cc.is_connected(nodes[0], nodes[1]))