İç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)3∗k6∗polylogn)=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(1−1/k)k−6≈1/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)