Algorithm O(n logn)时间内求特殊点k的算法

Algorithm O(n logn)时间内求特殊点k的算法,algorithm,geometry,Algorithm,Geometry,给算法一个n logn时间下界,以检查一组点是否有一个特殊的点k k的定义如下: 对于A点的集合A,如果对于A中的每个点M,都有一个点Q,使得k在线段MQ的中间,这样的k不一定属于A.< /P> 例如,对于一组四个点(1,0)、(0,1)、(1,1)、(0,0),该集合有一个特殊点k=(0.5,0.5) 当他们问我这个问题时,我完全没有表情,什么都没想到。我想它需要一些强大的几何背景。我想你只需要计算质心(先去掉重复项),然后检查它是否是你的k。可能导致它成为O(n log n)的唯一原因是在指

给算法一个n logn时间下界,以检查一组点是否有一个特殊的点k

k的定义如下:

对于A点的集合A,如果对于A中的每个点M,都有一个点Q,使得k在线段MQ的中间,这样的k不一定属于A.< /P> 例如,对于一组四个点(1,0)、(0,1)、(1,1)、(0,0),该集合有一个特殊点k=(0.5,0.5)


当他们问我这个问题时,我完全没有表情,什么都没想到。我想它需要一些强大的几何背景。

我想你只需要计算质心(先去掉重复项),然后检查它是否是你的
k
。可能导致它成为
O(n log n)
的唯一原因是在指定位置搜索点。

O(nlogn)
解决方案(我仍然不清楚您为什么要寻找下限解决方案。您不妨进行彻底检查,然后运行nlogn循环以确保下限。不太难。我想您一定是指上限):

通过对所有点求平均值来找到唯一有效的候选点。即,求它们的坐标之和并除以点的数量。如果存在这样的k,这就是它。如果不存在这样的k,我们将在最后一步中发现找到的点是无效的

创建一个新的点阵列(集合),我们在其中移动轴,使其以点k为中心。也就是说,如果k=(xk,yk),一个点(x,y)将变成(x-xk,y-yk)。根据比率x/y和标准sqrt(x2+y2)对点进行排序.正如下一步所示,如何进行排序并不重要,即哪一个是主要标准,哪一个是次要标准

我们可以搜索每个点的补码,或者更好,简单地遍历数组并验证每个相邻点确实是补码。也就是说,如果这是一个解决方案,那么这个新数组中的每两个补码点的形式是(x,y)和(-x,-y),因为我们将轴居中,这意味着它们具有相同的比率(“梯度”)和norm,以及排序之后,必须是相邻的

如果k是无效的,那么在这个遍历中我们将到达一个点,并且发现它的邻居不是右/互补形式==>不存在这样的k

时间=
O(n)
用于查找候选k+
O(n)
用于构建新阵列,因为每个新点都可以在O(1)+
O(nlogn)
用于排序+
O(n)
用于验证遍历

=
O(nlogn)

我真的不理解你的问题。一个找到下界的算法?你是指一个有下界的算法?还是证明任何这样的算法都有这样的下界?