包含


11

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

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

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


我们不能为pp的点数计算大小为的表x < x p y < y p ž < ž?点数和体积的计算可以通过操作数const来完成,我们可以将动态编程与大小为k n 3的表一起使用,并且应该能够获得O ñ3ppX<Xpÿ<ÿ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(k6logn)次。您尝试使用的框之一很有可能是所需的框。

总的来说,在此运行时间为O((n/k)3k6polylogn)=O(n3k3logO(1)n)

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

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