TSP
from itertools import permutations
def tsp(graph, start):
nodes = list(graph.keys())
nodes.remove(start)
min_cost, best_path = float('inf'), []
for perm in permutations(nodes):
path = [start] + list(perm) + [start]
cost = sum(graph[path[i]][path[i+1]] for i in range(len(path) - 1))
if cost < min_cost:
min_cost, best_path = cost, path
return best_path, min_cost
graph = {
'A': {'B': 10, 'C': 15, 'D': 20},
'B': {'A': 10, 'C': 35, 'D': 25},
'C': {'A': 15, 'B': 35, 'D': 30},
'D': {'A': 20, 'B': 25, 'C': 30}
}
print(tsp(graph, 'A'))
Traveling salesman
Comments
Post a Comment