假设坐标为(x1,y1)的一个点支配另一个点(x2,y2),如果x1≤x2且y1≤y2,则称该点支配另一个点。
我有一组点(x1,y1),....(xn,yn),想要找出总共有多少支配对。使用暴力方法可以将所有点两两比较,但这需要时间O(n^2)。相反,我想使用分治法在O(nlogn)的时间内解决这个问题。
目前,我有以下算法:
- 绘制垂直线将点集分成两个等分的子集Pleft和Pright。如果只剩下两个点,则可以直接比较。 - 递归计算Pleft和Pright中支配对的数量 - 一些征服步骤?
问题在于我不知道这里的“征服”步骤应该是什么。我想计算从Pleft到Pright跨越的支配对的数量,但我不知道如何做到这一点,而不必比较两个部分中的所有点,这将需要O(n^2)的时间。
有人能给我关于如何进行征服步骤的提示吗?
我有一组点(x1,y1),....(xn,yn),想要找出总共有多少支配对。使用暴力方法可以将所有点两两比较,但这需要时间O(n^2)。相反,我想使用分治法在O(nlogn)的时间内解决这个问题。
目前,我有以下算法:
- 绘制垂直线将点集分成两个等分的子集Pleft和Pright。如果只剩下两个点,则可以直接比较。 - 递归计算Pleft和Pright中支配对的数量 - 一些征服步骤?
问题在于我不知道这里的“征服”步骤应该是什么。我想计算从Pleft到Pright跨越的支配对的数量,但我不知道如何做到这一点,而不必比较两个部分中的所有点,这将需要O(n^2)的时间。
有人能给我关于如何进行征服步骤的提示吗?