Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何从多个点找到最远的x,y坐标?_Algorithm_Language Agnostic - Fatal编程技术网

Algorithm 如何从多个点找到最远的x,y坐标?

Algorithm 如何从多个点找到最远的x,y坐标?,algorithm,language-agnostic,Algorithm,Language Agnostic,我在平面上有一组随机点,我想把另一个点放在最“稀疏”的位置 例如,如果在0

我在平面上有一组随机点,我想把另一个点放在最“稀疏”的位置

例如,如果在0
# this python snippet just generates the plot blow.
import matplotlib.pyplot as plt

# there are actually a lot more, ~10000 points.
xs = [8.36, 1.14, 0.93, 8.55, 7.49, 6.55, 5.13, 8.49, 0.15, 3.48]
ys = [0.65, 6.32, 2.04, 0.51, 4.5, 7.05, 1.07, 5.23, 0.66, 2.54]
plt.xlim([0, 10])
plt.ylim([0, 10])
plt.plot(xs, ys, 'o')
plt.show()

在这个平面上,我应该在哪里放置一个新点,以便新点与其他点的距离最远?请注意,我想最大化到另一个点的最小距离,但不是最大化到所有其他点的平均距离(感谢)

“”是至少我能找到的一个,但我不确定页面是否直接解决了我的问题(实际上链接的案例看起来比我的案例更复杂)


[编辑]顺便说一句,我注意到一般约束全局优化可以找到一个可能的解决方案(如果我在每个角添加一个点)[4.01,5.48]在这种情况下,但我认为如果有更多的,比如说10000个点,它是不起作用的。

你的问题可以通过计算点集的值来解决。这是将平面划分为多个区域,使得原始集中的每个点都有一个区域,并且在该区域内,对应点比集合中的其他点更接近

这些区域的边界是直线,因此该直线上的任何点与在该边界处相交的区域对应的两点之间的距离相等。因此,多个边界相交的顶点与原始集合中至少三个点的距离相等


平面中最稀疏的点是Voronoi图中的顶点,或Voronoi图中的边与平面边界的交点,或平面的一个角。Voronoi图可以用O(n logn)时间计算;在此之后,可以在线性时间内找到最稀疏的点,因为您知道每个顶点/边与哪个Voronoi区域相邻,从而知道要测量到的距离的原始集合中的哪个点。

您的问题可以通过计算点集合的距离来解决。这是将平面划分为多个区域,使得原始集中的每个点都有一个区域,并且在该区域内,对应点比集合中的其他点更接近

这些区域的边界是直线,因此该直线上的任何点与在该边界处相交的区域对应的两点之间的距离相等。因此,多个边界相交的顶点与原始集合中至少三个点的距离相等


平面中最稀疏的点是Voronoi图中的顶点,或Voronoi图中的边与平面边界的交点,或平面的一个角。Voronoi图可以用O(n logn)时间计算;在此之后,可以在线性时间内找到最稀疏的点,因为您知道每个顶点/边与哪个Voronoi区域相邻,从而知道从原始集合中测量到哪个点的距离。

应该使用哪个?@GuyCoder“正常”欧几里德距离。没有重量。也许我应该使图形的纵横比相等……两个可能的指标是A)最大化到另一点的最小距离,或B)最大化到所有其他点的平均距离。他们可能会给出不同的结果。@user985366好的,我的问题是模棱两可的。我想要一张支票。谢谢,我编辑过。实际上B)也很有趣。这有什么用途?应该使用哪一种?@GuyCoder“正常”,欧几里德距离。没有重量。也许我应该使图形的纵横比相等……两个可能的指标是A)最大化到另一点的最小距离,或B)最大化到所有其他点的平均距离。他们可能会给出不同的结果。@user985366好的,我的问题是模棱两可的。我想要一张支票。谢谢,我编辑过。实际上B)也是很有趣的。这个应用程序是什么?