在python中,如何高效地从一组不同的点到另一组点的每个点找到最近的点

2024-06-16 13:30:54 发布

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

我有这个密码

import random as rand


W = 2
H = 2
n_riders = 10
n_drivers = 20
riders_coords = []
drivers_coords = []
for n in range(n_riders):
    x = rand.uniform(-1,1)*W
    y = rand.uniform(-1,1)*H
    riders_coords.append((x, y))
for n in range(n_drivers):
    x = rand.uniform(-1,1)*W
    y = rand.uniform(-1,1)*H
    drivers_coords.append((x, y))
print(riders_coords)
print(drivers_coords)

我想找到一种方法,将每个车手与最近的车手配对(欧几里得距离),考虑到单个车手只能分配给单个车手。目标是找到使总距离最小的配对。如果n_骑手<;=n_司机。 有谁知道一个简单的方法来实现这一点,还是我必须从头开始绘制voronoi多边形


Tags: 方法inimport距离密码forrangeuniform
1条回答
网友
1楼 · 发布于 2024-06-16 13:30:54

您的问题称为欧几里德赋值问题,或者欧几里德二部匹配问题。这个问题已经在学术上进行了研究,有一些已知的算法,但除了在学术论文中,我没有找到任何关于它们的信息:

通过搜索文献,您可能会找到更多已发布的算法或启发法

相关问题 更多 >