用python写出:给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路,本例中每对城市之间的距离矩阵采用随机生成的方式产生
时间: 2024-10-08 20:03:53 浏览: 16
在Python中,我们可以使用Dijkstra算法或Bellman-Ford算法解决这个问题,这里我将以Dijkstra算法为例,因为它是求单源点最短路径的经典算法,并适用于非负权重图。首先,假设我们有一个二维数组`dist_matrix`代表城市间的距离,其中索引表示城市,值表示距离。
```python
import heapq
def dijkstra(dist_matrix, start_city):
n = len(dist_matrix) # 城市数量
distances = {city: float('inf') for city in range(n)}
distances[start_city] = 0
queue = [(0, start_city)]
while queue:
current_distance, current_city = heapq.heappop(queue)
if current_distance > distances[current_city]:
continue # 如果已经找到更短的距离,跳过
for neighbor, distance in enumerate(dist_matrix[current_city]):
if distance == 0:
continue # 避免无限循环,相邻城市间直接相连的情况
total_distance = current_distance + distance
if total_distance < distances[neighbor]:
distances[neighbor] = total_distance
heapq.heappush(queue, (total_distance, neighbor))
return distances
# 生成随机距离矩阵
import random
random_matrix = [[random.randint(0, 100) for _ in range(n)] for _ in range(n)]
# 起始城市
start_city = 0
shortest_distances = dijkstra(random_matrix, start_city)
# 打印结果
for city, distance in shortest_distances.items():
print(f"从{start_city}到{city}的最短距离: {distance}")
#
阅读全文