Beispiel #1
0
 def test_simple_dfs_with_recursion(self):
     self.assertEqual(self.G.v(), self.N)
     pre_order = []
     post_order = []
     algorithm = SimpleDFS(self.G)
     algorithm.run(1, pre_action=lambda node: pre_order.append(node),
                     post_action=lambda node: post_order.append(node))
     pre_order_expected = [1, 0, 4, 5, 2, 3, 6, 7]
     post_order_expected = [4, 0, 7, 6, 3, 2, 5, 1]
     self.assertEqual(pre_order, pre_order_expected)
     self.assertEqual(post_order, post_order_expected)
     parent_expected = {0: 1, 1: None, 2: 5, 3: 2, 4: 0, 5: 1, 6: 3, 7: 6}
     self.assertEqual(algorithm.parent, parent_expected)
     self.assertEqual(algorithm.path(1, 7), [1, 5, 2, 3, 6, 7])
     self.assertEqual(algorithm.path(1, 4), [1, 0, 4])
     #algorithm.dag.show()
     self.assertEqual(algorithm.dag.v(), self.N)
     self.assertEqual(algorithm.dag.e(), self.N-1)
     self.assertTrue(algorithm.dag.is_directed())
     for edge in algorithm.dag.iteredges():
         self.assertTrue(self.G.has_edge(edge))
         self.assertEqual(edge.weight, self.G.weight(edge))
Beispiel #2
0
 def test_simple_dfs_with_recursion(self):
     self.assertEqual(self.G.v(), self.N)
     pre_order = []
     post_order = []
     algorithm = SimpleDFS(self.G)
     algorithm.run(1,
                   pre_action=lambda node: pre_order.append(node),
                   post_action=lambda node: post_order.append(node))
     pre_order_expected = [1, 0, 4, 5, 2, 3, 6, 7]
     post_order_expected = [4, 0, 7, 6, 3, 2, 5, 1]
     self.assertEqual(pre_order, pre_order_expected)
     self.assertEqual(post_order, post_order_expected)
     parent_expected = {0: 1, 1: None, 2: 5, 3: 2, 4: 0, 5: 1, 6: 3, 7: 6}
     self.assertEqual(algorithm.parent, parent_expected)
     self.assertEqual(algorithm.path(1, 7), [1, 5, 2, 3, 6, 7])
     self.assertEqual(algorithm.path(1, 4), [1, 0, 4])
     #algorithm.dag.show()
     self.assertEqual(algorithm.dag.v(), self.N)
     self.assertEqual(algorithm.dag.e(), self.N - 1)
     self.assertTrue(algorithm.dag.is_directed())
     for edge in algorithm.dag.iteredges():
         self.assertTrue(self.G.has_edge(edge))
         self.assertEqual(edge.weight, self.G.weight(edge))