分而治之的实用策略

时间:2019-06-20 13:16:30

标签: divide-and-conquer

这是一张图片,有两行,即y = 1和y = 0,还有一些线段,即(A1,B1) A1(m,1) (在y = 1上)和 B1(n,0)(在y = 0上)。某些线段与其他线段相交,问题是设计一种算法来找到交点数 O(nlogn)中的图片中。 在图片中有4个线段和4个交点。 enter image description here

这是我的想法----

首先,我可以将所有线段放在一起,并根据y = 1上的x值对其进行排序,然后将它们递归地划分,直到只剩下一个线段。 >

下一步,我开始计算左手部分和右手部分之间的交点数。以A1(m,1)B1(n,0)和A2(w,1)B2(v,0)为例,如果w> m且v

一旦完成(A1,B1)和(A2,B2)和(A3,B3)和(A4,B4)之间的检查,我需要获取左侧部分的交点编号[ (A1,B1),(A2,B2)]的右边为[(A3,B3),(A4,B4)],并且这就是我被卡住的地方。我已经知道(A1,B1)与(A2,B2)和(A3,B3)与(A4,B4)之间的交点号,我如何获得右侧部分中的元素与左侧部分中的元素之间的交点号因为总的运行时间是O(nlogn),所以需要O(n)来获得交点号。我不能只对右边的元素进行迭代来检查交叉点数,而左边的所有元素都将取O(n ^ 2)。

感谢您的帮助。如果到目前为止我的想法还不正确,请指出。

0 个答案:

没有答案