O(n)中的主导点集

时间:2013-09-27 20:52:30

标签: algorithm big-o time-complexity divide-and-conquer closest-points

所以,如果给出两个点A(x1,y1)和B(x2,y2),并且如果x1 <= x2且y1 <= y2,那么我们说B支配A.现在,给出了很多分,我希望找出所有非支配点。琐碎的方法是将每个点与其他点进行比较,并获得所有非支配点。但它是O(n ^ 2)。所以我尝试分而治之,非常简单,我在O(nlogn)中找到了。我们的教授说,它仍然可以在O(n)中完成。我觉得这真的不可能。我不是要求你为我解决这个问题,而是想知道是否有任何“明显的”方法可以确保在任何情况下都无法在O(n)中完成?但是,如果真的有可能,请不要回答,或许给出一些线索。

1 个答案:

答案 0 :(得分:1)

如果这些点已经按其中一个坐标(比如x坐标)排序,可以在O(n)中完成,如下所示:

  • 处理最大x坐标的点。
    • 当您浏览它们时,请跟踪最大的y坐标。
    • 如果当前点的y坐标小于迄今为止的最大y坐标,则它由另一个点控制。否则,它不会占主导地位,所以将它添加到输出中。

如果积分尚未排序,我认为没有O(n)解决方案(但我想我们可以拭目以待)。