在2D空间中给定n
个点,我希望找到覆盖这些点的最窄带。换句话说,我想找到两条平行线,使得所有点都落在这两条线之间。有没有退出有效的算法?
答案 0 :(得分:4)
首先,这些线应该经过构成我们点convex hull的点。很多different algorithms都可以找到凸壳。选择取决于您的数据。
其次,我们的一条平行线将穿过凸包区段。因为我们可以旋转两条平行线,减少它们之间的距离,直到我们停在凸包的另一点。
现在,我们应该遍历所有凸包区段,并且对于每个区段,构建一条穿过该区段的线,并找到距离该线最远的凸包点。所有这些距离(从最远点到线)的最小值将是答案。所有这些迭代都可以使用rotating calipers在线性时间内完成(感谢MBo)。