Ich habe viele Quader im 3D-Raum, jeder hat einen Startpunkt bei (x, y, z) und eine Größe von (Lx, Ly, Lz). Ich frage mich, wie man einen größten Würfel in diesem 3D-Raum findet, der in der Vereinigung der Quader enthalten ist. Gibt es dafür einen effizienten Algorithmus?
Zum Beispiel, wenn ich die folgenden Quader habe:
- ein Quader ab (0,0,0) mit der Größe (10,10,10),
- ein Quader bei (10,0,0) mit der Größe (12,13,15),
- ein Quader bei (0,10,0) mit der Größe (10,10,10),
- ein Quader bei (0,0,10) mit der Größe (10,10,10) und
- ein Quader bei (10,10,10) mit der Größe (9,9,9).
Dann ist der größte Würfel, der in der Vereinigung dieser Quader enthalten ist, ein Würfel, der bei (0,0,0) mit der Größe (19,19,19) beginnt.
Eine allgemeinere Version dieser Frage:
Suchen Sie bei einer gegebenen Sammlung von Boxen in den größten Hypercube, der in der Vereinigung der Boxen enthalten ist.R d
ds.algorithms
cg.comp-geom
pantoffski
quelle
quelle
Antworten:
Nun, hier ist eine erste dumme Antwort ... Nimm ein Flugzeug durch jede Seite der rechteckigen Kisten. Diese bilden ein Raster der Größe . Es ist nicht schwer, für jede solche Gitterzelle zu berechnen, ob sie sich innerhalb oder außerhalb der Union befindet. Wachsen Sie nun aus jedem Gitterpunkt einen Würfel (mit diesem Punkt als Punkt), um ihn so groß wie möglich zu machen. Wenn Sie dies auf die naivste Art und Weise tun, dauert dies O ( n 3 log n ) Zeit pro Scheitelpunkt, aber wahrscheinlich mit orthogonaler Entfernungssuchmagie sollte es möglich sein, dies in log O ( 1 ) n pro Scheitelpunkt zu tun . Also O ( n 3O ( n3) O ( n3Logn ) LogO ( 1 )n sollte möglich sein ...O ( n3LogO ( 1 )n )
Ein zweiter Versuch: Berechnen Sie die Vereinigung. In diesem speziellen Fall kann dies in Zeit (durch Kehren von Ebenen) erfolgen. Beobachten Sie nun, dass Sie nur das L ∞ voronoi-Diagramm der Grenze der Vereinigung berechnen müssen . Mit dem Ergebnis: http://vw.stanford.edu/~vladlen/publications/vor-polyhedral.pdf kann dies in O ( n 2 + ε ) für eine beliebige kleine Konstante ε > 0 erfolgen .O ( n logn ) L∞ O ( n2 + ε) ε > 0
Es wäre interessant, die hier festgelegte -Laufzeit zu durchbrechen, IMHO.O ( n2)
quelle
Die Antwort auf die allgemeine Frage zu scheint zu sein, dass es NP-schwer ist. Der Beweis ist ziemlich einfach. Wir nehmen einfach eine 3SAT-Instanz für d- Variablen und ordnen jeder Variablen eine Dimension zu. Stellen Sie sich den Raum als einen Raum möglicher Zuweisungen von Variablen vor: Wir betrachten nur Punkte zwischen -1 und +1 in jeder Dimension und ordnen Positionen < 0 einer Zuweisung von 0 für diese Variable und > 0 einer Zuweisung von 1 zu Klausel schließt einen Bereich aus, der durch 1 × 1 × 1 × n × n × n gegeben ist . . . × nRd d < 0 > 0 1 × 1 × 1 × n × n × n . . . × n hyperkuboid.
Wenn die Vereinigung dieser Quader den Raum füllt (und so enthält einen Würfel), dann gibt es keine befriedigende Zuordnung von Variablen für die 3SAT Instanz. Wenn jedoch der größte enthaltene Würfel 1 × 1 × ist . . . × 1 oder 0 (für keine Klauseln), die einzigen anderen Möglichkeiten, dann besteht eine zufriedenstellende Zuordnung von Variablen.2 × 2 × . . . × 2 1 × 1 × . . . × 1
quelle