def test_dijkstra_all_pair_path_lengths_with_node_removal(self): self.graph.remove_node(3) lengths = retworkx.digraph_all_pairs_dijkstra_path_lengths( self.graph, float) expected = { 0: { 1: 7.0, 2: 17.0, 5: 22.0 }, 1: { 0: 19.0, 2: 10.0, 5: 15.0 }, 2: { 0: 9.0, 1: 16.0, 5: 11.0 }, 4: { 5: 6.0 }, 5: {}, } self.assertEqual(expected, lengths)
def test_vs_dijkstra_all_pairs_with_node_removal(self): graph = retworkx.PyDiGraph() a = graph.add_node("A") b = graph.add_node("B") c = graph.add_node("C") d = graph.add_node("D") e = graph.add_node("E") f = graph.add_node("F") edge_list = [ (a, b, 7), (c, a, 9), (a, d, 14), (b, c, 10), (d, c, 2), (d, e, 9), (b, f, 15), (c, f, 11), (e, f, 6), ] graph.add_edges_from(edge_list) graph.remove_node(d) dijkstra_lengths = retworkx.digraph_all_pairs_dijkstra_path_lengths( graph, float) expected = {k: {**v, k: 0.0} for k, v in dijkstra_lengths.items()} result = retworkx.digraph_floyd_warshall( graph, float, parallel_threshold=self.parallel_threshold) self.assertEqual(result, expected)
def test_dijkstra_all_pair_path_lengths_graph_no_edges(self): graph = retworkx.PyDiGraph() graph.add_nodes_from(list(range(1000))) expected = {x: {} for x in range(1000)} self.assertEqual( expected, retworkx.digraph_all_pairs_dijkstra_path_lengths(graph, float), )
def test_dijkstra_all_pair_path_lengths(self): lengths = retworkx.digraph_all_pairs_dijkstra_path_lengths( self.graph, float) expected = { 0: { 1: 7.0, 2: 16.0, 3: 14.0, 4: 23.0, 5: 22.0 }, 1: { 0: 19.0, 2: 10.0, 3: 33.0, 4: 42.0, 5: 15.0 }, 2: { 0: 9.0, 1: 16.0, 3: 23.0, 4: 32.0, 5: 11.0 }, 3: { 0: 11.0, 1: 18.0, 2: 2.0, 4: 9.0, 5: 13.0 }, 4: { 5: 6.0 }, 5: {}, } self.assertEqual(expected, lengths)
def test_dijkstra_all_pair_path_lengths_empty_graph(self): graph = retworkx.PyDiGraph() self.assertEqual({}, retworkx.digraph_all_pairs_dijkstra_path_lengths( graph, float))