查找长方体联合中包含的最大立方体


18

我在3D空间中有很多长方体,每个长方体的起点都是(x,y,z),大小为(Lx,Ly,Lz)。我想知道如何在这个3D空间中找到长方体联合中包含的最大立方体。是否有一种有效的算法?

例如,如果我有以下长方体:

  • 以(0,0,0)开始且大小为(10,10,10)的长方体,
  • 长为(10,0,0)且大小为(12,13,15)的长方体,
  • 大小为(10,10,10)的(0,10,0)的长方体,
  • 大小为(10,10,10)的(0,0,10)的长方体,以及
  • 大小为(9,9,9)的(10,10,10)长方体。

然后,这些长方体并集中包含的最大立方体将是一个以(0,0,0)开始且大小为(19,19,19)的立方体。

这个问题的更一般的版本:

给定R d盒子的集合,找到盒子并 集内包含的最大超立方体。nRd


8
我认为里面隐藏着一个更好的问题:即,给定的盒子的并集,计算该并集内包含的最大超立方体。Rd
Suresh Venkat

1
这些长方体可以重叠吗?
彼得·布斯

@Suresh,感谢您澄清和概括问题:) @Peter,就我而言……不会重叠:)
pantoffski 2011年

2
您的感受方式听起来像是立方体的侧面与x,y和z轴对齐。是这种情况,还是立方体可以具有任意方向?显然,这大大提高了算法的效率。
Joe Fitzsimons

在我的情况下,每个长方体的面都仅与轴正交。
pantoffski 2011年

Answers:


15

O(n3)O(n3logn)logO(1)nO(n3logO(1)n)

O(nlogn)LO(n2+ε)ε>0

O(n2)


谢谢您,先生,到目前为止,我也认为L∞是最佳解决方案。由于我之前已经完成了2D情况下的L∞(通过本文中inf.usi.ch/faculty/papadopoulou/publications/ijcga01.pdf提供的方法实现)。仅带有盒子的3D盒子应该不会很难。
pantoffski'3

8

Rdd<0>01×1×1×n×n×n...×n 超立方体的。

2×2×...×21×1×...×1


我想您可以通过反向运行以上论点并证明任何长方体都构成一个可以在多项式时间内检查的约束,从而证明它在FNP中(至少在轴对齐的长方体的情况下)。
Joe Fitzsimons
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.