包含


11

输入:一组在点- [R 3,和一个整数ķ ≤ Ñ。ñ[R3ķ≤ñ

输出:最小体积轴对齐的边界框,至少包含这n个点中的个。ķñ

我想知道是否有任何算法可以解决此问题。我能想到的最好的时间是时间,大致如下:在三个维度中的两个维度上,所有可能的上限和下限都将受到蛮力作用;对于每种O (n 4)可能性,我们都可以使用滑动窗口算法在O (n )时间内解决问题的一维形式。Ø(ñ5)Ø(ñ4)1个Ø(ñ)


我们不能为p和p的点数计算大小为的表。x < x ,p 。y < y ,p 。ž < ž?点数和体积的计算可以通过操作数const来完成,我们可以将动态编程与大小为k n 3的表一起使用,并且应该能够获得O (ñ3pp。X<X,p。ÿ<ÿ,p。ž<žķñ3算法。Ø(ķñ3)
— 卡夫

好。在这种情况下,,您就不能真正希望做得比n 5好。因为,有n 6个不同的不同的盒子,并且通过平均参数(在k的随机值上),有n 5个 盒子恰好包含k个点。除非您能以某种方式使用体积大的东西来以某种方式缩小搜索空间,但这似乎是乐观的……ķ=Θ(ñ)ñ5ñ6ñ5
— Sariel Har-Peled

顺便说一句,你的情况,你可以得到含箱点,那是不是包含最佳盒小ķ点Ø (((ñ / ķ )/ ε 2日志ñ )Ô (1 )(1个-ϵ)ķķ时间。对于 ķ = Θ (Ñ )这基本上polylog时间,..。Ø(((ñ/ķ)/ϵ2日志⁡ñ)Ø(1个))ķ=Θ(ñ)
— 沙利叶的Har-佩莱德

Answers:


11

对于个点,有O (n 3)个空框,请参见本文介绍http://www.cs.uwm.edu/faculty/ad/maximal.pdf。大约可以在这个时候计算这些盒子(参见参考资料中的参考资料)。ñØ(ñ3)

对于您的问题,请随机抽取一些点,并以可拾取性挑选每个点。这样的随机样本的大小(预期值)为n / k [(为了矛盾起见,假设为)。上面有O ((n / k )3)个空盒子,它们的侧面都是R的点。对于每个此类框,请使用正交范围搜索数据结构来计算其确切包含多少个点。重复此过程O (k 6 log n )1/kn/kO((n/k)3)RO(k6log⁡n)次。您尝试使用的框之一很有可能是所需的框。

总的来说,在此运行时间为。O((n/k)3∗k6∗polylogn)=O(n3k3logO(1)⁡n)

要了解为什么这样做有效,请考虑使用最佳包装盒。它的边界上有6个P点。随机样本选择这六个点且框内没有一个点的概率至少为。因此,如果您重复过程O((1/p)logn)次,则概率很高,其中一个随机样本会导致所需的框为空框。1k6(1−1/k)k−6≈1/k6=pO((1/p)log⁡n)

由于对于空盒的数量来说是紧密的(有关参考文献请参见上面的论文介绍),因此似乎不可能有明显更快的算法。Θ(n3)

[在我提供的参考文献中,他们提到[17]提供了一种算法,该算法枚举了时间的,这是上面需要的黑盒子。Ø(ñ3日志2⁡ñ)


谢谢-这真是太好了!我真的应该提到一个细节(对不起!),因为我的目的是,所以O (n 3 k 3)仅与O (n 6)差不多。不过,仍然有很多非常酷的想法可能对大型k版本有用...ķ=Θ(ñ)Ø(ñ3ķ3)Ø(ñ6)ķ
— GMB
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.