直方体の結合に含まれる最大の立方体を見つける


18

3D空間には多くの直方体があり、それぞれの開始点は(x、y、z)で、サイズは(Lx、Ly、Lz)です。立方体の結合に含まれるこの3D空間で最大の立方体をどのように見つけるのか疑問に思います。これに効率的なアルゴリズムはありますか?

たとえば、次の直方体がある場合:

  • サイズ(10,10,10)で(0,0,0)から始まる直方体、
  • サイズ(12,13,15)の(10,0,0)の直方体、
  • サイズ(10,10,10)の(0,10,0)の直方体、
  • サイズ(10,10,10)の(0,0,10)の直方体、および
  • サイズ(9,9,9)の(10,10,10)の直方体。

次に、これらの直方体の和集合に含まれる最大の立方体は、サイズ(19,19,19)の(0,0,0)で始まる立方体になります。

この質問のより一般的なバージョン:

R dのボックスのコレクションが与えられた場合、ボックス の結合内に含まれる最大のハイパーキューブを見つけます。nRd


8
私は内部に隠されたより良い質問があると思います:すなわち、のボックスのユニオンが与えられたら、ユニオン内に含まれる最大のハイパーキューブを計算します。Rd
Suresh Venkat

1
これらの直方体はオーバーラップできますか?
ピーターブース

@Suresh、質問を明確にして一般化してくれてありがとう:) @Peter、私の場合は...重複しません:)
pantoffski

2
これをいじくり回した方法では、立方体の側面がx、y、z軸に揃えられているように聞こえます。これは事実ですか、それともキューブは任意の方向にできますか?これは明らかに、アルゴリズムの効率に大きな違いをもたらします。
ジョーフィッツシモンズ

私の場合、各直方体の面は軸のみに直交しています。
pantoffski

回答:


15

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

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

O(n2)


ありがとう 以前に2DケースのL∞を実行したことがあるため(このペーパーinf.usi.ch/faculty/papadopoulou/publications/ijcga01.pdfで提供されているメソッドによって実装されています)。ボックスのみの3Dケースはそれほど難しくないはずです。
pantoffski

8

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

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


上記の引数を逆に実行し、任意の立方体が多項式時間でチェックできる制約を構成することを示すことにより、FNP(少なくとも軸が揃った立方体の場合)にあることを証明できると思います。
ジョーフィッツシモンズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.