Untuk poin ada O ( n 3 ) kotak kosong, lihat pengantar makalah ini http://www.cs.uwm.edu/faculty/ad/maximal.pdf . Seseorang dapat menghitung kotak-kotak ini secara kasar kali ini (lihat intro untuk referensi).nO(n3)
Untuk masalah Anda, ambil sampel titik secara acak, di mana setiap titik diambil dengan tingkat kepekaan . Sampel acak semacam itu memiliki ukuran (dengan harapan) n / k [dan demi kontradiksi anggaplah demikian]. Ada O ( ( n / k ) 3 ) kotak kosong yang memiliki poin dari R di sisinya, di atas. Untuk setiap kotak seperti itu, gunakan rentang ortogonal yang mencari struktur data untuk menghitung berapa banyak poin yang dikandungnya. Ulangi proses ini O ( k 6 log n )1/kn/kO((n/k)3)RO(k6logn)waktu. Dengan probabilitas tinggi, salah satu kotak yang Anda coba adalah kotak yang diinginkan.
Secara keseluruhan, waktu menjalankan ini adalah .O((n/k)3∗k6∗polylogn)=O(n3k3logO(1)n)
Untuk melihat mengapa ini bekerja, pertimbangkan kotak yang optimal. Ini memiliki 6 poin P pada batasnya. Probabilitas bahwa sampel acak memilih enam poin ini, dan tidak ada satu pun poin di dalam kotak setidaknya . Jadi, jika Anda mengulangi prosesO((1/p)logn)kali, dengan probabilitas tinggi salah satu sampel acak akan menginduksi kotak yang diinginkan sebagai kotak kosong.1k6(1−1/k)k−6≈1/k6=pO((1/p)logn)
Karena ketat untuk jumlah kotak kosong (lihat intro kertas di atas untuk referensi yang relevan), tampaknya tidak mungkin bahwa algoritma yang lebih cepat secara signifikan dimungkinkan.Θ(n3)
[Dalam referensi yang saya berikan, mereka menyebutkan bahwa [17] menyediakan algoritma yang menyebutkan semua kotak kosong maksimal di antara titik dalam 3d dalam waktu , yang merupakan kotak hitam yang Anda butuhkan untuk yang di atas.]O(n3log2n)