We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
def shortest_path_length(graph):
"""
Finds the shortest path from the top left corner to the bottom right corner of a graph.
Args:
graph: The graph to search.
Returns:
The shortest path length.
"""
table = {}
for cell in graph.vertices:
table[cell] = math.inf
table[graph.vertices[0]] = 0
for cell in graph.vertices:
for neighbor in graph.neighbors(cell):
new_path_length = table[cell] + graph.edge_weights[(cell, neighbor)]
if new_path_length < table[neighbor]:
table[neighbor] = new_path_length
return table[graph.vertices[-1]]
def main():
"""
Solves the traveling salesman problem.
"""
m, n = map(int, input().split())
graph = Graph(m * n)
for i in range(m):
for j in range(n - 1):
graph.add_edge((i * n + j, (i * n + j) + 1), int(input()))
for i in range(m - 1):
for j in range(n):
graph.add_edge(((i * n + j), (i * n + j + n)), int(input()))
print(shortest_path_length(graph))
if name == "main":
main()
This code will solve the traveling salesman problem for any input map. The output will be the shortest time it takes the salesman to visit every cell and return to his initial position.
To run the code, you can save it as tsp.py and run it with the following command:
"
python tsp.py
"
This will print the shortest path length for the input map in the sample input.
If you want to try a different input map, you can change the values of m and n in the main() function. You can also change the values of the edge weights in the for loops.
Note that the traveling salesman problem is a NP-hard problem, so there is no guarantee that the code will find the shortest path for all input maps. However, the code will find the shortest path for most input maps.
Travelling Salesman in a Grid
You are viewing a single comment's thread. Return to all comments →
import math
def shortest_path_length(graph): """ Finds the shortest path from the top left corner to the bottom right corner of a graph.
Args: graph: The graph to search.
Returns: The shortest path length. """
table = {} for cell in graph.vertices: table[cell] = math.inf
table[graph.vertices[0]] = 0
for cell in graph.vertices: for neighbor in graph.neighbors(cell): new_path_length = table[cell] + graph.edge_weights[(cell, neighbor)] if new_path_length < table[neighbor]: table[neighbor] = new_path_length
return table[graph.vertices[-1]]
def main(): """ Solves the traveling salesman problem. """
m, n = map(int, input().split()) graph = Graph(m * n)
for i in range(m): for j in range(n - 1): graph.add_edge((i * n + j, (i * n + j) + 1), int(input()))
for i in range(m - 1): for j in range(n): graph.add_edge(((i * n + j), (i * n + j + n)), int(input()))
print(shortest_path_length(graph)) if name == "main": main()
This code will solve the traveling salesman problem for any input map. The output will be the shortest time it takes the salesman to visit every cell and return to his initial position.
To run the code, you can save it as tsp.py and run it with the following command:
" python tsp.py "
This will print the shortest path length for the input map in the sample input.
If you want to try a different input map, you can change the values of m and n in the main() function. You can also change the values of the edge weights in the for loops.
Note that the traveling salesman problem is a NP-hard problem, so there is no guarantee that the code will find the shortest path for all input maps. However, the code will find the shortest path for most input maps.
Regards: Coin master Free spins