给定n个城市的x,y坐标如何用python构成距离矩阵?
Given the x,y co-ordinates of n cities how to form the distance matrix using python?
我是编程新手,我正在尝试解决一个旅行商问题,我得到了 n 个不同城市的 x 和 y 坐标如何使用 python 找到距离矩阵?
我假设您的城市位于平面上 - 而不是地球上 - 因此您可以使用纯欧氏距离。而且我还假设你有你的城市 - 例如在 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 文件的开头
我是编程新手,我正在尝试解决一个旅行商问题,我得到了 n 个不同城市的 x 和 y 坐标如何使用 python 找到距离矩阵?
我假设您的城市位于平面上 - 而不是地球上 - 因此您可以使用纯欧氏距离。而且我还假设你有你的城市 - 例如在 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 文件的开头