6B.
neighbor
def nearest_neighbor_tsp(distances):
n = len(distances)
visited = [False] * n #initial
route = []
total_distances = 0.0
#start city
current_city = 0
[Link](current_city)
visited[current_city] = True
for _ in range(1,n):
nearest_city = -1
min_dist = float('inf')
for i in range(n):
if not visited[i] and distances[current_city][i] < min_dist:
min_dist = distances[current_city][i]
nearest_city = i
if nearest_city != -1:
[Link](nearest_city)
visited[nearest_city] = True
total_distances += min_dist
current_city = nearest_city
else:
break
total_distances += distances[current_city][route[0]]
[Link](route[0])
return route, total_distances
if __name__ == "__main__":
distances = [
[0, 10, 15, 20],
[10, 0, 35, 25],
[15, 35, 0, 30],
[20, 25, 30, 0]
tour, dist = nearest_neighbor_tsp(distances)
print(f"Tour: {tour}")
print(f"Total Distances:{dist}")
output
Tour: [0, 1, 3, 2, 0]
Total Distances:80.0
In [ ]: