1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import unittest
import retworkx
class TestKShortestpath(unittest.TestCase):
def test_digraph_k_shortest_path_lengths(self):
graph = retworkx.PyDiGraph()
graph.add_nodes_from(list(range(8)))
graph.add_edges_from_no_data([
(0, 1),
(1, 2),
(2, 3),
(3, 0),
(4, 5),
(1, 4),
(5, 6),
(6, 7),
(7, 5)
])
res = retworkx.digraph_k_shortest_path_lengths(graph, 1, 2,
lambda _: 1)
expected = {0: 7.0, 1: 4.0, 2: 5.0, 3: 6.0, 4: 5.0, 5: 5.0, 6: 6.0,
7: 7.0}
self.assertEqual(res, expected)
def test_digraph_k_shortest_path_lengths_with_goal(self):
graph = retworkx.PyDiGraph()
graph.add_nodes_from(list(range(8)))
graph.add_edges_from_no_data([
(0, 1),
(1, 2),
(2, 3),
(3, 0),
(4, 5),
(1, 4),
(5, 6),
(6, 7),
(7, 5)
])
res = retworkx.digraph_k_shortest_path_lengths(graph, 1, 2,
lambda _: 1, 3)
self.assertEqual(res, {3: 6})
def test_graph_k_shortest_path_lengths(self):
graph = retworkx.PyGraph()
graph.add_nodes_from(list(range(8)))
graph.add_edges_from_no_data([
(0, 1),
(1, 2),
(2, 3),
(3, 0),
(4, 5),
(1, 4),
(5, 6),
(6, 7),
(7, 5)
])
res = retworkx.graph_k_shortest_path_lengths(graph, 1, 2, lambda _: 1)
expected = {0: 3, 1: 2, 2: 3, 3: 2, 4: 3, 5: 4, 6: 4, 7: 4}
self.assertEqual(res, expected)
def test_k_graph_shortest_path_with_goal(self):
graph = retworkx.PyGraph()
graph.add_nodes_from(list(range(7)))
graph.add_edges_from_no_data([
(0, 1), (0, 6), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)])
res = retworkx.graph_k_shortest_path_lengths(graph, 0, 2, lambda _: 1,
3)
self.assertEqual({3: 4}, res)