def test_returns_3_shortest_hypergraphs_for_nielsen_example_with_k_equal_3( self): threeShortest = ksh.k_shortest_hyperpaths( self.nielsenGraph, 's', 't', 3) self.assertEquals(len(threeShortest), 3) # shortest path hyperpath = threeShortest[0] self.assertEqual(hyperpath.get_node_set(), {'s', '1', '2', 't'}) self.assertEqual(len(hyperpath.get_hyperedge_id_set()), 3) self.assertTrue(hyperpath.get_hyperedge_id({'s'}, {'1'})) self.assertTrue(hyperpath.get_hyperedge_id({'s'}, {'2'})) self.assertTrue(hyperpath.get_hyperedge_id({'1', '2'}, {'t'})) # second shortest path hyperpath = threeShortest[1] self.assertEqual(hyperpath.get_node_set(), {'s', '1', '2', 't'}) self.assertEqual(len(hyperpath.get_hyperedge_id_set()), 3) self.assertTrue(hyperpath.get_hyperedge_id({'s'}, {'1'})) self.assertTrue(hyperpath.get_hyperedge_id({'1'}, {'2'})) self.assertTrue(hyperpath.get_hyperedge_id({'1', '2'}, {'t'})) # third shortest path hyperpath = threeShortest[2] self.assertEqual(hyperpath.get_node_set(), {'s', '2', '3', '4', 't'}) self.assertEqual(len(hyperpath.get_hyperedge_id_set()), 4) self.assertTrue(hyperpath.get_hyperedge_id({'s'}, {'2'})) self.assertTrue(hyperpath.get_hyperedge_id({'s'}, {'3'})) self.assertTrue(hyperpath.get_hyperedge_id({'2', '3'}, {'4'})) self.assertTrue(hyperpath.get_hyperedge_id({'4'}, {'t'}))
def test_returns_3_shortest_hypergraphs_for_nielsen_example_with_k_equal_3( self): threeShortest = ksh.k_shortest_hyperpaths(self.nielsenGraph, 's', 't', 3) self.assertEqual(len(threeShortest), 3) # shortest path hyperpath = threeShortest[0] self.assertEqual(hyperpath.get_node_set(), {'s', '1', '2', 't'}) self.assertEqual(len(hyperpath.get_hyperedge_id_set()), 3) self.assertTrue(hyperpath.get_hyperedge_id({'s'}, {'1'})) self.assertTrue(hyperpath.get_hyperedge_id({'s'}, {'2'})) self.assertTrue(hyperpath.get_hyperedge_id({'1', '2'}, {'t'})) # second shortest path hyperpath = threeShortest[1] self.assertEqual(hyperpath.get_node_set(), {'s', '1', '2', 't'}) self.assertEqual(len(hyperpath.get_hyperedge_id_set()), 3) self.assertTrue(hyperpath.get_hyperedge_id({'s'}, {'1'})) self.assertTrue(hyperpath.get_hyperedge_id({'1'}, {'2'})) self.assertTrue(hyperpath.get_hyperedge_id({'1', '2'}, {'t'})) # third shortest path hyperpath = threeShortest[2] self.assertEqual(hyperpath.get_node_set(), {'s', '2', '3', '4', 't'}) self.assertEqual(len(hyperpath.get_hyperedge_id_set()), 4) self.assertTrue(hyperpath.get_hyperedge_id({'s'}, {'2'})) self.assertTrue(hyperpath.get_hyperedge_id({'s'}, {'3'})) self.assertTrue(hyperpath.get_hyperedge_id({'2', '3'}, {'4'})) self.assertTrue(hyperpath.get_hyperedge_id({'4'}, {'t'}))
def test_returns_empty_list_if_no_s_t_path(self): H = DirectedHypergraph() H.add_node('s') H.add_node('1') H.add_node('2') H.add_node('t') H.add_hyperedge({'s'}, {'1'}, weight=1) H.add_hyperedge({'1', '2'}, {'t'}, weight=1) output = ksh.k_shortest_hyperpaths(H, 's', 't', 1) self.assertEqual(output, [])
def test_returns_empty_list_if_no_s_t_path(self): H = DirectedHypergraph() H.add_node('s') H.add_node('1') H.add_node('2') H.add_node('t') H.add_hyperedge({'s'}, {'1'}, weight=1) H.add_hyperedge({'1', '2'}, {'t'}, weight=1) output = ksh.k_shortest_hyperpaths(H, 's', 't', 1) self.assertEqual(output, [])
def test_returns_only_one_hyperpath_for_k_equals_one(self): H = DirectedHypergraph() H.add_node('s') H.add_node('1') H.add_node('2') H.add_node('3') H.add_node('t') H.add_hyperedge({'s'}, {'1'}, weight=1) H.add_hyperedge({'s'}, {'2'}, weight=1) H.add_hyperedge({'s'}, {'3'}, weight=1) H.add_hyperedge({'1'}, {'t'}, weight=1) H.add_hyperedge({'2', '3'}, {'t'}, weight=1) output = ksh.k_shortest_hyperpaths(H, 's', 't', 1) self.assertEqual(len(output), 1)
def test_returns_only_one_hyperpath_for_k_equals_one(self): H = DirectedHypergraph() H.add_node('s') H.add_node('1') H.add_node('2') H.add_node('3') H.add_node('t') H.add_hyperedge({'s'}, {'1'}, weight=1) H.add_hyperedge({'s'}, {'2'}, weight=1) H.add_hyperedge({'s'}, {'3'}, weight=1) H.add_hyperedge({'1'}, {'t'}, weight=1) H.add_hyperedge({'2', '3'}, {'t'}, weight=1) output = ksh.k_shortest_hyperpaths(H, 's', 't', 1) self.assertEqual(len(output), 1)
def test_returns_shortest_hyperpath_for_k_equals_one(self): H = DirectedHypergraph() H.add_node('s') H.add_node('1') H.add_node('2') H.add_node('3') H.add_node('t') H.add_hyperedge({'s'}, {'1'}, weight=1) H.add_hyperedge({'s'}, {'2'}, weight=1) H.add_hyperedge({'s'}, {'3'}, weight=1) H.add_hyperedge({'1'}, {'t'}, weight=1) H.add_hyperedge({'2', '3'}, {'t'}, weight=1) output = ksh.k_shortest_hyperpaths(H, 's', 't', 1) hyperpath = output[0] self.assertEqual(hyperpath.get_node_set(), {'s', '1', 't'}) self.assertEqual(len(hyperpath.get_hyperedge_id_set()), 2) self.assertTrue(hyperpath.get_hyperedge_id({'s'}, {'1'})) self.assertTrue(hyperpath.get_hyperedge_id({'1'}, {'t'}))
def test_returns_shortest_hyperpath_for_k_equals_one(self): H = DirectedHypergraph() H.add_node('s') H.add_node('1') H.add_node('2') H.add_node('3') H.add_node('t') H.add_hyperedge({'s'}, {'1'}, weight=1) H.add_hyperedge({'s'}, {'2'}, weight=1) H.add_hyperedge({'s'}, {'3'}, weight=1) H.add_hyperedge({'1'}, {'t'}, weight=1) H.add_hyperedge({'2', '3'}, {'t'}, weight=1) output = ksh.k_shortest_hyperpaths(H, 's', 't', 1) hyperpath = output[0] self.assertEqual(hyperpath.get_node_set(), {'s', '1', 't'}) self.assertEqual(len(hyperpath.get_hyperedge_id_set()), 2) self.assertTrue(hyperpath.get_hyperedge_id({'s'}, {'1'})) self.assertTrue(hyperpath.get_hyperedge_id({'1'}, {'t'}))