noktası içeren eksene hizalanmış en küçük kutu


11

Girdi: içinde nokta kümesi ve tamsayısı .R 3 k nnR3kn

Çıktı: Bu noktanın en az içeren en küçük hacim eksenine hizalanan sınırlama kutusu .nkn

Bu sorun için bilinen herhangi bir algoritma olup olmadığını merak ediyorum. Düşünebildiğim en iyi şey , gevşek bir şekilde zamanıydı: üç boyuttan ikisi için olası tüm üst ve alt sınırlar üzerinde kaba kuvvet; bu olasılıklarının her biri için , kayan pencere algoritması kullanarak O ( n ) zamanında sorunun karşılık gelen boyutlu versiyonunu çözebiliriz .O ( n 4 ) 1O(n5)O(n4)1O(n)


P ile p sayısı için büyüklüğünde bir tablo hesaplayamıyor muyuz ? x < x , s . y < y , s . z < z ? Nokta sayısını ve hacmini hesaplamak sabit işlem sayısı ile yapılabilir ve k n 3 boyutunda bir tablo ile dinamik programlamayı kullanabiliriz ve O ( k n 3 ) algoritması alabilmeliyiz . n3pp.x<x,p.y<y,p.z<zkn3O(kn3)
Kaveh

Tamam. Bu durumda, bu , gerçekten n 5'ten daha iyisini yapmayı umamazsınız . Çünkü, n 6 farklı ayrı kutu vardır ve argümanın ortalamasını alarak (rastgele bir k değeri üzerinde) tam olarak k noktaları içeren n 5 kutu vardır . Bir şekilde, arama alanını bir şekilde küçültmek için hacmi bir şekilde kullanamazsanız, ancak bu bir şekilde iyimser görünüyor ...k=Θ(n)n5n6n5
Sariel Har-Peled

BTW, sizin durumda, içeren bir kutu alabilirsiniz noktalarının ve bu içeren optimum kutusundan daha küçük k noktaları O ( ( ( n / k ) / ε 2 log n ) Ç ( 1 ) ) zaman. İçin k = Θ ( n ) bu temelde polylog zamanıdır ...(1ϵ)kkO(((n/k)/ϵ2logn)O(1))k=Θ(n)
Sarıel Har-Peled

Yanıtlar:


11

İçin noktaları vardır O ( n, 3 ) boş kutular, bu kağıt giriş bkz http://www.cs.uwm.edu/faculty/ad/maximal.pdf . Bu kutuları kabaca bu sefer hesaplayabiliriz (ref için bkz. Giriş).nO(n3)

Sorununuz için, her noktanın taşınabilirlikle seçildiği rastgele bir nokta örneği alın . Böyle rastgele bir örnek n / k boyutuna (beklenti içinde) sahiptir [ve çelişki uğruna varsayalım]. Var O ( ( N / k ) 3 ) noktaları olan boş kutular R yukarıda yana doğru. Bu tür her kutu için, tam olarak kaç nokta içerdiğini hesaplamak için veri yapısını araştıran dikey bir aralık kullanın. Bu işlemi tekrarlayın O ( k 6 log n )1/kn/kO((n/k)3)RO(k6logn)zamanlar. Yüksek olasılıkla, denediğiniz kutulardan biri istenen kutudur.

Genel olarak, bunun çalışma süresi .O((n/k)3k6polylogn)=O(n3k3logO(1)n)

Bunun neden işe yaradığını görmek için en uygun kutuyu düşünün. Sınırında 6 P puanı vardır. Rastgele örneğin bu altı noktayı toplama olasılığı ve kutunun içindeki noktaların hiçbiri en az . Bu nedenle,O((1/p)logn)sürecini tekrarlarsanız,yüksek olasılıkla rastgele örneklerden biri, boş bir kutu olarak istenen kutuyu indükler.1k6(11/k)k61/k6=pO((1/p)logn)

Yana boş kutuların sayısı (ilgili hakemlerimizle için yukarıdaki kağıt intro bakınız) sıkı, bir significnatly hızlı algoritma mümkün olduğunu olası görünmüyor.Θ(n3)

[Verdiğim referansta, [17] 'nin zamanında 3B nokta arasındaki tüm maksimal boş kutuları numaralandıran bir algoritma sağladığını belirtiyorlar .O(n3log2n)


Teşekkürler - bu harika! Gerçekten bahsetmem gereken bir ayrıntı (özür dilerim!) benim amacım için, O ( n 3 k 3 ) sadece O ( n 6 ) kadar iyidir . Yine de, burada büyük k sürümü için yararlı olabilecek çok güzel fikirler var ...k=Θ(n)O(n3k3)O(n6)k
GMB
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.