Esempio n. 1
0
    def testLevels(self):
        gr = DirectedGraph()
        gr.add_nodes([1, 2, 3, 11, 12, 21, 22, 23, 31])

        gr.add_edge(11, 1)
        gr.add_edge(12, 2)
        gr.add_edge(21, 12)
        gr.add_edge(22, 11)
        gr.add_edge(31, 21)
        gr.add_edge(31, 22)
        gr.add_edge(31, 23)

        self.assertEqual(set([1, 2, 3, 23]), gr.get_levels()[0])
        self.assertEqual(set([11, 12]), gr.get_levels()[1])
        self.assertEqual(set([22, 21]), gr.get_levels()[2])
        self.assertEqual(set([31]), gr.get_levels()[3])

        # cycles no
        self.assertEqual([], gr.get_cycles())

        self.assertEqual(set([1, 2, 11, 12, 21, 22, 23]),
                         gr.compute_closure(31))
        self.assertEqual(set([]), gr.compute_closure(23))
        self.assertEqual(set([1, 11]), gr.compute_closure(22))
        self.assertEqual(set([2, 12]), gr.compute_closure(21))
        self.assertEqual(set([1]), gr.compute_closure(11))
    def testLevels(self):
        gr = DirectedGraph()
        gr.add_nodes([1, 2, 3, 11, 12, 21, 22, 23, 31])

        gr.add_edge(11, 1)
        gr.add_edge(12, 2)
        gr.add_edge(21, 12)
        gr.add_edge(22, 11)
        gr.add_edge(31, 21)
        gr.add_edge(31, 22)
        gr.add_edge(31, 23)

        self.assertEqual(set([1, 2, 3, 23]), gr.get_levels()[0])
        self.assertEqual(set([11, 12]), gr.get_levels()[1])
        self.assertEqual(set([22, 21]), gr.get_levels()[2])
        self.assertEqual(set([31]), gr.get_levels()[3])

        # cycles no
        self.assertEqual([], gr.get_cycles())

        self.assertEqual(set([1, 2, 11, 12, 21, 22, 23]), gr.compute_closure(31))
        self.assertEqual(set([]), gr.compute_closure(23))
        self.assertEqual(set([1, 11]), gr.compute_closure(22))
        self.assertEqual(set([2, 12]), gr.compute_closure(21))
        self.assertEqual(set([1]), gr.compute_closure(11))
    def test_closures(self):
        gr = DirectedGraph()
        gr.add_nodes([1, 2, 3, 11, 12, 21, 22, 23, 31])

        gr.add_edge(11, 1)
        gr.add_edge(12, 2)
        gr.add_edge(21, 12)
        gr.add_edge(22, 11)
        gr.add_edge(31, 21)
        gr.add_edge(31, 22)
        gr.add_edge(31, 23)

        self.assertEqual({21, 12, 2, 22, 11, 1, 23}, set(gr.compute_closure(31)))
        # Inverse closure
        self.assertEqual({31}, gr.inverse_reachable_subgraph(31).nodes)
        self.assertEqual({11, 22, 31, 1}, gr.inverse_reachable_subgraph(1).nodes)
Esempio n. 4
0
    def test_closures(self):
        gr = DirectedGraph()
        gr.add_nodes([1, 2, 3, 11, 12, 21, 22, 23, 31])

        gr.add_edge(11, 1)
        gr.add_edge(12, 2)
        gr.add_edge(21, 12)
        gr.add_edge(22, 11)
        gr.add_edge(31, 21)
        gr.add_edge(31, 22)
        gr.add_edge(31, 23)

        self.assertEqual({21, 12, 2, 22, 11, 1, 23},
                         set(gr.compute_closure(31)))
        # Inverse closure
        self.assertEqual({31}, gr.inverse_reachable_subgraph(31).nodes)
        self.assertEqual({11, 22, 31, 1},
                         gr.inverse_reachable_subgraph(1).nodes)