Input: Satu set poin dalam , dan integer .R 3 k ≤ n
Output: Kotak pembatas sumbu-rata volume terkecil yang berisi setidaknya dari poin ini.n
Saya ingin tahu apakah ada algoritma yang dikenal untuk masalah ini. Yang terbaik yang bisa saya pikirkan adalah waktu , secara longgar sebagai berikut: kekuatan kasar atas semua batas atas dan bawah yang mungkin untuk dua dari tiga dimensi; untuk masing-masing kemungkinan , kita dapat menyelesaikan versi dimensi dari masalah dalam waktu menggunakan algoritma jendela geser.O ( n 4 ) 1 O ( n )
cg.comp-geom
GMB
sumber
sumber
Jawaban:
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).n O(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/k n/k O((n/k)3) R O(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=p O((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)
sumber