コード例 #1
0
ファイル: test_depth.py プロジェクト: nahumsa/retworkx
 def test_cycle(self):
     not_a_dag = retworkx.generators.directed_cycle_graph(250)
     with self.assertRaises(retworkx.DAGHasCycle):
         retworkx.dag_weighted_longest_path_length(not_a_dag,
                                                   lambda *_: 1.0)
     with self.assertRaises(retworkx.DAGHasCycle):
         retworkx.dag_weighted_longest_path(not_a_dag, lambda *_: 1.0)
コード例 #2
0
ファイル: test_depth.py プロジェクト: nahumsa/retworkx
    def test_nan_not_valid_weight(self):
        dag = retworkx.generators.directed_path_graph(526)

        def weight_fn(*_):
            return float("nan")

        with self.assertRaises(ValueError):
            retworkx.dag_weighted_longest_path_length(dag, weight_fn)
        with self.assertRaises(ValueError):
            retworkx.dag_weighted_longest_path(dag, weight_fn)
コード例 #3
0
ファイル: test_depth.py プロジェクト: nahumsa/retworkx
    def test_linear_with_weight(self):
        """Longest depth for a simple dag.

        a
        |
        b
        |\
        c d
        |\
        e |
        | |
        f g
        """
        dag = retworkx.PyDAG()
        node_a = dag.add_node("a")
        node_b = dag.add_child(node_a, "b", 4)
        node_c = dag.add_child(node_b, "c", 4)
        dag.add_child(node_b, "d", 5)
        node_e = dag.add_child(node_c, "e", 2)
        dag.add_child(node_e, "f", 2)
        node_g = dag.add_child(node_c, "g", 15)
        self.assertEqual(
            23.0,
            retworkx.dag_weighted_longest_path_length(
                dag, lambda _, __, weight: float(weight)),
        )
        self.assertEqual(
            [node_a, node_b, node_c, node_g],
            retworkx.dag_weighted_longest_path(
                dag, lambda _, __, weight: float(weight)),
        )
コード例 #4
0
ファイル: test_depth.py プロジェクト: nahumsa/retworkx
 def test_empty_graph_with_weights(self):
     dag = retworkx.PyDAG()
     self.assertEqual(
         0.0,
         retworkx.dag_weighted_longest_path_length(
             dag, lambda x: float(weight_fn(x))),
     )
     self.assertEqual(
         [],
         retworkx.dag_weighted_longest_path(dag,
                                            lambda x: float(weight_fn(x))),
     )
コード例 #5
0
ファイル: test_depth.py プロジェクト: nahumsa/retworkx
 def test_degenerate_graph_with_weight(self):
     dag = retworkx.PyDAG()
     dag.add_node(0)
     self.assertEqual(
         0.0,
         retworkx.dag_weighted_longest_path_length(
             dag, lambda x: float(weight_fn(x))),
     )
     self.assertEqual(
         [0],
         retworkx.dag_weighted_longest_path(dag,
                                            lambda x: float(weight_fn(x))),
     )
コード例 #6
0
ファイル: test_depth.py プロジェクト: nahumsa/retworkx
 def test_less_linear_with_weight(self):
     dag = retworkx.PyDAG()
     node_a = dag.add_node("a")
     node_b = dag.add_child(node_a, "b", 1)
     node_c = dag.add_child(node_b, "c", 1)
     node_d = dag.add_child(node_c, "d", 1)
     node_e = dag.add_child(node_d, "e", 1)
     dag.add_edge(node_a, node_c, 3)
     dag.add_edge(node_a, node_e, 3)
     dag.add_edge(node_c, node_e, 3)
     self.assertEqual(
         6.0,
         retworkx.dag_weighted_longest_path_length(
             dag, weight_fn=lambda _, __, weight: float(weight)),
     )
     self.assertEqual(
         [node_a, node_c, node_e],
         retworkx.dag_weighted_longest_path(
             dag, weight_fn=lambda _, __, weight: float(weight)),
     )
コード例 #7
0
ファイル: test_depth.py プロジェクト: nahumsa/retworkx
 def test_parallel_edges_with_weights(self):
     dag = retworkx.PyDiGraph()
     dag.extend_from_weighted_edge_list([
         (0, 1, 1),
         (0, 3, 1),
         (3, 4, 1),
         (4, 5, 1),
         (1, 2, 1),
         (0, 1, 3),
     ])
     self.assertEqual(
         4.0,
         retworkx.dag_weighted_longest_path_length(
             dag, weight_fn=lambda _, __, weight: float(weight)),
     )
     self.assertEqual(
         [0, 1, 2],
         retworkx.dag_weighted_longest_path(
             dag, lambda _, __, weight: float(weight)),
     )