Cuboids birliğinde bulunan en büyük küpü bulun


18

3B alanda çok fazla cuboid var, her birinin başlangıç ​​noktası (x, y, z) ve boyutu (Lx, Ly, Lz) var. Küplerin birleşmesinde bulunan bu 3B alanda en büyük küpün nasıl bulunacağını merak ediyorum. Bunun için etkili bir algoritma var mı?

Örneğin, aşağıdaki küpleri varsa:

  • (0,0,0) ile başlayan (10,10,10) boyutunda bir küboid,
  • (10,0,0) boyutunda (12,13,15) bir küboid,
  • (0,10,0) boyutunda (10,10,10) bir küboid,
  • (0,0,10) boyutunda (10,10,10) bir küboid ve
  • büyüklüğü (9,9,9) olan (10,10,10) 'da bir küboid.

Daha sonra, bu küplerin birleşmesinde bulunan en büyük küp, (0,0,0) ile başlayan (19,19,19) bir küp olacaktır.

Bu sorunun daha genel bir versiyonu:

Bir koleksiyonu verilmiş kutuları R d , büyük hiperküp kutularının birliği içinde bulunan bulabilirsiniz.nR,d


8
Kutulardan bir birlik verilmiş yani: içimde gizli daha iyi bir soru olduğunu düşünüyorum birliği içinde bulunan, en büyük Hypercube hesaplamak. R,d
Suresh Venkat

1
Bu küpler çakışabilir mi?
Peter Boothe

@Suresh, soruyu açıklığa kavuşturduğun ve genelleştirdiğin için teşekkürler :) @Peter, benim durumumda ...
Örtüşmeyecek

2
Bunu phesed olarak, küplerin kenarları x, y ve z eksenleri ile hizalanmış gibi geliyor. Durum bu mu yoksa küpler keyfi yönlere sahip olabilir mi? Bu açıkça algoritmanın verimliliği üzerinde önemli bir fark yaratır.
Joe Fitzsimons

Benim durumumda, her küboidin yüzü sadece eksenlere diktir.
pantoffski

Yanıtlar:


15

İşte ilk kez aptalca bir cevap deneyin ... Dikdörtgen kutuların her bir yüzüne bir uçak alın. Bu bir boyut ızgarası oluşturur. İster birlik içinde ister dışarıda olsun, bu tür her ızgara hücresi için hesaplamak zor değildir. Şimdi, her ızgara köşesinden, mümkün olduğunca büyük hale getirmeye çalışan bir küp (bu tepe noktasına sahip olarak) büyütün. En naif bir şekilde yaparak, bu sürer Ç ( n 3 günlük n ) köşe başına zaman, ama muhtemelen ortogonal aralık tarama büyü kullanarak, tek bunu yapmak mümkün olmalıdır log O ( 1 ) n vertex. Yani O ( n 3Ö(n3)Ö(n3günlükn)günlükÖ(1)n mümkün olmalıdır ...Ö(n3günlükÖ(1)n)

İkinci bir deneme: Birliği hesaplayın. Bu özel durumda, bu zamanında (süpürme düzlemleri ile) yapılabilir. Şimdi, sendikanın sınırının L voronoi diyagramını hesaplamanız gerektiğini gözlemleyin . Sonucu kullanarak: http://vw.stanford.edu/~vladlen/publications/vor-polyhedral.pdf , bu keyfi bir küçük sabit ε > 0 için O ( n 2 + ε ) zamanında yapılabilir .Ö(ngünlükn)LÖ(n2+ε)ε>0

Burada bağlı çalışma süresini kırmak ilginç olurdu, IMHO.Ö(n2)


Teşekkür ederim efendim, ben de L∞ şimdiye kadar bu sorun için en iyi çözüm olduğunu düşünüyorum. Daha önce 2D davası için L∞'u yaptığımdan beri (bu makalede sağlanan yöntemler ile uygulanmıştır inf.usi.ch/faculty/papadopoulou/publications/ijcga01.pdf ). Sadece kutuları olan 3D kasa çok zor olmamalı.
pantoffski

8

Hakkında genel sorunun cevabı o NP-zor olduğunu olacak gibi görünüyor. Kanıt oldukça basittir. Sadece d değişkenleri üzerinde 3SAT örneği alır ve her değişkeni bir boyutla ilişkilendiririz. Alanı, değişkenlerin olası atamalarının bir alanı olarak düşünün: Her bir boyutta yalnızca -1 ile +1 arasındaki noktaları ve ilişkilendirilen konumları <R,ddbu değişken için 0 atamasıyla ve > 0 1 atamasıyla ilişkilendiriyoruz. yan tümcesi, 1 × 1 × 1 × n × n × n ile verilen bir bölgeyi hariç tutar . . . × n<0>01x1x1xnxnxn...xn hypercuboid.

Bu küplerin birliği alanı doldurursa (ve böylece küp), sonra 3SAT örneğin değişkenlerin hiç tatmin tahsisi yoktur. Ancak içerilen en büyük küp 1 × 1 × ise . . . × 1 veya 0 (cümle olmadan), sadece diğer olasılıklar, daha sonra değişkenlerin tatmin edici bir ataması vardır.2x2x...x21x1x...x1


Yukarıdaki tartışmayı tersine çevirerek ve herhangi bir küboidin polinom zamanında kontrol edilebilen bir kısıtlama oluşturduğunu göstererek, FNP'de (en azından eksenlerle hizalanmış küboidlerde) olduğunu kanıtlayabileceğinizi düşünüyorum.
Joe Fitzsimons
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.