给定n个城市的x,y坐标,如何使用python形成距离矩阵?

2024-06-17 09:34:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我是编程新手,我试图解决一个旅行推销员的问题,在这个问题中,我得到了n个不同城市的x和y坐标。如何使用python找到距离矩阵


Tags: 距离编程矩阵推销员新手
1条回答
网友
1楼 · 发布于 2024-06-17 09:34:37

我假设你们的城市位于一个平面上,而不是地球上,所以你们可以使用纯欧几里得距离。我还假设您有自己的城市-例如,在python字典中输入数据,如下所示:

cities = {
    "london": (4.15, 5.89),
    "paris": (2, 4),
    "prague": (1,5),
 }

其中括号内的值为相应的坐标

然后,必须定义基于坐标计算欧几里德距离的函数:

def distance_between(point_a, point_b):
    return math.sqrt((point_a[0] - point_b[0])**2 + (point_a[1] - point_b[1])**2)

您还需要一个函数,该函数将根据您的输入生成距离矩阵。您将在此处使用距离计算功能:

def get_matrix(cities):
    distance_matrix = {}
    for city_a in cities:
        distance_matrix[city_a] = {}
        for city_b in cities:
            distance_matrix[city_a][city_b] = distance_between(
                    cities[city_a], cities[city_b])

return distance_matrix

现在你拥有了一切,你可以像这样使用它:

distances = get_matrix(cities)
print(distances["london"]["london"])
print(distances["paris"]["prague"])

本例的输出仅为两个数字:

0.0
1.4142135623730951

另外,不要忘记将import math放在.py文件的开头

相关问题 更多 >