def make_graph_three(): my_graph = WeightedGraph() my_graph.add_node('a') my_graph.add_node('b') my_graph.add_node('c') my_graph.add_edge('a', 'c') my_graph.add_edge('b', 'a') return my_graph
def test_add_node(self): """test_add_node: Test adding a new node """ node_1 = WeightedNode(1, [2], {(1, 2): 2}) node_2 = WeightedNode(2, [1], {(2, 1): 2}) node_3 = WeightedNode(3, [1, 2], {(3, 1): 2, (3, 2): 4}) graph = WeightedGraph([node_1, node_2]) graph.add_node(node_3) self.assertEqual(graph.vertices, set({1, 2, 3})) self.assertEqual(graph.edges, {1: set({2}), 2: set({1}), 3: set({1, 2})}) self.assertEqual(graph.weights, {(1, 2): 2, (2, 1): 2, (3, 1): 2, (3, 2): 4})
def make_graph_no_edges(): my_graph = WeightedGraph() my_graph.add_node('a') my_graph.add_node('b') my_graph.add_node('c') return my_graph
def lowest_cost_node(costs, visited): lowest_cost = math.inf lowest_cost_node = None for node in costs: cost = costs[node] if node not in visited and cost < lowest_cost: lowest_cost = cost lowest_cost_node = node return lowest_cost_node g = WeightedGraph() g.add_node('A') g.add_node('B') g.add_node('C') g.add_node('D') g.add_node('E') g.add_node('F') g.add_edge('A', 'B', 5) g.add_edge('A', 'C', 2) g.add_edge('B', 'C', 8) g.add_edge('B', 'D', 4) g.add_edge('B', 'E', 2) g.add_edge('C', 'E', 7) g.add_edge('D', 'E', 6) g.add_edge('D', 'F', 3) g.add_edge('E', 'F', 1)