如何找到覆盖2D空间中给定点的最窄带?

时间:2017-06-22 09:00:20

标签: algorithm

在2D空间中给定n个点,我希望找到覆盖这些点的最窄带。换句话说,我想找到两条平行线,使得所有点都落在这两条线之间。有没有退出有效的算法?

1 个答案:

答案 0 :(得分:4)

首先,这些线应该经过构成我们点convex hull的点。很多different algorithms都可以找到凸壳。选择取决于您的数据。

enter image description here

其次,我们的一条平行线将穿过凸包区段。因为我们可以旋转两条平行线,减少它们之间的距离,直到我们停在凸包的另一点。

enter image description here

现在,我们应该遍历所有凸包区段,并且对于每个区段,构建一条穿过该区段的线,并找到距离该线最远的凸包点。所有这些距离(从最远点到线)的最小值将是答案。所有这些迭代都可以使用rotating calipers在线性时间内完成(感谢MBo)。