2024-06-17 09:34:37 发布
网友
我是编程新手,我试图解决一个旅行推销员的问题,在这个问题中,我得到了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文件的开头
import math
我假设你们的城市位于一个平面上,而不是地球上,所以你们可以使用纯欧几里得距离。我还假设您有自己的城市-例如,在python字典中输入数据,如下所示:
其中括号内的值为相应的坐标
然后,必须定义基于坐标计算欧几里德距离的函数:
您还需要一个函数,该函数将根据您的输入生成距离矩阵。您将在此处使用距离计算功能:
现在你拥有了一切,你可以像这样使用它:
本例的输出仅为两个数字:
另外,不要忘记将
import math
放在.py文件的开头相关问题 更多 >
编程相关推荐