【发布时间】:2013-10-30 21:24:44
【问题描述】:
假设坐标 (x1,y1) 处的一个点支配 如果 x1 ≤ x2 且 y1 ≤ y2 则另一个点 (x2,y2);
我有一组点 (x1,y1) , ....(xn,yn) 我想找到支配对的总数。我可以通过将所有点相互比较来使用蛮力来做到这一点,但这需要时间 O(n2)。相反,我想使用分而治之的方法在 O(n log n) 时间内解决这个问题。
现在,我有以下算法:
绘制一条垂直线,将点集分成两个相等的 Pleft 和 Pright 子集。作为基本情况,如果只剩下两点,我可以直接比较它们。
递归计算 Pleft 和 Pright
中的支配对数
一些征服步骤?
问题是我看不到“征服”步骤应该在这里。我想计算从 Pleft 到 Pright 交叉的主导对有多少,但如果不比较两者中的所有点,我不知道该怎么做部分,这需要时间 O(n2)。
谁能给我一个关于如何完成征服步骤的提示?
所以 y 坐标的两半是:{1,3,4,5,5} 和 {5,8,9,10,12}
我画了分割线。
【问题讨论】:
标签: algorithm 2d big-o time-complexity divide-and-conquer