Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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 在二维平面中查找点,使与一组点的最大距离最小_Algorithm - Fatal编程技术网

Algorithm 在二维平面中查找点,使与一组点的最大距离最小

Algorithm 在二维平面中查找点,使与一组点的最大距离最小,algorithm,Algorithm,我处理这个问题的方法是将二维平面上的点分解为一维点,然后分别在x轴和y轴上找到与这些点之间具有最小最大距离(欧氏距离)的点。对于ex,如果点是{(2,3),(3,4),(5,6)},我将取x坐标(2,3,5),并找到x轴上与这些点的最大距离最小的点,即(2,3,5),然后取y坐标(3,4,6),并找到y轴上与这些点的最大距离最小的点,即(3,4,6)。我的答案将是(x,y)通过这种方法得到的。但是它在某些测试用例上给出了错误的答案。您提出的方法是合理的,但并不总是有效的。例如,假设您得到以下几点

我处理这个问题的方法是将二维平面上的点分解为一维点,然后分别在x轴和y轴上找到与这些点之间具有最小最大距离(欧氏距离)的点。对于ex,如果点是{(2,3),(3,4),(5,6)},我将取x坐标(2,3,5),并找到x轴上与这些点的最大距离最小的点,即(2,3,5),然后取y坐标(3,4,6),并找到y轴上与这些点的最大距离最小的点,即(3,4,6)。我的答案将是(x,y)通过这种方法得到的。但是它在某些测试用例上给出了错误的答案。

您提出的方法是合理的,但并不总是有效的。例如,假设您得到以下几点:(0,-1),(0,+1)和(1,0)。把p点放在(0,0)的最佳位置——你明白为什么吗?但是,如果尝试拾取x坐标,使最大距离最小化为0、0和1,则会拾取x=0.5,这是错误的点。这意味着您需要寻找另一个解决方案路线

假设您在二维平面中有一组点,并决定选择某个点p作为答案。设q是离p尽可能远的任意点。如果你画一个以p为中心的圆,使得q在这个圆的周长上,那么所有其他的点都必须在这个圆内或者在这个圆的周长上。你要寻找的点p也必须在所有可能绘制的圆中最小化以这种方式绘制的圆的半径,因为你要最小化从p到任何给定点的最大距离


有鉴于此,您试图解决的问题相当于以下问题:给定一组点,包含所有这些点的最小圆是什么?一旦您找到该问题的答案,您可以选择该圆的中心作为点p。这个问题被称为,有很多快速算法可以解决它。

如果我正确理解这个问题,我相信你应该使用欧几里德距离,即使用毕达哥拉斯定理来计算距离。分析不起作用的特定测试用例是你最好的选择。其中的要点是什么?我看不到测试用例,我真的很困惑它应该是错误的。如果您希望我们能够帮助您,那么您需要构建一个测试用例。请阅读如何做到这一点的指导。