class TestBFS_Case_6(unittest.TestCase): START = None graph = None def setUp(self): self.START = 3 self.graph = Graph(self.START) self.graph.add_edge(10, 6) self.graph.add_edge(3, 1) self.graph.add_edge(10, 1) self.graph.add_edge(3, 1) self.graph.add_edge(1, 8) self.graph.add_edge(5, 2) return super().setUp() def test_case_6(self): self.graph.get_all_paths() self.graph.get_costs() self.assertEqual(self.graph.get_costs(), [6, -1, -1, -1, -1, -1, 12, -1, 12]) def tearDown(self): del self.START del self.graph return super().tearDown()
def read_graph(self): """ Dataset is in txt each line is in the format "FromNodeId, ToNodeId" Since we are not interested on the weight, we get only the first two attributes We remove the last element in the list splitted [:-1] :return: """ filename = self.path edges = [] with open(filename) as f: for line in f: edges.append([int(n) for n in line.strip().split()][:-1]) nodes = [] for e in edges[:-1]: nodes.append(e[0]) nodes.append(e[1]) nodes = list(set(nodes)) myGraph = Graph(len(nodes)) for el in edges[:-1]: curr_edge = Edge(Node(el[0]), Node(el[1])) myGraph.add_edge(curr_edge) if self.is_undirected: curr_edge_inv = Edge(Node(el[1]), Node(el[0])) myGraph.add_edge(curr_edge_inv) return myGraph
class TestBFS_Case_1(unittest.TestCase): START = None graph = None def setUp(self): self.START = 2 self.graph = Graph(self.START) self.graph.add_edge(3, 1) self.graph.add_edge(2, 3) return super().setUp() def test_case_1(self): self.graph.get_all_paths() self.graph.get_costs() self.assertEqual(self.graph.get_costs(), [-1, 6]) def tearDown(self): del self.START del self.graph return super().tearDown()
class TestBFS_Case_0(unittest.TestCase): START = None graph = None def setUp(self): self.START = 1 self.graph = Graph(self.START) self.graph.add_edge(4, 2) self.graph.add_edge(1, 2) self.graph.add_edge(1, 3) return super().setUp() def test_case_0(self): self.graph.get_all_paths() self.graph.get_costs() self.assertEqual(self.graph.get_costs(), [6, 6, -1]) def tearDown(self): del self.START del self.graph return super().tearDown()
for nextv in self._graph.adj(current): if self._order.get(nextv) is None: self._search(current, nextv) self._low[current] = min(self._low[current], self._low[nextv]) if self._low[current] == self._order[ current] and current != self.start: self._briges.append((pre, current)) elif nextv != pre: # 不是来的路径 self._low[current] = min(self._low[nextv], self._order[current]) def has_brige(self): return len(self._briges) == 0 def briges(self): return self._briges # ================= test =============== if __name__ == '__main__': g = Graph() g.add_edge(1, 3) # g.add_edge(1, 2) # g.add_edge(1, 6) # g.add_edge(4, 3) # g.add_edge(2, 6) # g.add_edge(9, 10) # g.add_edge(6, 10) s = Brige(g) print(s.briges())
self._marked[start] = True self._id[start] = self._count while not q.empty(): vertex = q.get() for v in self._graph.adj(vertex): if self._marked.get(v) is not True: q.put(v) self._marked[v] = True self._id[v] = self._count def is_connect(self, vertex1, vertex2): return self._id[vertex1] == self._id[vertex2] def CC_count(self): return self._count # ================= test =============== if __name__ == '__main__': with open('./tinyG.txt') as f: g = Graph() f.readline() f.readline() for l in f.readlines(): datas = l.split(' ') g.add_edge(int(datas[0]), int(datas[1])) s = CC(g) print(s.CC_count()) print(s.is_connect(2, 6))
class TestBFS_Case_15(unittest.TestCase): START = None graph = None def setUp(self): self.START = 152 self.graph = Graph(self.START) self.graph.add_edge(165, 298) self.graph.add_edge(21, 34) self.graph.add_edge(115, 12) self.graph.add_edge(79, 102) self.graph.add_edge(116, 150) self.graph.add_edge(40, 94) self.graph.add_edge(51, 54) self.graph.add_edge(159, 72) self.graph.add_edge(35, 42) self.graph.add_edge(114, 98) self.graph.add_edge(14, 30) self.graph.add_edge(133, 68) self.graph.add_edge(101, 72) self.graph.add_edge(163, 132) self.graph.add_edge(165, 144) self.graph.add_edge(162, 84) self.graph.add_edge(125, 1) self.graph.add_edge(18, 78) self.graph.add_edge(15, 162) self.graph.add_edge(102, 54) self.graph.add_edge(81, 50) self.graph.add_edge(82, 138) self.graph.add_edge(7, 80) self.graph.add_edge(64, 28) self.graph.add_edge(164, 38) self.graph.add_edge(64, 154) self.graph.add_edge(25, 100) self.graph.add_edge(41, 92) self.graph.add_edge(102, 52) self.graph.add_edge(39, 92) self.graph.add_edge(32, 56) self.graph.add_edge(158, 64) self.graph.add_edge(79, 106) self.graph.add_edge(57, 150) self.graph.add_edge(102, 132) self.graph.add_edge(42, 28) self.graph.add_edge(102, 58) self.graph.add_edge(90, 100) self.graph.add_edge(104, 40) self.graph.add_edge(103, 102) self.graph.add_edge(117, 64) self.graph.add_edge(2, 50) self.graph.add_edge(117, 146) self.graph.add_edge(105, 130) self.graph.add_edge(97, 110) self.graph.add_edge(12, 32) self.graph.add_edge(155, 154) self.graph.add_edge(152, 92) self.graph.add_edge(23, 44) self.graph.add_edge(94, 58) self.graph.add_edge(121, 86) self.graph.add_edge(144, 98) self.graph.add_edge(27, 66) self.graph.add_edge(113, 10) self.graph.add_edge(62, 14) self.graph.add_edge(143, 26) self.graph.add_edge(72, 26) self.graph.add_edge(101, 128) self.graph.add_edge(22, 14) self.graph.add_edge(13, 14) self.graph.add_edge(132, 124) self.graph.add_edge(115, 90) self.graph.add_edge(154, 60) self.graph.add_edge(27, 84) self.graph.add_edge(83, 158) self.graph.add_edge(34, 50) self.graph.add_edge(120, 112) self.graph.add_edge(27, 118) self.graph.add_edge(108, 116) self.graph.add_edge(150, 66) self.graph.add_edge(81, 136) self.graph.add_edge(67, 126) self.graph.add_edge(109, 86) self.graph.add_edge(164, 128) self.graph.add_edge(122, 92) self.graph.add_edge(140, 30) self.graph.add_edge(159, 122) self.graph.add_edge(137, 98) self.graph.add_edge(142, 64) self.graph.add_edge(12, 124) self.graph.add_edge(123, 96) self.graph.add_edge(58, 162) self.graph.add_edge(150, 138) self.graph.add_edge(154, 34) self.graph.add_edge(159, 102) self.graph.add_edge(132, 100) self.graph.add_edge(8, 72) self.graph.add_edge(123, 90) self.graph.add_edge(40, 58) self.graph.add_edge(84, 144) self.graph.add_edge(121, 146) self.graph.add_edge(47, 108) self.graph.add_edge(25, 32) self.graph.add_edge(163, 100) self.graph.add_edge(43, 38) self.graph.add_edge(36, 94) self.graph.add_edge(73, 132) self.graph.add_edge(116, 134) self.graph.add_edge(67, 134) self.graph.add_edge(23, 32) self.graph.add_edge(63, 32) self.graph.add_edge(112, 74) self.graph.add_edge(21, 100) self.graph.add_edge(90, 54) self.graph.add_edge(81, 116) self.graph.add_edge(48, 82) self.graph.add_edge(34, 6) self.graph.add_edge(3, 12) self.graph.add_edge(156, 130) self.graph.add_edge(38, 154) self.graph.add_edge(112, 156) self.graph.add_edge(54, 80) self.graph.add_edge(95, 34) self.graph.add_edge(123, 62) self.graph.add_edge(60, 54) self.graph.add_edge(161, 156) self.graph.add_edge(112, 158) self.graph.add_edge(73, 46) self.graph.add_edge(96, 64) self.graph.add_edge(99, 76) self.graph.add_edge(10, 28) self.graph.add_edge(1, 146) self.graph.add_edge(41, 152) self.graph.add_edge(117, 18) self.graph.add_edge(35, 26) self.graph.add_edge(59, 128) self.graph.add_edge(63, 54) self.graph.add_edge(40, 144) self.graph.add_edge(93, 66) self.graph.add_edge(75, 78) self.graph.add_edge(109, 1) self.graph.add_edge(116, 70) self.graph.add_edge(157, 120) self.graph.add_edge(115, 110) self.graph.add_edge(51, 150) self.graph.add_edge(143, 116) self.graph.add_edge(15, 160) self.graph.add_edge(9, 54) self.graph.add_edge(120, 156) self.graph.add_edge(42, 10) self.graph.add_edge(45, 70) self.graph.add_edge(125, 58) self.graph.add_edge(119, 48) self.graph.add_edge(5, 76) self.graph.add_edge(31, 46) self.graph.add_edge(92, 8) self.graph.add_edge(39, 94) self.graph.add_edge(125, 22) self.graph.add_edge(115, 54) self.graph.add_edge(117, 124) self.graph.add_edge(162, 38) self.graph.add_edge(71, 90) self.graph.add_edge(10, 150) self.graph.add_edge(81, 94) self.graph.add_edge(87, 106) self.graph.add_edge(109, 136) self.graph.add_edge(150, 132) self.graph.add_edge(89, 134) self.graph.add_edge(142, 14) self.graph.add_edge(151, 164) self.graph.add_edge(111, 96) self.graph.add_edge(68, 56) self.graph.add_edge(142, 36) self.graph.add_edge(122, 164) self.graph.add_edge(150, 148) self.graph.add_edge(56, 6) self.graph.add_edge(49, 104) self.graph.add_edge(98, 32) self.graph.add_edge(147, 94) self.graph.add_edge(1, 80) self.graph.add_edge(58, 134) self.graph.add_edge(16, 8) self.graph.add_edge(30, 56) self.graph.add_edge(66, 144) self.graph.add_edge(143, 128) self.graph.add_edge(22, 94) self.graph.add_edge(98, 82) self.graph.add_edge(17, 26) self.graph.add_edge(35, 78) self.graph.add_edge(72, 80) self.graph.add_edge(142, 64) self.graph.add_edge(35, 18) self.graph.add_edge(122, 100) self.graph.add_edge(125, 24) self.graph.add_edge(143, 164) self.graph.add_edge(151, 52) self.graph.add_edge(142, 80) self.graph.add_edge(156, 1) self.graph.add_edge(117, 104) self.graph.add_edge(122, 30) self.graph.add_edge(132, 64) self.graph.add_edge(53, 26) self.graph.add_edge(2, 34) self.graph.add_edge(36, 160) self.graph.add_edge(158, 150) self.graph.add_edge(124, 8) self.graph.add_edge(54, 38) self.graph.add_edge(81, 44) self.graph.add_edge(137, 120) self.graph.add_edge(87, 138) self.graph.add_edge(126, 127) self.graph.add_edge(48, 134) self.graph.add_edge(104, 30) self.graph.add_edge(115, 70) self.graph.add_edge(63, 2) self.graph.add_edge(102, 92) self.graph.add_edge(90, 72) self.graph.add_edge(3, 72) self.graph.add_edge(58, 92) self.graph.add_edge(23, 108) self.graph.add_edge(90, 160) self.graph.add_edge(120, 138) self.graph.add_edge(83, 114) self.graph.add_edge(10, 52) self.graph.add_edge(144, 108) self.graph.add_edge(101, 114) self.graph.add_edge(108, 154) self.graph.add_edge(117, 96) self.graph.add_edge(14, 40) self.graph.add_edge(160, 48) self.graph.add_edge(95, 38) self.graph.add_edge(119, 36) self.graph.add_edge(151, 136) self.graph.add_edge(23, 74) self.graph.add_edge(65, 98) self.graph.add_edge(146, 78) self.graph.add_edge(71, 26) self.graph.add_edge(105, 92) self.graph.add_edge(145, 138) self.graph.add_edge(77, 10) self.graph.add_edge(24, 122) self.graph.add_edge(149, 48) self.graph.add_edge(23, 2) self.graph.add_edge(92, 134) self.graph.add_edge(103, 18) self.graph.add_edge(91, 96) self.graph.add_edge(11, 22) self.graph.add_edge(70, 152) self.graph.add_edge(96, 162) self.graph.add_edge(94, 88) self.graph.add_edge(75, 122) self.graph.add_edge(1, 42) self.graph.add_edge(144, 52) self.graph.add_edge(145, 74) self.graph.add_edge(75, 38) self.graph.add_edge(152, 88) self.graph.add_edge(139, 132) self.graph.add_edge(78, 50) self.graph.add_edge(15, 60) self.graph.add_edge(131, 78) self.graph.add_edge(83, 22) self.graph.add_edge(72, 44) self.graph.add_edge(1, 126) self.graph.add_edge(120, 136) self.graph.add_edge(41, 42) self.graph.add_edge(82, 74) self.graph.add_edge(18, 19) self.graph.add_edge(155, 32) self.graph.add_edge(27, 144) self.graph.add_edge(155, 28) self.graph.add_edge(99, 40) self.graph.add_edge(32, 102) self.graph.add_edge(3, 162) self.graph.add_edge(81, 16) self.graph.add_edge(154, 108) self.graph.add_edge(5, 114) self.graph.add_edge(150, 10) self.graph.add_edge(131, 68) self.graph.add_edge(163, 90) self.graph.add_edge(50, 64) self.graph.add_edge(64, 158) self.graph.add_edge(31, 102) self.graph.add_edge(73, 38) self.graph.add_edge(83, 68) self.graph.add_edge(64, 14) self.graph.add_edge(87, 100) self.graph.add_edge(15, 36) self.graph.add_edge(137, 34) self.graph.add_edge(114, 42) self.graph.add_edge(61, 80) self.graph.add_edge(54, 62) self.graph.add_edge(99, 74) self.graph.add_edge(154, 28) self.graph.add_edge(133, 12) self.graph.add_edge(161, 86) self.graph.add_edge(79, 158) self.graph.add_edge(79, 82) self.graph.add_edge(10, 146) self.graph.add_edge(150, 48) self.graph.add_edge(72, 6) self.graph.add_edge(107, 92) self.graph.add_edge(88, 80) self.graph.add_edge(19, 8) self.graph.add_edge(162, 10) self.graph.add_edge(118, 58) self.graph.add_edge(99, 10) self.graph.add_edge(84, 94) self.graph.add_edge(59, 86) self.graph.add_edge(93, 84) return super().setUp() def test_case_15(self): self.graph.get_all_paths() self.graph.get_costs() self.assertEqual(self.graph.get_costs(), [ 18, 30, 24, -1, 24, 24, 18, 12, 24, 18, 24, 18, 30, 24, 24, 18, 30, 24, 18, -1, 24, 18, 24, 18, 24, 24, 24, 18, -1, 18, 18, 18, -1, 30, 18, 18, -1, 24, 12, 18, 6, 12, 30, 24, 12, 24, 24, 18, 30, 24, 24, 18, 30, 18, -1, 24, 24, 12, 30, 24, 18, 24, 24, 24, 30, 24, 18, 30, -1, 6, 24, 18, 24, 30, 18, 30, 24, 24, 18, 12, 18, 24, 24, 18, -1, 30, 24, 6, 18, 18, 30, 6, 24, 12, 30, 24, 24, 24, 24, 18, 24, 12, 18, 24, 12, 24, 12, 18, 24, 18, 30, 30, 24, 18, 12, 12, 24, 18, 24, 30, 30, 12, 24, 18, 18, 24, 30, 24, -1, 18, 30, 18, 24, 12, -1, 24, 30, 24, 24, 24, -1, 18, 18, 24, 30, 24, 18, 24, 24, 18, 24, -1, 24, 24, 24, 36, 24, 18, 24, 30, 18, 24, 18, 30 ]) def tearDown(self): del self.START del self.graph return super().tearDown()
if all(visited): return True else: return False def find_mother_vortex(g: Graph): for i in range(g.vertices): visited = [False] * g.vertices if find_mother_vortex_helper(g, i, visited): return i return -1 g = Graph(4) g.add_edge(3, 0) g.add_edge(0, 1) g.add_edge(1, 2) g.add_edge(3, 1) print(find_mother_vortex(g)) g1 = Graph(3) g1.add_edge(0, 1) g1.add_edge(1, 2) g1.add_edge(2, 0) print(find_mother_vortex(g1)) g2 = Graph(4) g2.add_edge(0, 1) g2.add_edge(2, 3)
class TestBFS_Case_18(unittest.TestCase): START = None graph = None def setUp(self): self.START = 40 self.graph = Graph(self.START) self.graph.add_edge(54, 455) self.graph.add_edge(30, 4) self.graph.add_edge(30, 37) self.graph.add_edge(30, 53) self.graph.add_edge(50, 26) self.graph.add_edge(45, 11) self.graph.add_edge(30, 4) self.graph.add_edge(40, 28) self.graph.add_edge(10, 9) self.graph.add_edge(5, 50) self.graph.add_edge(50, 34) self.graph.add_edge(1, 29) self.graph.add_edge(15, 36) self.graph.add_edge(30, 20) self.graph.add_edge(35, 54) self.graph.add_edge(45, 25) self.graph.add_edge(30, 22) self.graph.add_edge(10, 50) self.graph.add_edge(25, 43) self.graph.add_edge(50, 21) self.graph.add_edge(5, 46) self.graph.add_edge(5, 23) self.graph.add_edge(35, 16) self.graph.add_edge(40, 41) self.graph.add_edge(15, 7) self.graph.add_edge(30, 4) self.graph.add_edge(15, 4) self.graph.add_edge(5, 38) self.graph.add_edge(40, 13) self.graph.add_edge(35, 36) self.graph.add_edge(15, 35) self.graph.add_edge(35, 33) self.graph.add_edge(30, 9) self.graph.add_edge(45, 2) self.graph.add_edge(35, 23) self.graph.add_edge(25, 35) self.graph.add_edge(15, 1) self.graph.add_edge(15, 54) self.graph.add_edge(40, 27) self.graph.add_edge(20, 16) self.graph.add_edge(20, 53) self.graph.add_edge(45, 44) self.graph.add_edge(15, 40) self.graph.add_edge(30, 22) self.graph.add_edge(50, 10) self.graph.add_edge(1, 50) self.graph.add_edge(45, 1) self.graph.add_edge(1, 43) self.graph.add_edge(1, 32) self.graph.add_edge(40, 32) self.graph.add_edge(30, 10) self.graph.add_edge(20, 36) self.graph.add_edge(5, 16) self.graph.add_edge(50, 34) self.graph.add_edge(30, 24) self.graph.add_edge(35, 30) self.graph.add_edge(30, 10) self.graph.add_edge(1, 48) self.graph.add_edge(1, 8) self.graph.add_edge(15, 18) self.graph.add_edge(30, 18) self.graph.add_edge(10, 11) self.graph.add_edge(1, 37) self.graph.add_edge(50, 12) self.graph.add_edge(40, 44) self.graph.add_edge(1, 38) self.graph.add_edge(40, 52) self.graph.add_edge(30, 48) self.graph.add_edge(20, 45) self.graph.add_edge(40, 8) self.graph.add_edge(5, 15) self.graph.add_edge(25, 20) self.graph.add_edge(45, 46) self.graph.add_edge(15, 35) self.graph.add_edge(20, 28) self.graph.add_edge(25, 36) self.graph.add_edge(40, 4) self.graph.add_edge(15, 2) self.graph.add_edge(15, 47) self.graph.add_edge(1, 13) self.graph.add_edge(25, 54) self.graph.add_edge(50, 19) self.graph.add_edge(35, 12) self.graph.add_edge(35, 23) self.graph.add_edge(45, 20) self.graph.add_edge(40, 16) self.graph.add_edge(5, 27) self.graph.add_edge(1, 43) self.graph.add_edge(35, 18) self.graph.add_edge(50, 17) self.graph.add_edge(1, 47) self.graph.add_edge(50, 14) self.graph.add_edge(30, 39) self.graph.add_edge(10, 37) self.graph.add_edge(10, 2) self.graph.add_edge(25, 27) self.graph.add_edge(1, 2) self.graph.add_edge(40, 37) self.graph.add_edge(35, 20) self.graph.add_edge(10, 18) self.graph.add_edge(15, 14) self.graph.add_edge(40, 51) self.graph.add_edge(30, 44) self.graph.add_edge(5, 15) self.graph.add_edge(40, 26) self.graph.add_edge(25, 41) self.graph.add_edge(20, 6) self.graph.add_edge(40, 9) self.graph.add_edge(35, 52) self.graph.add_edge(40, 25) self.graph.add_edge(1, 52) self.graph.add_edge(15, 41) self.graph.add_edge(20, 51) self.graph.add_edge(30, 26) self.graph.add_edge(30, 34) self.graph.add_edge(15, 21) self.graph.add_edge(30, 31) self.graph.add_edge(25, 52) self.graph.add_edge(30, 54) self.graph.add_edge(30, 2) self.graph.add_edge(20, 43) self.graph.add_edge(5, 3) self.graph.add_edge(25, 21) self.graph.add_edge(50, 47) self.graph.add_edge(5, 35) self.graph.add_edge(40, 13) self.graph.add_edge(30, 33) self.graph.add_edge(5, 24) self.graph.add_edge(25, 54) self.graph.add_edge(50, 19) self.graph.add_edge(50, 25) self.graph.add_edge(35, 12) self.graph.add_edge(1, 26) self.graph.add_edge(50, 4) self.graph.add_edge(50, 44) self.graph.add_edge(35, 54) self.graph.add_edge(5, 51) self.graph.add_edge(20, 4) self.graph.add_edge(50, 18) self.graph.add_edge(10, 52) self.graph.add_edge(10, 54) self.graph.add_edge(20, 31) self.graph.add_edge(50, 2) self.graph.add_edge(45, 52) self.graph.add_edge(45, 27) self.graph.add_edge(45, 33) self.graph.add_edge(35, 14) self.graph.add_edge(25, 11) self.graph.add_edge(10, 32) self.graph.add_edge(10, 21) self.graph.add_edge(40, 1) self.graph.add_edge(20, 18) self.graph.add_edge(50, 32) self.graph.add_edge(5, 17) self.graph.add_edge(5, 11) self.graph.add_edge(15, 10) self.graph.add_edge(1, 50) self.graph.add_edge(10, 27) self.graph.add_edge(50, 10) self.graph.add_edge(1, 17) self.graph.add_edge(10, 44) self.graph.add_edge(10, 49) self.graph.add_edge(50, 31) self.graph.add_edge(40, 22) self.graph.add_edge(5, 46) self.graph.add_edge(15, 1) self.graph.add_edge(20, 17) self.graph.add_edge(50, 22) self.graph.add_edge(1, 17) self.graph.add_edge(40, 4) self.graph.add_edge(40, 38) self.graph.add_edge(45, 20) self.graph.add_edge(30, 42) self.graph.add_edge(15, 32) self.graph.add_edge(25, 31) self.graph.add_edge(25, 8) self.graph.add_edge(20, 43) self.graph.add_edge(40, 42) self.graph.add_edge(45, 35) self.graph.add_edge(15, 34) self.graph.add_edge(1, 19) self.graph.add_edge(35, 4) self.graph.add_edge(25, 49) self.graph.add_edge(25, 3) self.graph.add_edge(50, 27) self.graph.add_edge(15, 35) self.graph.add_edge(20, 2) self.graph.add_edge(50, 22) self.graph.add_edge(30, 32) self.graph.add_edge(20, 41) self.graph.add_edge(25, 46) self.graph.add_edge(40, 49) self.graph.add_edge(5, 37) self.graph.add_edge(15, 47) self.graph.add_edge(20, 24) self.graph.add_edge(40, 39) self.graph.add_edge(40, 38) self.graph.add_edge(40, 7) self.graph.add_edge(50, 22) self.graph.add_edge(5, 20) self.graph.add_edge(15, 23) self.graph.add_edge(20, 27) self.graph.add_edge(20, 13) self.graph.add_edge(10, 54) self.graph.add_edge(45, 46) self.graph.add_edge(40, 7) self.graph.add_edge(5, 37) self.graph.add_edge(30, 42) self.graph.add_edge(15, 37) self.graph.add_edge(25, 31) self.graph.add_edge(40, 37) self.graph.add_edge(50, 37) self.graph.add_edge(35, 30) self.graph.add_edge(50, 24) self.graph.add_edge(40, 41) self.graph.add_edge(50, 34) self.graph.add_edge(1, 43) self.graph.add_edge(50, 32) self.graph.add_edge(45, 22) self.graph.add_edge(35, 10) self.graph.add_edge(30, 36) self.graph.add_edge(40, 13) self.graph.add_edge(15, 10) self.graph.add_edge(15, 4) self.graph.add_edge(25, 49) self.graph.add_edge(1, 17) self.graph.add_edge(50, 44) self.graph.add_edge(15, 44) self.graph.add_edge(30, 35) self.graph.add_edge(15, 33) self.graph.add_edge(15, 17) self.graph.add_edge(25, 41) self.graph.add_edge(15, 11) self.graph.add_edge(25, 22) self.graph.add_edge(45, 37) self.graph.add_edge(1, 39) self.graph.add_edge(35, 34) self.graph.add_edge(45, 13) self.graph.add_edge(30, 42) self.graph.add_edge(35, 31) self.graph.add_edge(45, 36) self.graph.add_edge(1, 15) self.graph.add_edge(50, 14) self.graph.add_edge(5, 38) self.graph.add_edge(35, 16) self.graph.add_edge(50, 31) self.graph.add_edge(35, 36) self.graph.add_edge(40, 43) self.graph.add_edge(1, 24) self.graph.add_edge(45, 5) self.graph.add_edge(30, 26) self.graph.add_edge(30, 27) self.graph.add_edge(45, 44) self.graph.add_edge(15, 3) self.graph.add_edge(20, 37) self.graph.add_edge(10, 22) self.graph.add_edge(25, 1) self.graph.add_edge(20, 8) self.graph.add_edge(30, 1) self.graph.add_edge(5, 26) self.graph.add_edge(40, 31) self.graph.add_edge(45, 48) self.graph.add_edge(40, 17) self.graph.add_edge(10, 51) self.graph.add_edge(1, 35) self.graph.add_edge(30, 9) self.graph.add_edge(50, 13) self.graph.add_edge(35, 22) self.graph.add_edge(30, 25) self.graph.add_edge(15, 16) self.graph.add_edge(1, 10) self.graph.add_edge(30, 42) self.graph.add_edge(45, 12) self.graph.add_edge(45, 39) self.graph.add_edge(20, 37) self.graph.add_edge(20, 51) self.graph.add_edge(20, 5) self.graph.add_edge(15, 46) self.graph.add_edge(35, 22) self.graph.add_edge(1, 13) self.graph.add_edge(35, 38) self.graph.add_edge(5, 20) self.graph.add_edge(35, 40) self.graph.add_edge(25, 21) self.graph.add_edge(20, 22) self.graph.add_edge(40, 3) self.graph.add_edge(40, 38) self.graph.add_edge(10, 31) self.graph.add_edge(20, 44) self.graph.add_edge(25, 22) self.graph.add_edge(50, 13) self.graph.add_edge(30, 1) self.graph.add_edge(35, 25) self.graph.add_edge(50, 38) self.graph.add_edge(10, 38) self.graph.add_edge(30, 13) self.graph.add_edge(30, 48) self.graph.add_edge(5, 34) self.graph.add_edge(50, 14) self.graph.add_edge(30, 41) self.graph.add_edge(1, 10) self.graph.add_edge(40, 20) self.graph.add_edge(35, 11) self.graph.add_edge(20, 14) self.graph.add_edge(30, 49) self.graph.add_edge(50, 38) self.graph.add_edge(45, 3) self.graph.add_edge(25, 50) self.graph.add_edge(20, 45) self.graph.add_edge(50, 31) self.graph.add_edge(50, 12) self.graph.add_edge(10, 37) self.graph.add_edge(25, 8) self.graph.add_edge(30, 38) self.graph.add_edge(25, 17) self.graph.add_edge(1, 2) self.graph.add_edge(45, 51) self.graph.add_edge(5, 53) self.graph.add_edge(20, 8) self.graph.add_edge(45, 42) self.graph.add_edge(5, 33) self.graph.add_edge(40, 23) self.graph.add_edge(40, 24) self.graph.add_edge(35, 44) self.graph.add_edge(40, 36) self.graph.add_edge(35, 14) self.graph.add_edge(10, 15) self.graph.add_edge(40, 5) self.graph.add_edge(40, 39) self.graph.add_edge(25, 52) self.graph.add_edge(45, 19) self.graph.add_edge(30, 52) self.graph.add_edge(45, 50) self.graph.add_edge(35, 34) self.graph.add_edge(10, 28) self.graph.add_edge(50, 39) self.graph.add_edge(45, 30) self.graph.add_edge(40, 36) self.graph.add_edge(30, 2) self.graph.add_edge(45, 5) self.graph.add_edge(30, 2) self.graph.add_edge(25, 18) self.graph.add_edge(35, 47) self.graph.add_edge(10, 33) self.graph.add_edge(50, 36) self.graph.add_edge(25, 51) self.graph.add_edge(30, 17) self.graph.add_edge(10, 27) self.graph.add_edge(35, 53) self.graph.add_edge(20, 42) self.graph.add_edge(45, 2) self.graph.add_edge(30, 2) self.graph.add_edge(10, 50) self.graph.add_edge(30, 47) self.graph.add_edge(35, 40) self.graph.add_edge(40, 52) self.graph.add_edge(45, 42) self.graph.add_edge(45, 34) self.graph.add_edge(10, 7) self.graph.add_edge(15, 20) self.graph.add_edge(50, 4) self.graph.add_edge(1, 43) self.graph.add_edge(25, 23) self.graph.add_edge(35, 42) self.graph.add_edge(35, 16) self.graph.add_edge(50, 19) self.graph.add_edge(35, 43) self.graph.add_edge(15, 12) self.graph.add_edge(20, 14) self.graph.add_edge(40, 16) self.graph.add_edge(30, 11) self.graph.add_edge(30, 33) self.graph.add_edge(50, 44) self.graph.add_edge(30, 3) self.graph.add_edge(40, 32) self.graph.add_edge(25, 51) self.graph.add_edge(30, 32) self.graph.add_edge(25, 39) self.graph.add_edge(45, 50) self.graph.add_edge(40, 51) self.graph.add_edge(40, 33) self.graph.add_edge(15, 44) self.graph.add_edge(45, 46) self.graph.add_edge(10, 22) self.graph.add_edge(45, 17) self.graph.add_edge(35, 33) self.graph.add_edge(50, 5) self.graph.add_edge(20, 11) self.graph.add_edge(20, 37) self.graph.add_edge(45, 27) self.graph.add_edge(10, 29) self.graph.add_edge(5, 26) self.graph.add_edge(5, 32) self.graph.add_edge(20, 38) self.graph.add_edge(5, 17) self.graph.add_edge(5, 20) self.graph.add_edge(30, 13) self.graph.add_edge(1, 5) self.graph.add_edge(20, 51) self.graph.add_edge(40, 12) self.graph.add_edge(1, 51) self.graph.add_edge(50, 7) self.graph.add_edge(30, 21) self.graph.add_edge(15, 37) self.graph.add_edge(20, 3) self.graph.add_edge(45, 39) self.graph.add_edge(5, 10) self.graph.add_edge(45, 30) self.graph.add_edge(20, 33) self.graph.add_edge(1, 28) self.graph.add_edge(45, 53) self.graph.add_edge(5, 12) self.graph.add_edge(45, 12) self.graph.add_edge(1, 5) self.graph.add_edge(25, 16) self.graph.add_edge(10, 6) self.graph.add_edge(1, 18) self.graph.add_edge(45, 29) self.graph.add_edge(50, 1) self.graph.add_edge(20, 29) self.graph.add_edge(25, 43) self.graph.add_edge(50, 8) self.graph.add_edge(35, 19) self.graph.add_edge(40, 28) self.graph.add_edge(50, 41) self.graph.add_edge(10, 19) self.graph.add_edge(25, 30) self.graph.add_edge(25, 47) self.graph.add_edge(25, 10) self.graph.add_edge(15, 53) self.graph.add_edge(20, 1) self.graph.add_edge(25, 48) self.graph.add_edge(30, 37) self.graph.add_edge(1, 28) self.graph.add_edge(30, 7) self.graph.add_edge(5, 3) self.graph.add_edge(10, 14) self.graph.add_edge(25, 33) self.graph.add_edge(35, 38) self.graph.add_edge(45, 8) self.graph.add_edge(35, 16) self.graph.add_edge(30, 34) self.graph.add_edge(10, 49) self.graph.add_edge(25, 40) self.graph.add_edge(15, 48) self.graph.add_edge(35, 41) self.graph.add_edge(35, 29) self.graph.add_edge(35, 29) self.graph.add_edge(10, 18) self.graph.add_edge(5, 19) self.graph.add_edge(5, 6) self.graph.add_edge(40, 2) self.graph.add_edge(5, 33) self.graph.add_edge(40, 29) self.graph.add_edge(20, 22) self.graph.add_edge(5, 6) return super().setUp() def test_case_18(self): self.graph.get_all_paths() self.graph.get_costs() self.assertEqual(self.graph.get_costs(), [ 6, 6, 6, 6, 6, 12, 6, 6, 6, 12, 12, 6, 6, 12, 6, 6, 6, 12, 12, 6, 12, 6, 6, 6, 6, 6, 6, 6, 6, 12, 6, 6, 6, 12, 6, 6, 6, 6, 6, 6, 6, 6, 6, 12, 12, 12, 12, 6, 12, 6, 6, 12, 12 ]) def tearDown(self): del self.START del self.graph return super().tearDown()
class TestBFS_Case_19(unittest.TestCase): START = None graph = None def setUp(self): self.START = 1 self.graph = Graph(self.START) self.graph.add_edge(28, 254) self.graph.add_edge(7, 3) self.graph.add_edge(1, 13) self.graph.add_edge(14, 5) self.graph.add_edge(16, 18) self.graph.add_edge(6, 27) self.graph.add_edge(2, 28) self.graph.add_edge(28, 1) self.graph.add_edge(13, 2) self.graph.add_edge(1, 16) self.graph.add_edge(18, 19) self.graph.add_edge(7, 25) self.graph.add_edge(14, 21) self.graph.add_edge(7, 25) self.graph.add_edge(25, 18) self.graph.add_edge(27, 28) self.graph.add_edge(14, 28) self.graph.add_edge(7, 3) self.graph.add_edge(23, 5) self.graph.add_edge(19, 23) self.graph.add_edge(20, 23) self.graph.add_edge(20, 28) self.graph.add_edge(9, 24) self.graph.add_edge(7, 25) self.graph.add_edge(15, 27) self.graph.add_edge(25, 24) self.graph.add_edge(2, 14) self.graph.add_edge(13, 23) self.graph.add_edge(20, 4) self.graph.add_edge(6, 1) self.graph.add_edge(7, 22) self.graph.add_edge(15, 21) self.graph.add_edge(2, 16) self.graph.add_edge(22, 16) self.graph.add_edge(25, 6) self.graph.add_edge(13, 4) self.graph.add_edge(14, 2) self.graph.add_edge(15, 1) self.graph.add_edge(7, 11) self.graph.add_edge(23, 3) self.graph.add_edge(4, 1) self.graph.add_edge(28, 23) self.graph.add_edge(6, 1) self.graph.add_edge(5, 19) self.graph.add_edge(28, 27) self.graph.add_edge(19, 14) self.graph.add_edge(5, 1) self.graph.add_edge(23, 10) self.graph.add_edge(28, 1) self.graph.add_edge(7, 22) self.graph.add_edge(3, 27) self.graph.add_edge(12, 2) self.graph.add_edge(27, 23) self.graph.add_edge(22, 23) self.graph.add_edge(18, 24) self.graph.add_edge(3, 21) self.graph.add_edge(17, 22) self.graph.add_edge(8, 27) self.graph.add_edge(27, 14) self.graph.add_edge(21, 19) self.graph.add_edge(10, 17) self.graph.add_edge(14, 9) self.graph.add_edge(10, 15) self.graph.add_edge(1, 13) self.graph.add_edge(3, 5) self.graph.add_edge(27, 11) self.graph.add_edge(28, 5) self.graph.add_edge(8, 15) self.graph.add_edge(1, 9) self.graph.add_edge(11, 17) self.graph.add_edge(11, 1) self.graph.add_edge(14, 20) self.graph.add_edge(4, 5) self.graph.add_edge(12, 24) self.graph.add_edge(13, 15) self.graph.add_edge(3, 22) self.graph.add_edge(21, 1) self.graph.add_edge(25, 15) self.graph.add_edge(22, 26) self.graph.add_edge(1, 14) self.graph.add_edge(23, 3) self.graph.add_edge(15, 12) self.graph.add_edge(19, 13) self.graph.add_edge(6, 2) self.graph.add_edge(10, 20) self.graph.add_edge(24, 22) self.graph.add_edge(26, 9) self.graph.add_edge(26, 28) self.graph.add_edge(13, 26) self.graph.add_edge(28, 17) self.graph.add_edge(13, 17) self.graph.add_edge(12, 23) self.graph.add_edge(2, 12) self.graph.add_edge(18, 24) self.graph.add_edge(12, 28) self.graph.add_edge(9, 7) self.graph.add_edge(6, 16) self.graph.add_edge(1, 18) self.graph.add_edge(27, 1) self.graph.add_edge(5, 1) self.graph.add_edge(23, 11) self.graph.add_edge(27, 23) self.graph.add_edge(28, 7) self.graph.add_edge(1, 18) self.graph.add_edge(10, 8) self.graph.add_edge(1, 20) self.graph.add_edge(2, 19) self.graph.add_edge(10, 5) self.graph.add_edge(24, 17) self.graph.add_edge(25, 12) self.graph.add_edge(21, 28) self.graph.add_edge(8, 23) self.graph.add_edge(15, 28) self.graph.add_edge(5, 19) self.graph.add_edge(5, 16) self.graph.add_edge(17, 11) self.graph.add_edge(5, 18) self.graph.add_edge(20, 21) self.graph.add_edge(8, 1) self.graph.add_edge(3, 9) self.graph.add_edge(1, 26) self.graph.add_edge(17, 20) self.graph.add_edge(20, 4) self.graph.add_edge(5, 17) self.graph.add_edge(15, 17) self.graph.add_edge(28, 5) self.graph.add_edge(20, 25) self.graph.add_edge(1, 18) self.graph.add_edge(28, 1) self.graph.add_edge(17, 7) self.graph.add_edge(2, 20) self.graph.add_edge(17, 25) self.graph.add_edge(8, 16) self.graph.add_edge(9, 16) self.graph.add_edge(27, 4) self.graph.add_edge(8, 14) self.graph.add_edge(6, 14) self.graph.add_edge(8, 28) self.graph.add_edge(27, 28) self.graph.add_edge(26, 11) self.graph.add_edge(17, 27) self.graph.add_edge(17, 26) self.graph.add_edge(12, 25) self.graph.add_edge(22, 6) self.graph.add_edge(26, 18) self.graph.add_edge(15, 19) self.graph.add_edge(16, 8) self.graph.add_edge(19, 3) self.graph.add_edge(28, 1) self.graph.add_edge(26, 9) self.graph.add_edge(21, 13) self.graph.add_edge(2, 21) self.graph.add_edge(2, 1) self.graph.add_edge(16, 13) self.graph.add_edge(3, 9) self.graph.add_edge(1, 5) self.graph.add_edge(14, 16) self.graph.add_edge(12, 13) self.graph.add_edge(18, 23) self.graph.add_edge(18, 26) self.graph.add_edge(12, 8) self.graph.add_edge(5, 1) self.graph.add_edge(27, 25) self.graph.add_edge(3, 14) self.graph.add_edge(24, 9) self.graph.add_edge(8, 21) self.graph.add_edge(2, 9) self.graph.add_edge(8, 26) self.graph.add_edge(27, 28) self.graph.add_edge(2, 12) self.graph.add_edge(2, 3) self.graph.add_edge(24, 5) self.graph.add_edge(6, 11) self.graph.add_edge(10, 5) self.graph.add_edge(14, 15) self.graph.add_edge(12, 18) self.graph.add_edge(25, 1) self.graph.add_edge(10, 7) self.graph.add_edge(13, 28) self.graph.add_edge(28, 15) self.graph.add_edge(28, 21) self.graph.add_edge(5, 12) self.graph.add_edge(11, 15) self.graph.add_edge(8, 20) self.graph.add_edge(23, 4) self.graph.add_edge(17, 22) self.graph.add_edge(13, 6) self.graph.add_edge(1, 27) self.graph.add_edge(20, 15) self.graph.add_edge(9, 12) self.graph.add_edge(26, 7) self.graph.add_edge(2, 18) self.graph.add_edge(6, 25) self.graph.add_edge(7, 4) self.graph.add_edge(6, 22) self.graph.add_edge(25, 23) self.graph.add_edge(8, 13) self.graph.add_edge(28, 22) self.graph.add_edge(18, 24) self.graph.add_edge(12, 5) self.graph.add_edge(8, 4) self.graph.add_edge(27, 26) self.graph.add_edge(19, 25) self.graph.add_edge(22, 23) self.graph.add_edge(9, 15) self.graph.add_edge(4, 6) self.graph.add_edge(28, 22) self.graph.add_edge(23, 6) self.graph.add_edge(21, 13) self.graph.add_edge(8, 23) self.graph.add_edge(2, 19) self.graph.add_edge(11, 28) self.graph.add_edge(21, 26) self.graph.add_edge(1, 15) self.graph.add_edge(4, 13) self.graph.add_edge(22, 13) self.graph.add_edge(18, 21) self.graph.add_edge(1, 10) self.graph.add_edge(5, 6) self.graph.add_edge(22, 14) self.graph.add_edge(7, 20) self.graph.add_edge(18, 14) self.graph.add_edge(26, 1) self.graph.add_edge(2, 16) self.graph.add_edge(9, 19) self.graph.add_edge(13, 4) self.graph.add_edge(22, 1) self.graph.add_edge(11, 15) self.graph.add_edge(15, 6) self.graph.add_edge(6, 15) self.graph.add_edge(13, 16) self.graph.add_edge(24, 6) self.graph.add_edge(11, 12) self.graph.add_edge(14, 27) self.graph.add_edge(12, 23) self.graph.add_edge(20, 8) self.graph.add_edge(10, 13) self.graph.add_edge(26, 28) self.graph.add_edge(26, 17) self.graph.add_edge(26, 4) self.graph.add_edge(14, 17) self.graph.add_edge(25, 20) self.graph.add_edge(11, 20) self.graph.add_edge(20, 8) self.graph.add_edge(5, 6) self.graph.add_edge(5, 19) self.graph.add_edge(24, 1) self.graph.add_edge(18, 6) self.graph.add_edge(12, 11) self.graph.add_edge(20, 10) self.graph.add_edge(3, 5) self.graph.add_edge(27, 14) self.graph.add_edge(5, 1) self.graph.add_edge(27, 21) self.graph.add_edge(27, 25) return super().setUp() def test_case_19(self): self.graph.get_all_paths() self.graph.get_costs() self.assertEqual(self.graph.get_costs(),[6, 12, 6, 6, 6, 12, 6, 6, 6, 6, 12, 6, 6, 6, 6, 12, 6, 12, 6, 6, 6, 12, 6, 6, 6, 6, 6]) def tearDown(self): del self.START del self.graph return super().tearDown()
class TestBreadthFirstSearch(unittest.TestCase): START = None graph = None def setUp(self): self.START = 1 self.graph = Graph(self.START) self.graph.add_edge(4, 2) self.graph.add_edge(1, 2) self.graph.add_edge(1, 3) return super().setUp() def test_node_quantity_input(self): self.assertEqual(self.graph.get_qtd_nodes(), 4) def test_node_start_input(self): self.assertEqual(self.graph.get_start(), self.START) def test_add_edges(self): self.assertEqual(list(self.graph.get_nodes().keys()), [4, 1]) def test_get_origin_nodes(self): self.assertEqual(set(self.graph.get_origin_nodes()), set([1,4])) def test_get_all_destination_nodes(self): self.assertEqual(self.graph.get_all_destination_nodes(), set([2,3])) def test_get_destination_nodes(self): self.assertEqual(self.graph.get_destination_nodes(1), [2,3]) def test_node_not_origin(self): self.assertEqual(self.graph._node_not_origin(5), True) def test_node_not_destination(self): self.assertEqual(self.graph._node_not_destination(4), True) def test_last_path_node(self): self.assertEqual(self.graph.check_if_last_path_node(2), True) # def test_node_path(self): # self.assertEqual(self.graph.get_node_paths(1),[[2],[3,5]]) # def test_all_paths(self): # self.assertEqual(self.graph.get_all_paths(),[[],[[2],[3,5]],[[5]],[[2]],[]]) # def test_node_cost(self): # self.assertEqual(self.graph.get_node_cost(5), 12) def test_all_cost(self): self.graph.get_all_paths() self.assertEqual(self.graph.get_costs(), [6, 6, -1]) # def test_add_node(self): # """ # Test the graph nodes input # 1 # 3 1 # 2 3 # 2 # """ # def test_path_cost(self): # """ # 6 6 -1 # -1 6 # """ def tearDown(self): del self.START del self.graph return super().tearDown()
self._graph = graph self._colors = dict() self._marked = dict() self._flage = True for v in graph.vertexes(): if self._marked.get(v) is not True: self._colors[v] = True self._search(v) def _search(self, vertex): self._marked[vertex] = True for v in self._graph.adj(vertex): if self._marked.get(v) is not True: self._colors[v] = not self._colors[vertex] self._search(v) elif self._colors[vertex] == self._colors[v]: self._flage = False def is_two_color(self): return self._flage if __name__ == '__main__': g = Graph() g.add_edge(1, 2) g.add_edge(2, 3) g.add_edge(4, 3) g.add_edge(4, 1) c = TwoColor(g) print(c.is_two_color())
if (rec_node_stack[node]): return True # It has been visited before this recursion if (visited[node]): return False # Mark current node as visited and # add to recursion stack visited[node] = True rec_node_stack[node] = True head_node = g.array[node].head_node while(head_node is not None): # Pick adjacent node and call it recursively adjacent = head_node.data # If the node is visited again in the same recursion => Cycle found if (detect_cycle_rec(g, adjacent, visited, rec_node_stack)): return True head_node = head_node.next_element # remove the node from the recursive call rec_node_stack[node] = False return False g1 = Graph(4) g1.add_edge(0, 1) g1.add_edge(0, 2) g1.add_edge(2, 3) print(detect_cycle(g1))
if visited[temp.data] is False: q.enqueue(temp.data) visited[temp.data] = True elif visited[temp.data] is True and source != current_node: return True temp = temp.next_element return False def detect_cycle(g: Graph): num_vertices = g.vertices if num_vertices is 0: return True for i in range(num_vertices): outcome = bfs_helper(g, i) if outcome is True: print('cycle exists') return outcome return outcome g = Graph(4) g.add_edge(0, 1) g.add_edge(0, 3) g.add_edge(3, 2) g.add_edge(2, 0) print(detect_cycle(g))
class AnalysisModel: START_EQN_NUM = 0 START_VERTEX_NUM = 0 def __init__(self): self.FEs = {} self.DOFs = {} self.domain = None self.handler = None self.DOF_graph = None # 两者有什么区别????????一个是优化,一个没优化 self.group_graph = None self.num_FE_Ele = 0 # number of FE_Elements objects added self.num_DOF_Grp = 0 # number of DOF_Group objects added self.num_eqn = 0 # num_eqn set by the ConstraintHandler typically # methods to populate/depopulate the AnalysisModel def add_FE_element(self, FE_Ele): # check we don't add a null pointer or this is a subclass trying to use this method when it should'nt if FE_Ele is None or self.get_FEs == {}: return False # check if an Element with a similar tag already exists in the Domain tag = FE_Ele.get_tag() other = self.FEs.get(tag) if other is not None: print('AnalysisModel::add_FE_element - fe_element with tag ' + str(tag) + ' already exists in model.\n') return False # add self.FEs[tag] = FE_Ele FE_Ele.set_analysis_model(self) self.num_FE_Ele += 1 return True def add_DOF_group(self, theDOF_Grp): # check we don't add a null pointer or this is a subclass trying to use a method it should'nt be using if theDOF_Grp is None: return False # check if a DOF_Group with a similar tag already exists in the Model tag = theDOF_Grp.get_tag() other = self.DOFs.get(tag) if other is not None: print('AnalysisModel::add_DOF_group - dof_group with tag ' + str(tag) + ' already exists in model.\n') return False # add self.DOFs[tag] = theDOF_Grp self.num_DOF_Grp += 1 return True def clear_all(self): self.FEs = {} self.DOFs = {} self.DOF_graph = None self.group_graph = None self.num_FE_Ele = 0 self.num_DOF_Grp = 0 self.num_eqn = 0 def clear_DOF_graph(self): self.DOF_graph = None # def clearDOFGroupGraph(self): # self.group_graph = None # methods to access the FE_Elements and DOF_Groups and their numbers def get_num_DOF_groups(self): return self.num_DOF_Grp def get_DOF_group(self, tag): return self.DOFs.get(tag) def get_FEs(self): return self.FEs def get_DOFs(self): return self.DOFs # methods to access the connectivity for SysOfEqn to size itself def set_num_eqn(self, theNumEqn): self.num_eqn = theNumEqn def get_num_eqn(self): return self.num_eqn def get_DOF_graph(self): if self.DOF_graph is None: numVertex = self.get_num_DOF_groups() graphStorage = {} self.DOF_graph = Graph(graphStorage) # create a vertex for each dof DOFs = self.get_DOFs() for tag in DOFs: dof = DOFs[tag] id1 = dof.get_ID() size = len(id1) for i in range(0, size): dofTag = id1[i] if dofTag >= AnalysisModel.START_EQN_NUM: vertex = self.DOF_graph.get_vertex(dofTag) if vertex is None: vertex = Vertex(dofTag, dofTag) if self.DOF_graph.add_vertex(vertex, False) == False: print( 'WARNING AnalysisModel::get_DOF_graph - error adding vertex.\n' ) return self.DOF_graph # now add the edges, by looping over the FE_elements, getting their IDs and adding edges between DOFs for equation numbers >= START_EQN_NUM FEs = self.get_FEs() cnt = 0 for tag in FEs: ele = FEs[tag] id1 = ele.get_ID() cnt += 1 size = len(id1) for i in range(0, size): eqn1 = id1[i] # if eqnNum of DOF is a valid eqn number add an edge to all other DOFs with valid eqn numbers. if eqn1 >= AnalysisModel.START_EQN_NUM: for j in range(i + 1, size): eqn2 = id1[j] if eqn2 >= AnalysisModel.START_EQN_NUM: self.DOF_graph.add_edge( eqn1 - AnalysisModel.START_EQN_NUM + AnalysisModel.START_VERTEX_NUM, eqn2 - AnalysisModel.START_EQN_NUM + AnalysisModel.START_VERTEX_NUM) return self.DOF_graph # def getDOFGroupGraph(self): # # 和 get_DOF_graph() 有什么区别? # # DOFGraph :number后(去除约束后)的节点里面的自由度(DOF),变成Vertex # # DOFGroupGraph:所有节点(DOFGroup),变成Vertex # if self.group_graph is None: # numVertex = self.get_num_DOF_groups() # if numVertex == 0: # print('WARNING AnalysisMode::getDOFGroupGraph - 0 vertices, has the Domain been populated?\n') # # exit(self, -1) # graphStorage = {} # self.group_graph = Graph(graphStorage) # 重点!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # # now create the vertices with a reference equal to the DOF_Group number. # # and a tag which ranges from 0 through numVertex-1 # DOFs = self.get_DOFs() # count = AnalysisModel.START_VERTEX_NUM # for dof in DOFs: # DOF_GroupTag = dof.get_tag() # DOF_GroupNodeTag = dof.getNodeTag() # numDOF = dof.getNumFreeDOF() # vertex = Vertex(DOF_GroupTag, DOF_GroupNodeTag, 0, numDOF) # self.group_graph.addVertex(vertex) # # now add the edges, by looping over the Elements, getting their # # IDs and adding edges between DOFs for equation numbers >= START_EQN_NUM # FEs = self.get_FEs() # for ele in FEs: # id1 = ele.getDOFtags() # size = id1.Size() # for i in range(0, size): # dof1 = id1[i] # for j in range(0, size): # if i != j: # dof2 = id1[j] # self.group_graph.addEdge(dof1, dof2) # return self.group_graph # methods to update the response quantities at the DOF_Groups, # which in turn set the new nodal trial response quantities def set_response(self, disp, vel, accel): # all is Vector DOFgrps = self.get_DOFs() for dof in DOFgrps: dof.set_node_disp(disp) dof.set_node_vel(vel) dof.set_node_accel(accel) def set_disp(self, disp): DOFgrps = self.get_DOFs() for dof in DOFgrps: dof.set_node_disp(disp) # def setVel(self, vel): # DOFgrps = self.get_DOFs() # for dof in DOFgrps: # dof.setNodeVel(vel) # # def setAccel(self, accel): # DOFgrps = self.get_DOFs() # for dof in DOFgrps: # dof.setNodeAccel(accel) def incr_disp(self, disp): # disp 是 Vector DOFgrps = self.get_DOFs() for tag in DOFgrps: dof = DOFgrps[tag] dof.incr_node_disp(disp) # def incrVel(self, vel): # DOFgrps = self.get_DOFs() # for dof in DOFgrps: # dof.incrNodeVel(vel) # # def incrAccel(self, accel): # DOFgrps = self.get_DOFs() # for dof in DOFgrps: # dof.incrNodeAccel(accel) # methods added to store the eigenvalues and vectors in the domain # def setNumEigenvectors(self, numEigenvectors): # pass # def setEigenvector(self, mode, eigenvalue): # pass # def setEigenvalues(self, eigenvalue): # pass # def getEigenvalues(self): # pass # def getModelDampingFactors(self): # pass # def inclModalDampingMatrix(self): # pass # methods which trigger operations in the Domain def set_links(self, theDomain, theHandler): self.domain = theDomain self.handler = theHandler def apply_load_domain(self, pseudoTime): # check to see there is a Domain linked to the Model if self.domain is None: print( 'WARNING: AnalysisModel::apply_load_domain - No Domain linked.\n' ) return None self.domain.apply_load(pseudoTime) self.handler.apply_load() def update_domain(self): # 有重载 # check to see there is a Domain linked to the Model if self.domain is None: print('WARNING: AnalysisModel::update_domain. No Domain linked.\n') return -1 res = self.domain.update() if res == 0: return self.handler.update() return res # def update_domain(self, newTime, dT): # pass # def analysis_step(self, dT=0.0): # # check to see there is a Domain linked to the Model # if self.domain is None: # print('WARNING: AnalysisModel::newStep. No domain linked.\n') # return -1 # # invoke the method # return self.domain.analysis_step(dT) # def eigenAnalysis(self, numMode, generalized, findSmallest): # pass def commit_domain(self): # check to see there is a Domain linked to the Model if self.domain is None: print('WARNING: AnalysisModel::commit_domain. No Domain linked.\n') return -1 # invoke the method if self.domain.commit() < 0: print( 'WARNING: AnalysisModel::commit_domain - Domain::commit() failed.\n' ) return -2 return 0 def revert_domain_to_last_commit(self): if self.domain is None: print( 'WARNING: AnalysisModel::revert_domain_to_last_commit. No Domain linked.\n' ) return -1 if self.domain.revert_to_last_commit() < 0: print( 'WARNING: AnalysisModel::revert_domain_to_last_commit. Domain::revertToLastCommit() failed.\n' ) return -2 return 0 def get_current_domain_time(self): # check to see there is a Domain linked to the Model if self.domain is None: print( 'WARNING: AnalysisModel::get_current_domain_time - No Domain linked.\n' ) return None return self.domain.get_current_time() def set_current_domain_time(self, newTime): if self.domain is None: print( 'WARNING: AnalysisModel::get_current_domain_time. No Domain linked.\n' ) return -1 return self.domain.get_current_time() # def setRayleighDampingFactors(self, alphaM, betaK, betaKi, betaKc): # pass def get_domain(self): return self.domain
visited[temp.data] = True temp = temp.next_element return result, visited def bfs_traversal(g: Graph, source): result = "" num_vertices = g.vertices if num_vertices is 0: return result visited = [False] * num_vertices result, visited = bfs_traversal_helper(g, source, visited) for i in range(num_vertices): if visited[i] is False: result_new, visited = bfs_traversal_helper(g, i, visited) result += result_new return result g = Graph(5) g.add_edge(0, 1) g.add_edge(0, 2) g.add_edge(1, 3) g.add_edge(1, 4) print(bfs_traversal(g, 0))
class TestBFS_Case_16(unittest.TestCase): START = None graph = None def setUp(self): self.START = 76 self.graph = Graph(self.START) self.graph.add_edge(515, 804) self.graph.add_edge(12, 344) self.graph.add_edge(387, 256) self.graph.add_edge(507, 508) self.graph.add_edge(258, 300) self.graph.add_edge(222, 132) self.graph.add_edge(12, 264) self.graph.add_edge(219, 1) self.graph.add_edge(51, 284) self.graph.add_edge(297, 452) self.graph.add_edge(315, 272) self.graph.add_edge(132, 272) self.graph.add_edge(270, 468) self.graph.add_edge(66, 356) self.graph.add_edge(345, 236) self.graph.add_edge(93, 20) self.graph.add_edge(294, 168) self.graph.add_edge(396, 264) self.graph.add_edge(405, 104) self.graph.add_edge(273, 260) self.graph.add_edge(252, 512) self.graph.add_edge(249, 480) self.graph.add_edge(462, 248) self.graph.add_edge(219, 168) self.graph.add_edge(219, 236) self.graph.add_edge(333, 248) self.graph.add_edge(402, 488) self.graph.add_edge(42, 268) self.graph.add_edge(180, 164) self.graph.add_edge(279, 464) self.graph.add_edge(39, 80) self.graph.add_edge(480, 140) self.graph.add_edge(150, 220) self.graph.add_edge(18, 476) self.graph.add_edge(138, 416) self.graph.add_edge(69, 384) self.graph.add_edge(297, 232) self.graph.add_edge(135, 84) self.graph.add_edge(102, 428) self.graph.add_edge(399, 132) self.graph.add_edge(141, 232) self.graph.add_edge(300, 400) self.graph.add_edge(312, 388) self.graph.add_edge(489, 244) self.graph.add_edge(258, 424) self.graph.add_edge(132, 248) self.graph.add_edge(51, 220) self.graph.add_edge(207, 488) self.graph.add_edge(90, 140) self.graph.add_edge(306, 176) self.graph.add_edge(87, 260) self.graph.add_edge(174, 228) self.graph.add_edge(57, 300) self.graph.add_edge(18, 332) self.graph.add_edge(36, 404) self.graph.add_edge(66, 308) self.graph.add_edge(18, 128) self.graph.add_edge(252, 172) self.graph.add_edge(354, 300) self.graph.add_edge(474, 196) self.graph.add_edge(345, 192) self.graph.add_edge(246, 4) self.graph.add_edge(405, 228) self.graph.add_edge(348, 64) self.graph.add_edge(480, 208) self.graph.add_edge(276, 112) self.graph.add_edge(228, 324) self.graph.add_edge(1, 436) self.graph.add_edge(183, 344) self.graph.add_edge(204, 300) self.graph.add_edge(264, 112) self.graph.add_edge(216, 212) self.graph.add_edge(225, 248) self.graph.add_edge(114, 124) self.graph.add_edge(288, 240) self.graph.add_edge(312, 260) self.graph.add_edge(456, 292) self.graph.add_edge(456, 296) self.graph.add_edge(84, 136) self.graph.add_edge(429, 456) self.graph.add_edge(78, 396) self.graph.add_edge(465, 140) self.graph.add_edge(504, 80) self.graph.add_edge(327, 504) self.graph.add_edge(492, 60) self.graph.add_edge(339, 364) self.graph.add_edge(237, 72) self.graph.add_edge(258, 280) self.graph.add_edge(264, 340) self.graph.add_edge(159, 308) self.graph.add_edge(21, 36) self.graph.add_edge(99, 192) self.graph.add_edge(69, 68) self.graph.add_edge(414, 16) self.graph.add_edge(117, 440) self.graph.add_edge(321, 420) self.graph.add_edge(240, 360) self.graph.add_edge(312, 124) self.graph.add_edge(168, 488) self.graph.add_edge(12, 60) self.graph.add_edge(123, 380) self.graph.add_edge(18, 256) self.graph.add_edge(264, 488) self.graph.add_edge(438, 172) self.graph.add_edge(108, 220) self.graph.add_edge(102, 12) self.graph.add_edge(318, 492) self.graph.add_edge(471, 268) self.graph.add_edge(345, 488) self.graph.add_edge(120, 388) self.graph.add_edge(492, 24) self.graph.add_edge(504, 400) self.graph.add_edge(72, 84) self.graph.add_edge(237, 64) self.graph.add_edge(12, 392) self.graph.add_edge(438, 424) self.graph.add_edge(234, 112) self.graph.add_edge(318, 368) self.graph.add_edge(504, 480) self.graph.add_edge(486, 208) self.graph.add_edge(381, 432) self.graph.add_edge(279, 336) self.graph.add_edge(27, 296) self.graph.add_edge(180, 264) self.graph.add_edge(180, 140) self.graph.add_edge(438, 64) self.graph.add_edge(468, 44) self.graph.add_edge(138, 72) self.graph.add_edge(348, 144) self.graph.add_edge(1, 484) self.graph.add_edge(36, 124) self.graph.add_edge(48, 464) self.graph.add_edge(195, 336) self.graph.add_edge(69, 452) self.graph.add_edge(450, 400) self.graph.add_edge(453, 196) self.graph.add_edge(318, 292) self.graph.add_edge(366, 452) self.graph.add_edge(207, 396) self.graph.add_edge(222, 472) self.graph.add_edge(489, 140) self.graph.add_edge(477, 28) self.graph.add_edge(342, 48) self.graph.add_edge(384, 284) self.graph.add_edge(132, 412) self.graph.add_edge(225, 112) self.graph.add_edge(411, 476) self.graph.add_edge(225, 480) self.graph.add_edge(90, 132) self.graph.add_edge(309, 8) self.graph.add_edge(390, 152) self.graph.add_edge(351, 216) self.graph.add_edge(180, 228) self.graph.add_edge(348, 192) self.graph.add_edge(375, 8) self.graph.add_edge(342, 36) self.graph.add_edge(321, 508) self.graph.add_edge(492, 364) self.graph.add_edge(42, 176) self.graph.add_edge(441, 212) self.graph.add_edge(366, 188) self.graph.add_edge(297, 260) self.graph.add_edge(258, 252) self.graph.add_edge(54, 396) self.graph.add_edge(372, 80) self.graph.add_edge(48, 100) self.graph.add_edge(48, 240) self.graph.add_edge(216, 88) self.graph.add_edge(27, 476) self.graph.add_edge(3, 160) self.graph.add_edge(171, 360) self.graph.add_edge(75, 300) self.graph.add_edge(408, 312) self.graph.add_edge(390, 264) self.graph.add_edge(495, 508) self.graph.add_edge(345, 200) self.graph.add_edge(228, 392) self.graph.add_edge(387, 188) self.graph.add_edge(393, 388) self.graph.add_edge(348, 396) self.graph.add_edge(105, 312) self.graph.add_edge(309, 500) self.graph.add_edge(147, 452) self.graph.add_edge(201, 296) self.graph.add_edge(15, 192) self.graph.add_edge(153, 460) self.graph.add_edge(258, 164) self.graph.add_edge(261, 424) self.graph.add_edge(69, 364) self.graph.add_edge(270, 92) self.graph.add_edge(234, 424) self.graph.add_edge(312, 88) self.graph.add_edge(219, 84) self.graph.add_edge(342, 64) self.graph.add_edge(411, 348) self.graph.add_edge(192, 288) self.graph.add_edge(333, 260) self.graph.add_edge(9, 88) self.graph.add_edge(24, 272) self.graph.add_edge(444, 36) self.graph.add_edge(279, 272) self.graph.add_edge(45, 40) self.graph.add_edge(93, 276) self.graph.add_edge(396, 344) self.graph.add_edge(189, 260) self.graph.add_edge(321, 88) self.graph.add_edge(495, 152) self.graph.add_edge(222, 496) self.graph.add_edge(342, 72) self.graph.add_edge(513, 456) self.graph.add_edge(249, 312) self.graph.add_edge(345, 16) self.graph.add_edge(312, 200) self.graph.add_edge(453, 340) self.graph.add_edge(39, 288) self.graph.add_edge(231, 448) self.graph.add_edge(252, 404) self.graph.add_edge(267, 436) self.graph.add_edge(492, 332) self.graph.add_edge(453, 404) self.graph.add_edge(60, 56) self.graph.add_edge(228, 368) self.graph.add_edge(222, 504) self.graph.add_edge(315, 244) self.graph.add_edge(438, 76) self.graph.add_edge(177, 1) self.graph.add_edge(327, 276) self.graph.add_edge(471, 440) self.graph.add_edge(129, 484) self.graph.add_edge(378, 20) self.graph.add_edge(339, 508) self.graph.add_edge(357, 484) self.graph.add_edge(105, 340) self.graph.add_edge(504, 352) self.graph.add_edge(447, 428) self.graph.add_edge(210, 424) self.graph.add_edge(345, 144) self.graph.add_edge(24, 28) self.graph.add_edge(390, 436) self.graph.add_edge(96, 488) self.graph.add_edge(147, 144) self.graph.add_edge(483, 436) self.graph.add_edge(180, 432) self.graph.add_edge(102, 228) self.graph.add_edge(420, 504) self.graph.add_edge(183, 100) self.graph.add_edge(45, 116) self.graph.add_edge(351, 272) self.graph.add_edge(315, 168) self.graph.add_edge(258, 312) self.graph.add_edge(153, 344) self.graph.add_edge(477, 372) self.graph.add_edge(129, 332) self.graph.add_edge(36, 496) self.graph.add_edge(72, 132) self.graph.add_edge(384, 64) self.graph.add_edge(237, 144) self.graph.add_edge(192, 292) self.graph.add_edge(381, 152) self.graph.add_edge(474, 252) self.graph.add_edge(135, 108) self.graph.add_edge(99, 136) self.graph.add_edge(489, 304) self.graph.add_edge(39, 460) self.graph.add_edge(510, 48) self.graph.add_edge(51, 196) self.graph.add_edge(483, 64) self.graph.add_edge(141, 224) self.graph.add_edge(48, 380) self.graph.add_edge(360, 236) self.graph.add_edge(279, 368) self.graph.add_edge(75, 12) self.graph.add_edge(399, 12) self.graph.add_edge(243, 292) self.graph.add_edge(258, 288) self.graph.add_edge(408, 232) self.graph.add_edge(204, 380) self.graph.add_edge(189, 472) self.graph.add_edge(210, 268) self.graph.add_edge(123, 156) self.graph.add_edge(390, 212) self.graph.add_edge(42, 28) self.graph.add_edge(276, 156) self.graph.add_edge(294, 344) self.graph.add_edge(474, 248) self.graph.add_edge(72, 432) self.graph.add_edge(96, 444) self.graph.add_edge(309, 476) self.graph.add_edge(6, 272) self.graph.add_edge(312, 396) self.graph.add_edge(342, 224) self.graph.add_edge(351, 152) self.graph.add_edge(144, 416) self.graph.add_edge(450, 296) self.graph.add_edge(177, 444) self.graph.add_edge(297, 24) self.graph.add_edge(486, 188) self.graph.add_edge(183, 220) self.graph.add_edge(198, 236) self.graph.add_edge(324, 208) self.graph.add_edge(210, 484) self.graph.add_edge(129, 84) self.graph.add_edge(507, 504) self.graph.add_edge(123, 60) self.graph.add_edge(513, 364) self.graph.add_edge(111, 56) self.graph.add_edge(90, 188) self.graph.add_edge(375, 264) self.graph.add_edge(186, 412) self.graph.add_edge(15, 92) self.graph.add_edge(114, 300) self.graph.add_edge(411, 348) self.graph.add_edge(495, 96) self.graph.add_edge(219, 164) self.graph.add_edge(351, 244) self.graph.add_edge(432, 456) self.graph.add_edge(117, 420) self.graph.add_edge(405, 132) self.graph.add_edge(336, 252) self.graph.add_edge(423, 216) self.graph.add_edge(429, 184) self.graph.add_edge(153, 152) self.graph.add_edge(186, 228) self.graph.add_edge(60, 312) self.graph.add_edge(195, 380) self.graph.add_edge(453, 96) self.graph.add_edge(408, 156) self.graph.add_edge(261, 264) self.graph.add_edge(444, 512) self.graph.add_edge(48, 36) self.graph.add_edge(171, 64) self.graph.add_edge(249, 64) self.graph.add_edge(402, 232) self.graph.add_edge(270, 108) self.graph.add_edge(438, 236) self.graph.add_edge(51, 336) self.graph.add_edge(330, 88) self.graph.add_edge(252, 152) self.graph.add_edge(45, 452) self.graph.add_edge(18, 48) self.graph.add_edge(219, 404) self.graph.add_edge(327, 40) self.graph.add_edge(21, 408) self.graph.add_edge(417, 72) self.graph.add_edge(3, 156) self.graph.add_edge(72, 404) self.graph.add_edge(264, 176) self.graph.add_edge(219, 76) self.graph.add_edge(390, 168) self.graph.add_edge(279, 64) self.graph.add_edge(150, 48) self.graph.add_edge(414, 344) self.graph.add_edge(348, 248) self.graph.add_edge(54, 436) self.graph.add_edge(261, 280) self.graph.add_edge(486, 260) self.graph.add_edge(198, 124) self.graph.add_edge(57, 44) self.graph.add_edge(486, 356) self.graph.add_edge(441, 80) self.graph.add_edge(486, 136) self.graph.add_edge(510, 168) self.graph.add_edge(1, 220) self.graph.add_edge(114, 384) self.graph.add_edge(441, 36) self.graph.add_edge(420, 324) self.graph.add_edge(480, 508) self.graph.add_edge(456, 160) self.graph.add_edge(258, 4) self.graph.add_edge(210, 356) self.graph.add_edge(324, 356) self.graph.add_edge(294, 332) self.graph.add_edge(231, 416) self.graph.add_edge(255, 368) self.graph.add_edge(66, 20) self.graph.add_edge(231, 480) self.graph.add_edge(105, 88) self.graph.add_edge(162, 40) self.graph.add_edge(459, 300) self.graph.add_edge(66, 372) self.graph.add_edge(291, 360) self.graph.add_edge(498, 184) self.graph.add_edge(339, 192) self.graph.add_edge(21, 368) self.graph.add_edge(9, 60) self.graph.add_edge(288, 312) self.graph.add_edge(246, 112) self.graph.add_edge(1, 296) self.graph.add_edge(411, 292) self.graph.add_edge(450, 120) self.graph.add_edge(267, 400) self.graph.add_edge(225, 176) self.graph.add_edge(366, 232) self.graph.add_edge(420, 356) self.graph.add_edge(147, 464) self.graph.add_edge(27, 80) self.graph.add_edge(195, 60) self.graph.add_edge(267, 368) self.graph.add_edge(372, 196) self.graph.add_edge(258, 136) self.graph.add_edge(21, 160) self.graph.add_edge(9, 448) self.graph.add_edge(444, 344) self.graph.add_edge(483, 192) self.graph.add_edge(294, 256) self.graph.add_edge(285, 224) self.graph.add_edge(318, 112) self.graph.add_edge(486, 148) self.graph.add_edge(291, 96) self.graph.add_edge(405, 300) self.graph.add_edge(102, 316) self.graph.add_edge(450, 68) self.graph.add_edge(42, 320) self.graph.add_edge(9, 316) self.graph.add_edge(339, 400) self.graph.add_edge(42, 320) self.graph.add_edge(318, 120) self.graph.add_edge(459, 400) self.graph.add_edge(90, 364) self.graph.add_edge(3, 332) self.graph.add_edge(267, 108) self.graph.add_edge(447, 316) self.graph.add_edge(267, 168) self.graph.add_edge(303, 352) self.graph.add_edge(288, 44) self.graph.add_edge(243, 220) self.graph.add_edge(93, 436) self.graph.add_edge(498, 260) self.graph.add_edge(396, 332) self.graph.add_edge(159, 384) self.graph.add_edge(84, 240) self.graph.add_edge(312, 228) self.graph.add_edge(27, 216) self.graph.add_edge(108, 328) self.graph.add_edge(348, 212) self.graph.add_edge(393, 512) self.graph.add_edge(375, 372) self.graph.add_edge(282, 304) self.graph.add_edge(333, 364) self.graph.add_edge(318, 364) self.graph.add_edge(243, 132) self.graph.add_edge(408, 476) self.graph.add_edge(99, 440) self.graph.add_edge(351, 204) self.graph.add_edge(408, 268) self.graph.add_edge(429, 28) self.graph.add_edge(114, 260) self.graph.add_edge(279, 92) self.graph.add_edge(372, 408) self.graph.add_edge(363, 148) self.graph.add_edge(285, 508) self.graph.add_edge(156, 28) self.graph.add_edge(462, 348) self.graph.add_edge(282, 228) self.graph.add_edge(21, 312) self.graph.add_edge(141, 24) self.graph.add_edge(342, 100) self.graph.add_edge(159, 144) self.graph.add_edge(81, 24) self.graph.add_edge(9, 96) self.graph.add_edge(99, 368) self.graph.add_edge(363, 132) self.graph.add_edge(90, 40) self.graph.add_edge(132, 140) self.graph.add_edge(375, 88) self.graph.add_edge(156, 164) self.graph.add_edge(366, 144) self.graph.add_edge(39, 496) self.graph.add_edge(507, 184) self.graph.add_edge(177, 400) self.graph.add_edge(39, 76) self.graph.add_edge(399, 472) self.graph.add_edge(30, 16) self.graph.add_edge(408, 376) self.graph.add_edge(507, 500) self.graph.add_edge(129, 404) self.graph.add_edge(321, 44) self.graph.add_edge(150, 304) self.graph.add_edge(375, 264) self.graph.add_edge(60, 488) self.graph.add_edge(6, 392) self.graph.add_edge(339, 176) self.graph.add_edge(483, 16) self.graph.add_edge(312, 324) self.graph.add_edge(171, 104) self.graph.add_edge(381, 488) self.graph.add_edge(186, 320) self.graph.add_edge(468, 152) self.graph.add_edge(138, 28) self.graph.add_edge(336, 8) self.graph.add_edge(264, 288) self.graph.add_edge(321, 52) self.graph.add_edge(333, 328) self.graph.add_edge(273, 280) self.graph.add_edge(462, 272) self.graph.add_edge(96, 480) self.graph.add_edge(402, 340) self.graph.add_edge(189, 504) self.graph.add_edge(183, 452) self.graph.add_edge(495, 120) self.graph.add_edge(258, 12) self.graph.add_edge(132, 304) self.graph.add_edge(447, 352) self.graph.add_edge(84, 216) self.graph.add_edge(303, 88) self.graph.add_edge(129, 328) self.graph.add_edge(246, 328) self.graph.add_edge(195, 292) self.graph.add_edge(288, 132) self.graph.add_edge(15, 196) self.graph.add_edge(171, 124) self.graph.add_edge(195, 116) self.graph.add_edge(138, 184) self.graph.add_edge(324, 452) self.graph.add_edge(27, 172) self.graph.add_edge(210, 236) self.graph.add_edge(207, 20) self.graph.add_edge(384, 52) self.graph.add_edge(258, 72) self.graph.add_edge(375, 280) self.graph.add_edge(321, 488) self.graph.add_edge(141, 324) self.graph.add_edge(111, 216) self.graph.add_edge(174, 328) self.graph.add_edge(450, 372) self.graph.add_edge(195, 456) self.graph.add_edge(282, 464) self.graph.add_edge(117, 304) self.graph.add_edge(504, 116) self.graph.add_edge(318, 356) self.graph.add_edge(51, 32) self.graph.add_edge(330, 8) self.graph.add_edge(60, 48) self.graph.add_edge(117, 456) self.graph.add_edge(54, 100) self.graph.add_edge(186, 484) self.graph.add_edge(60, 296) self.graph.add_edge(363, 140) self.graph.add_edge(171, 136) self.graph.add_edge(510, 396) self.graph.add_edge(171, 364) self.graph.add_edge(42, 304) self.graph.add_edge(330, 464) self.graph.add_edge(474, 32) self.graph.add_edge(369, 20) self.graph.add_edge(78, 44) self.graph.add_edge(234, 320) self.graph.add_edge(180, 64) self.graph.add_edge(222, 352) self.graph.add_edge(333, 324) self.graph.add_edge(456, 348) self.graph.add_edge(192, 208) self.graph.add_edge(399, 464) self.graph.add_edge(399, 196) self.graph.add_edge(471, 88) self.graph.add_edge(180, 100) self.graph.add_edge(150, 272) self.graph.add_edge(321, 164) self.graph.add_edge(216, 268) self.graph.add_edge(354, 224) self.graph.add_edge(120, 496) self.graph.add_edge(180, 392) self.graph.add_edge(249, 100) self.graph.add_edge(63, 268) self.graph.add_edge(36, 484) self.graph.add_edge(513, 264) self.graph.add_edge(324, 292) self.graph.add_edge(177, 504) self.graph.add_edge(171, 204) self.graph.add_edge(381, 8) self.graph.add_edge(171, 400) self.graph.add_edge(54, 468) self.graph.add_edge(204, 324) self.graph.add_edge(261, 68) self.graph.add_edge(183, 352) self.graph.add_edge(18, 264) self.graph.add_edge(147, 276) self.graph.add_edge(273, 84) self.graph.add_edge(408, 320) self.graph.add_edge(399, 236) self.graph.add_edge(396, 68) self.graph.add_edge(330, 128) self.graph.add_edge(393, 252) self.graph.add_edge(261, 252) self.graph.add_edge(228, 484) self.graph.add_edge(414, 140) self.graph.add_edge(219, 316) self.graph.add_edge(306, 472) self.graph.add_edge(372, 316) self.graph.add_edge(237, 324) self.graph.add_edge(441, 492) self.graph.add_edge(501, 68) self.graph.add_edge(279, 104) self.graph.add_edge(3, 8) self.graph.add_edge(255, 452) self.graph.add_edge(225, 364) self.graph.add_edge(63, 92) self.graph.add_edge(219, 32) self.graph.add_edge(153, 488) self.graph.add_edge(432, 268) self.graph.add_edge(369, 148) self.graph.add_edge(177, 384) self.graph.add_edge(366, 436) self.graph.add_edge(219, 388) self.graph.add_edge(327, 364) self.graph.add_edge(393, 84) self.graph.add_edge(456, 408) self.graph.add_edge(243, 68) self.graph.add_edge(144, 412) self.graph.add_edge(216, 412) self.graph.add_edge(177, 164) self.graph.add_edge(243, 280) self.graph.add_edge(420, 328) self.graph.add_edge(456, 484) self.graph.add_edge(93, 176) self.graph.add_edge(99, 344) self.graph.add_edge(387, 176) self.graph.add_edge(237, 288) self.graph.add_edge(501, 276) self.graph.add_edge(93, 232) self.graph.add_edge(81, 20) self.graph.add_edge(57, 312) self.graph.add_edge(372, 20) self.graph.add_edge(84, 60) self.graph.add_edge(21, 152) self.graph.add_edge(183, 140) self.graph.add_edge(51, 368) self.graph.add_edge(147, 12) self.graph.add_edge(45, 356) self.graph.add_edge(429, 328) self.graph.add_edge(192, 240) self.graph.add_edge(345, 416) self.graph.add_edge(54, 336) self.graph.add_edge(453, 48) self.graph.add_edge(12, 328) self.graph.add_edge(384, 296) self.graph.add_edge(234, 64) self.graph.add_edge(429, 176) self.graph.add_edge(183, 220) self.graph.add_edge(192, 112) self.graph.add_edge(207, 416) self.graph.add_edge(1, 484) self.graph.add_edge(456, 360) self.graph.add_edge(108, 240) self.graph.add_edge(372, 224) self.graph.add_edge(195, 348) self.graph.add_edge(240, 1) self.graph.add_edge(306, 416) self.graph.add_edge(153, 460) self.graph.add_edge(126, 1) self.graph.add_edge(450, 248) self.graph.add_edge(501, 356) self.graph.add_edge(177, 188) self.graph.add_edge(282, 144) self.graph.add_edge(483, 304) self.graph.add_edge(24, 32) self.graph.add_edge(438, 300) self.graph.add_edge(408, 176) self.graph.add_edge(69, 420) self.graph.add_edge(102, 356) self.graph.add_edge(453, 436) self.graph.add_edge(81, 44) self.graph.add_edge(330, 264) self.graph.add_edge(174, 36) self.graph.add_edge(249, 460) self.graph.add_edge(93, 356) self.graph.add_edge(300, 32) self.graph.add_edge(174, 204) self.graph.add_edge(147, 160) self.graph.add_edge(387, 44) self.graph.add_edge(129, 280) self.graph.add_edge(210, 292) self.graph.add_edge(93, 8) self.graph.add_edge(261, 268) self.graph.add_edge(138, 120) self.graph.add_edge(441, 284) self.graph.add_edge(6, 404) self.graph.add_edge(426, 476) self.graph.add_edge(342, 244) self.graph.add_edge(141, 264) self.graph.add_edge(66, 60) self.graph.add_edge(351, 436) self.graph.add_edge(78, 388) self.graph.add_edge(141, 276) self.graph.add_edge(24, 464) self.graph.add_edge(471, 100) self.graph.add_edge(48, 484) self.graph.add_edge(168, 204) self.graph.add_edge(93, 76) self.graph.add_edge(441, 152) self.graph.add_edge(447, 404) self.graph.add_edge(273, 468) self.graph.add_edge(417, 392) self.graph.add_edge(72, 392) self.graph.add_edge(303, 504) self.graph.add_edge(243, 416) self.graph.add_edge(495, 472) self.graph.add_edge(471, 472) self.graph.add_edge(228, 28) self.graph.add_edge(273, 120) self.graph.add_edge(495, 108) self.graph.add_edge(117, 156) self.graph.add_edge(321, 300) self.graph.add_edge(153, 124) self.graph.add_edge(126, 204) self.graph.add_edge(279, 124) self.graph.add_edge(75, 472) self.graph.add_edge(231, 72) self.graph.add_edge(174, 348) self.graph.add_edge(15, 472) self.graph.add_edge(90, 400) self.graph.add_edge(321, 208) self.graph.add_edge(21, 20) self.graph.add_edge(177, 440) self.graph.add_edge(465, 68) self.graph.add_edge(246, 452) self.graph.add_edge(381, 236) self.graph.add_edge(30, 196) self.graph.add_edge(120, 340) self.graph.add_edge(6, 152) self.graph.add_edge(156, 300) self.graph.add_edge(447, 104) self.graph.add_edge(327, 504) self.graph.add_edge(198, 328) self.graph.add_edge(471, 32) self.graph.add_edge(153, 388) self.graph.add_edge(219, 512) self.graph.add_edge(294, 260) self.graph.add_edge(204, 192) self.graph.add_edge(393, 332) self.graph.add_edge(510, 400) self.graph.add_edge(369, 444) self.graph.add_edge(186, 1) self.graph.add_edge(75, 80) self.graph.add_edge(492, 128) self.graph.add_edge(405, 404) self.graph.add_edge(282, 84) self.graph.add_edge(237, 148) self.graph.add_edge(255, 240) self.graph.add_edge(378, 288) self.graph.add_edge(90, 440) self.graph.add_edge(60, 192) self.graph.add_edge(321, 344) self.graph.add_edge(246, 48) self.graph.add_edge(456, 228) self.graph.add_edge(507, 272) self.graph.add_edge(294, 88) self.graph.add_edge(420, 444) self.graph.add_edge(393, 304) self.graph.add_edge(465, 452) self.graph.add_edge(51, 168) self.graph.add_edge(456, 96) self.graph.add_edge(441, 120) self.graph.add_edge(126, 452) self.graph.add_edge(246, 132) self.graph.add_edge(459, 172) self.graph.add_edge(3, 448) self.graph.add_edge(330, 84) self.graph.add_edge(33, 104) self.graph.add_edge(237, 208) self.graph.add_edge(348, 472) self.graph.add_edge(240, 264) self.graph.add_edge(246, 204) self.graph.add_edge(177, 284) self.graph.add_edge(447, 60) self.graph.add_edge(291, 416) self.graph.add_edge(231, 384) self.graph.add_edge(306, 128) self.graph.add_edge(72, 16) self.graph.add_edge(345, 440) self.graph.add_edge(21, 64) self.graph.add_edge(90, 204) self.graph.add_edge(192, 424) self.graph.add_edge(201, 396) self.graph.add_edge(351, 472) self.graph.add_edge(156, 488) self.graph.add_edge(117, 52) self.graph.add_edge(411, 448) self.graph.add_edge(426, 212) self.graph.add_edge(75, 196) self.graph.add_edge(444, 445) self.graph.add_edge(189, 500) self.graph.add_edge(456, 136) self.graph.add_edge(39, 512) self.graph.add_edge(156, 484) self.graph.add_edge(261, 328) self.graph.add_edge(456, 116) self.graph.add_edge(453, 364) self.graph.add_edge(39, 160) self.graph.add_edge(213, 436) self.graph.add_edge(330, 512) self.graph.add_edge(189, 124) self.graph.add_edge(42, 232) self.graph.add_edge(108, 332) self.graph.add_edge(486, 428) self.graph.add_edge(174, 36) self.graph.add_edge(84, 256) self.graph.add_edge(267, 340) self.graph.add_edge(327, 268) self.graph.add_edge(459, 100) self.graph.add_edge(105, 500) self.graph.add_edge(348, 200) self.graph.add_edge(174, 188) self.graph.add_edge(330, 508) self.graph.add_edge(93, 168) return super().setUp() def test_case_16(self): self.graph.get_all_paths() self.graph.get_costs() self.assertEqual(self.graph.get_costs(),[12, -1, 18, 24, -1, 18, -1, 12, 18, -1, -1, 24, -1, -1, 24, 24, -1, 24, -1, 12, 18, -1, -1, 18, -1, -1, 18, 24, -1, 30, -1, 12, 30, -1, -1, 18, -1, -1, 6, 24, -1, 18, -1, 18, 18, -1, -1, 24, -1, -1, 18, 24, -1, 18, -1, 24, 18, -1, -1, 18, -1, -1, 30, 12, -1, 18, -1, 24, 24, -1, -1, 18, -1, -1, 18, -1, 18, -1, 12, 18, -1, -1, 12, -1, -1, 30, 24, -1, 24, -1, 24, 6, -1, -1, 24, -1, -1, 24, 24, -1, 18, -1, 24, 24, -1, -1, 24, -1, -1, 24, 18, -1, 18, -1, 24, 24, -1, -1, 18, -1, -1, 24, 24, -1, 18, -1, 24, 18, -1, -1, 18, -1, -1, 18, 18, -1, 24, -1, 24, 18, -1, -1, 24, -1, -1, 18, 24, -1, 24, -1, 24, 18, -1, -1, 18, -1, -1, 24, 12, -1, 30, -1, 12, -1, -1, -1, 12, -1, -1, 18, 12, -1, 24, -1, 12, 18, -1, -1, 18, -1, -1, 24, 24, -1, 18, -1, 24, 24, -1, -1, 18, -1, -1, 24, 24, -1, 18, -1, 24, 24, -1, -1, 18, -1, -1, 18, 24, -1, 18, -1, 24, 18, -1, -1, 18, -1, -1, 6, 18, -1, 18, -1, 24, 18, -1, -1, 24, -1, -1, 24, 12, -1, 18, -1, 12, 18, -1, -1, 18, -1, -1, 24, 24, -1, 24, -1, 24, 18, -1, -1, 18, -1, -1, 24, 18, -1, 18, -1, 24, 18, -1, -1, 18, -1, -1, 18, 24, -1, 30, -1, 24, 18, -1, -1, 12, -1, -1, 18, 24, -1, 18, -1, 24, 30, -1, -1, 12, -1, -1, 24, 24, -1, 18, -1, 18, 18, -1, -1, 12, -1, -1, 24, 24, -1, 18, -1, 24, 18, -1, -1, 18, -1, -1, 18, 12, -1, 18, -1, 24, 18, -1, -1, 18, -1, -1, 18, 24, -1, 18, -1, 24, 24, -1, -1, 18, -1, -1, 18, 24, -1, 18, -1, 24, 18, -1, -1, 18, -1, -1, 18, 24, -1, 18, -1, 12, 24, -1, -1, 18, -1, -1, 24, 24, -1, 18, -1, 24, 18, -1, -1, 18, -1, -1, 18, 24, -1, 18, -1, 24, 18, -1, -1, 18, -1, -1, 18, 12, -1, 18, -1, 24, 18, -1, -1, 24, -1, -1, 18, 18, -1, 18, -1, 12, 18, -1, -1, 18, -1, -1, 24, 24, -1, 30, -1, 24, 24, -1, -1, 18, -1, -1, 24, 12, -1, 30, -1, 24, 18, -1, -1, 24, -1, -1, -1, 12, -1, 6, -1, 24, 18, -1, -1, 18, 24, -1, 18, 24, -1, 24, -1, 24, 18, -1, -1, 18, -1, -1, 18, 12, -1, 24, -1, 24, 30, -1, -1, 24, -1, -1, 18, 24, -1, 18, -1, 24, 24, -1, -1, 24, -1, -1, 18, 18, -1, 18, -1, 18, 30, -1, -1, 24, -1, -1, 24, 12, -1, 30, -1, 24, 18, -1, -1, 18, -1, -1, 24, 24, -1, 18, -1, 12, 24, -1, -1]) def tearDown(self): del self.START del self.graph return super().tearDown()
visited[temp.data] = True temp = temp.next_element return result, visited def dfs_traversal(g: Graph, source): result = "" num_vertices = g.vertices if num_vertices is 0: return result visited = [False] * num_vertices result, visited = dfs_traversal_helper(g, source, visited) for i in range(num_vertices): if visited[i] is False: result_new, visited = dfs_traversal_helper(g, i, visited) result += result_new return result g = Graph(7) g.add_edge(1, 2) g.add_edge(1, 3) g.add_edge(2, 4) g.add_edge(2, 5) g.add_edge(3, 6) print(dfs_traversal(g, 1))
class TestBFS_Case_7(unittest.TestCase): START = None graph = None def setUp(self): self.START = 22 self.graph = Graph(self.START) self.graph.add_edge(50, 392) self.graph.add_edge(1, 44) self.graph.add_edge(1, 28) self.graph.add_edge(1, 42) self.graph.add_edge(1, 45) self.graph.add_edge(1, 23) self.graph.add_edge(1, 24) self.graph.add_edge(1, 23) self.graph.add_edge(1, 42) self.graph.add_edge(1, 19) self.graph.add_edge(1, 27) self.graph.add_edge(1, 12) self.graph.add_edge(1, 22) self.graph.add_edge(1, 27) self.graph.add_edge(1, 48) self.graph.add_edge(1, 41) self.graph.add_edge(1, 46) self.graph.add_edge(1, 11) self.graph.add_edge(1, 38) self.graph.add_edge(1, 8) self.graph.add_edge(1, 11) self.graph.add_edge(1, 9) self.graph.add_edge(1, 9) self.graph.add_edge(1, 23) self.graph.add_edge(1, 13) self.graph.add_edge(1, 25) self.graph.add_edge(1, 49) self.graph.add_edge(1, 24) self.graph.add_edge(1, 20) self.graph.add_edge(1, 27) self.graph.add_edge(1, 29) self.graph.add_edge(1, 15) self.graph.add_edge(1, 20) self.graph.add_edge(1, 17) self.graph.add_edge(1, 35) self.graph.add_edge(1, 24) self.graph.add_edge(1, 45) self.graph.add_edge(1, 43) self.graph.add_edge(1, 35) self.graph.add_edge(1, 15) self.graph.add_edge(1, 22) self.graph.add_edge(1, 50) self.graph.add_edge(1, 2) self.graph.add_edge(1, 7) self.graph.add_edge(1, 22) self.graph.add_edge(1, 34) self.graph.add_edge(1, 2) self.graph.add_edge(1, 27) self.graph.add_edge(1, 32) self.graph.add_edge(1, 40) self.graph.add_edge(1, 13) self.graph.add_edge(1, 47) self.graph.add_edge(1, 40) self.graph.add_edge(1, 28) self.graph.add_edge(1, 43) self.graph.add_edge(1, 24) self.graph.add_edge(1, 5) self.graph.add_edge(1, 9) self.graph.add_edge(1, 22) self.graph.add_edge(1, 39) self.graph.add_edge(1, 39) self.graph.add_edge(1, 25) self.graph.add_edge(1, 21) self.graph.add_edge(1, 3) self.graph.add_edge(1, 18) self.graph.add_edge(1, 25) self.graph.add_edge(1, 39) self.graph.add_edge(1, 17) self.graph.add_edge(1, 37) self.graph.add_edge(1, 38) self.graph.add_edge(1, 28) self.graph.add_edge(1, 35) self.graph.add_edge(1, 10) self.graph.add_edge(1, 11) self.graph.add_edge(1, 2) self.graph.add_edge(1, 38) self.graph.add_edge(1, 13) self.graph.add_edge(1, 18) self.graph.add_edge(1, 8) self.graph.add_edge(1, 47) self.graph.add_edge(1, 45) self.graph.add_edge(1, 18) self.graph.add_edge(1, 34) self.graph.add_edge(1, 19) self.graph.add_edge(1, 27) self.graph.add_edge(1, 7) self.graph.add_edge(1, 2) self.graph.add_edge(1, 30) self.graph.add_edge(1, 25) self.graph.add_edge(1, 39) self.graph.add_edge(1, 49) self.graph.add_edge(1, 34) self.graph.add_edge(1, 44) self.graph.add_edge(1, 21) self.graph.add_edge(1, 18) self.graph.add_edge(1, 47) self.graph.add_edge(1, 27) self.graph.add_edge(1, 32) self.graph.add_edge(1, 24) self.graph.add_edge(1, 29) self.graph.add_edge(1, 6) self.graph.add_edge(1, 40) self.graph.add_edge(1, 44) self.graph.add_edge(1, 48) self.graph.add_edge(1, 48) self.graph.add_edge(1, 34) self.graph.add_edge(1, 13) self.graph.add_edge(1, 27) self.graph.add_edge(1, 19) self.graph.add_edge(1, 22) self.graph.add_edge(1, 48) self.graph.add_edge(1, 45) self.graph.add_edge(1, 41) self.graph.add_edge(1, 28) self.graph.add_edge(1, 19) self.graph.add_edge(1, 38) self.graph.add_edge(1, 3) self.graph.add_edge(1, 23) self.graph.add_edge(1, 46) self.graph.add_edge(1, 14) self.graph.add_edge(1, 3) self.graph.add_edge(1, 24) self.graph.add_edge(1, 17) self.graph.add_edge(1, 41) self.graph.add_edge(1, 44) self.graph.add_edge(1, 19) self.graph.add_edge(1, 19) self.graph.add_edge(1, 34) self.graph.add_edge(1, 11) self.graph.add_edge(1, 27) self.graph.add_edge(1, 18) self.graph.add_edge(1, 29) self.graph.add_edge(1, 33) self.graph.add_edge(1, 41) self.graph.add_edge(1, 2) self.graph.add_edge(1, 40) self.graph.add_edge(1, 46) self.graph.add_edge(1, 36) self.graph.add_edge(1, 36) self.graph.add_edge(1, 2) self.graph.add_edge(1, 16) self.graph.add_edge(1, 3) self.graph.add_edge(1, 27) self.graph.add_edge(1, 13) self.graph.add_edge(1, 38) self.graph.add_edge(1, 7) self.graph.add_edge(1, 32) self.graph.add_edge(1, 48) self.graph.add_edge(1, 47) self.graph.add_edge(1, 16) self.graph.add_edge(1, 31) self.graph.add_edge(1, 26) self.graph.add_edge(1, 42) self.graph.add_edge(1, 23) self.graph.add_edge(1, 38) self.graph.add_edge(1, 43) self.graph.add_edge(1, 2) self.graph.add_edge(1, 12) self.graph.add_edge(1, 26) self.graph.add_edge(1, 29) self.graph.add_edge(1, 24) self.graph.add_edge(1, 34) self.graph.add_edge(1, 28) self.graph.add_edge(1, 2) self.graph.add_edge(1, 15) self.graph.add_edge(1, 36) self.graph.add_edge(1, 48) self.graph.add_edge(1, 36) self.graph.add_edge(1, 32) self.graph.add_edge(1, 38) self.graph.add_edge(1, 13) self.graph.add_edge(1, 32) self.graph.add_edge(1, 19) self.graph.add_edge(1, 27) self.graph.add_edge(1, 6) self.graph.add_edge(1, 29) self.graph.add_edge(1, 38) self.graph.add_edge(1, 29) self.graph.add_edge(1, 9) self.graph.add_edge(1, 5) self.graph.add_edge(1, 46) self.graph.add_edge(1, 3) self.graph.add_edge(1, 38) self.graph.add_edge(1, 6) self.graph.add_edge(1, 30) self.graph.add_edge(1, 14) self.graph.add_edge(1, 4) self.graph.add_edge(1, 35) self.graph.add_edge(1, 46) self.graph.add_edge(1, 19) self.graph.add_edge(1, 38) self.graph.add_edge(1, 12) self.graph.add_edge(1, 11) self.graph.add_edge(1, 33) self.graph.add_edge(1, 8) self.graph.add_edge(1, 42) self.graph.add_edge(1, 14) self.graph.add_edge(1, 22) self.graph.add_edge(1, 36) self.graph.add_edge(1, 36) self.graph.add_edge(1, 18) self.graph.add_edge(1, 31) self.graph.add_edge(1, 20) self.graph.add_edge(1, 24) self.graph.add_edge(1, 36) self.graph.add_edge(1, 37) self.graph.add_edge(1, 20) self.graph.add_edge(1, 2) self.graph.add_edge(1, 27) self.graph.add_edge(1, 40) self.graph.add_edge(1, 5) self.graph.add_edge(1, 30) self.graph.add_edge(1, 2) self.graph.add_edge(1, 40) self.graph.add_edge(1, 11) self.graph.add_edge(1, 46) self.graph.add_edge(1, 15) self.graph.add_edge(1, 43) self.graph.add_edge(1, 36) self.graph.add_edge(1, 5) self.graph.add_edge(1, 18) self.graph.add_edge(1, 37) self.graph.add_edge(1, 29) self.graph.add_edge(1, 6) self.graph.add_edge(1, 36) self.graph.add_edge(1, 34) self.graph.add_edge(1, 39) self.graph.add_edge(1, 27) self.graph.add_edge(1, 2) self.graph.add_edge(1, 3) self.graph.add_edge(1, 18) self.graph.add_edge(1, 28) self.graph.add_edge(1, 4) self.graph.add_edge(1, 22) self.graph.add_edge(1, 15) self.graph.add_edge(1, 9) self.graph.add_edge(1, 31) self.graph.add_edge(1, 48) self.graph.add_edge(1, 42) self.graph.add_edge(1, 33) self.graph.add_edge(1, 44) self.graph.add_edge(1, 26) self.graph.add_edge(1, 49) self.graph.add_edge(1, 37) self.graph.add_edge(1, 49) self.graph.add_edge(1, 37) self.graph.add_edge(1, 50) self.graph.add_edge(1, 3) self.graph.add_edge(1, 33) self.graph.add_edge(1, 46) self.graph.add_edge(1, 49) self.graph.add_edge(1, 22) self.graph.add_edge(1, 22) self.graph.add_edge(1, 6) self.graph.add_edge(1, 35) self.graph.add_edge(1, 14) self.graph.add_edge(1, 16) self.graph.add_edge(1, 17) self.graph.add_edge(1, 33) self.graph.add_edge(1, 42) self.graph.add_edge(1, 36) self.graph.add_edge(1, 36) self.graph.add_edge(1, 28) self.graph.add_edge(1, 26) self.graph.add_edge(1, 16) self.graph.add_edge(1, 2) self.graph.add_edge(1, 23) self.graph.add_edge(1, 41) self.graph.add_edge(1, 3) self.graph.add_edge(1, 45) self.graph.add_edge(1, 28) self.graph.add_edge(1, 3) self.graph.add_edge(1, 33) self.graph.add_edge(1, 35) self.graph.add_edge(1, 2) self.graph.add_edge(1, 3) self.graph.add_edge(1, 19) self.graph.add_edge(1, 4) self.graph.add_edge(1, 20) self.graph.add_edge(1, 47) self.graph.add_edge(1, 16) self.graph.add_edge(1, 50) self.graph.add_edge(1, 25) self.graph.add_edge(1, 18) self.graph.add_edge(1, 19) self.graph.add_edge(1, 16) self.graph.add_edge(1, 30) self.graph.add_edge(1, 27) self.graph.add_edge(1, 10) self.graph.add_edge(1, 15) self.graph.add_edge(1, 30) self.graph.add_edge(1, 21) self.graph.add_edge(1, 46) self.graph.add_edge(1, 28) self.graph.add_edge(1, 4) self.graph.add_edge(1, 41) self.graph.add_edge(1, 8) self.graph.add_edge(1, 6) self.graph.add_edge(1, 25) self.graph.add_edge(1, 37) self.graph.add_edge(1, 32) self.graph.add_edge(1, 15) self.graph.add_edge(1, 11) self.graph.add_edge(1, 27) self.graph.add_edge(1, 24) self.graph.add_edge(1, 2) self.graph.add_edge(1, 2) self.graph.add_edge(1, 37) self.graph.add_edge(1, 30) self.graph.add_edge(1, 41) self.graph.add_edge(1, 30) self.graph.add_edge(1, 40) self.graph.add_edge(1, 28) self.graph.add_edge(1, 24) self.graph.add_edge(1, 2) self.graph.add_edge(1, 16) self.graph.add_edge(1, 46) self.graph.add_edge(1, 35) self.graph.add_edge(1, 4) self.graph.add_edge(1, 15) self.graph.add_edge(1, 42) self.graph.add_edge(1, 50) self.graph.add_edge(1, 25) self.graph.add_edge(1, 44) self.graph.add_edge(1, 29) self.graph.add_edge(1, 50) self.graph.add_edge(1, 35) self.graph.add_edge(1, 22) self.graph.add_edge(1, 2) self.graph.add_edge(1, 25) self.graph.add_edge(1, 32) self.graph.add_edge(1, 28) self.graph.add_edge(1, 24) self.graph.add_edge(1, 8) self.graph.add_edge(1, 17) self.graph.add_edge(1, 2) self.graph.add_edge(1, 12) self.graph.add_edge(1, 17) self.graph.add_edge(1, 2) self.graph.add_edge(1, 23) self.graph.add_edge(1, 13) self.graph.add_edge(1, 42) self.graph.add_edge(1, 24) self.graph.add_edge(1, 13) self.graph.add_edge(1, 10) self.graph.add_edge(1, 41) self.graph.add_edge(1, 2) self.graph.add_edge(1, 13) self.graph.add_edge(1, 31) self.graph.add_edge(1, 23) self.graph.add_edge(1, 28) self.graph.add_edge(1, 25) self.graph.add_edge(1, 13) self.graph.add_edge(1, 2) self.graph.add_edge(1, 16) self.graph.add_edge(1, 17) self.graph.add_edge(1, 31) self.graph.add_edge(1, 4) self.graph.add_edge(1, 46) self.graph.add_edge(1, 8) self.graph.add_edge(1, 23) self.graph.add_edge(1, 15) self.graph.add_edge(1, 2) self.graph.add_edge(1, 10) self.graph.add_edge(1, 31) self.graph.add_edge(1, 48) self.graph.add_edge(1, 37) self.graph.add_edge(1, 14) self.graph.add_edge(1, 22) self.graph.add_edge(1, 24) self.graph.add_edge(1, 33) self.graph.add_edge(1, 24) self.graph.add_edge(1, 17) self.graph.add_edge(1, 33) self.graph.add_edge(1, 23) self.graph.add_edge(1, 41) self.graph.add_edge(1, 17) self.graph.add_edge(1, 33) self.graph.add_edge(1, 25) self.graph.add_edge(1, 41) self.graph.add_edge(1, 25) self.graph.add_edge(1, 8) self.graph.add_edge(1, 46) self.graph.add_edge(1, 4) self.graph.add_edge(1, 26) self.graph.add_edge(1, 18) self.graph.add_edge(1, 45) self.graph.add_edge(1, 48) self.graph.add_edge(1, 35) self.graph.add_edge(1, 40) self.graph.add_edge(1, 19) self.graph.add_edge(1, 36) self.graph.add_edge(1, 49) return super().setUp() def test_case_7(self): self.graph.get_all_paths() self.graph.get_costs() self.assertEqual(self.graph.get_costs(), [ 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12 ]) def tearDown(self): del self.START del self.graph return super().tearDown()