Algorithm 如何在O(nh)和O(nlog(h))复杂度中找到Pareto最优点?

Algorithm 如何在O(nh)和O(nlog(h))复杂度中找到Pareto最优点?,algorithm,2d,computational-geometry,convex-hull,convex-polygon,Algorithm,2d,Computational Geometry,Convex Hull,Convex Polygon,有谁能提出一种算法来寻找帕累托最优点(形成一个阶梯),就像O(n*h)和O(n*log(h))时间复杂度中的图表所示,其中h是帕累托最优点的数量 我使用礼品包装算法来解决这个问题(在O(n*h)中),但它只找到凸面外壳类型的楼梯,而忽略了形成凹面角的点。将建议放在一个地方 我们的想法是使用分而治之的策略。如果我们能找到pareto点P,它将O(n)中的其余pareto点分成一半,那么它可以在O(n log(h)中完成。这可以通过将点分为三部分来检查:P的右边,P的左边和上面,P的左边和下面。第

有谁能提出一种算法来寻找帕累托最优点(形成一个阶梯),就像
O(n*h)
O(n*log(h))
时间复杂度中的图表所示,其中
h
是帕累托最优点的数量


我使用礼品包装算法来解决这个问题(在
O(n*h)
中),但它只找到凸面外壳类型的楼梯,而忽略了形成凹面角的点。

将建议放在一个地方

我们的想法是使用分而治之的策略。如果我们能找到pareto点P,它将O(n)中的其余pareto点分成一半,那么它可以在O(n log(h)中完成。这可以通过将点分为三部分来检查:P的右边,P的左边和上面,P的左边和下面。第三个集合没有帕累托点。在另外两个点上递归地执行相同的过程。设置三个部分按比例拆分点:
a、b、1-a-b
。这种复杂性是:

T(n, h) = T(a*n, h/2) + T(b*n, h/2) + O(n)
       <= T(n, h/2) + O(n)
       <= T(n, h/4) + 2 * O(n)
       <= T(n, h/8) + 3 * O(n)
       <= ...
       <= O(n log(h))
T(n,h)=T(a*n,h/2)+T(b*n,h/2)+O(n)

按x坐标减少点的顺序,首先拾取,用y@maraca删除所有点,这是一个O(n)算法。我特别需要一个O(nh)和O(nlog h)算法,实际上它是O(nh),排序是O(nlogn),然后你选择h乘以一个点,然后扫描剩下的项目,所以它类似于O(nh/2)+O(nlogn),如果nlogn增长慢于nh,则表示为O(nh)。@maraca哦,即使不需要排序,也只需选择O(n)中最右边的点。从它开始,从所选点的小于x且大于y的点中选择最右边的点。谢谢你的帮助!任何关于O(nlogh)分而治之的想法。找到最大值(y)的点P,其中x>=(最小值(x)+最大值(x))/2。也就是说,帕累托点在中间:-分三部分:P的右、左、上的P、左、下的P第三集没有帕累托点。递归地在另外两组点上执行相同的过程。