JAWABAN BARU: algoritma sederhana berikut ini secara asimptotik optimal:
Regangkan masing-masing persegi panjang sewenang-wenang, semaksimal mungkin sehingga persegi panjang tetap berpasangan berpasangan.Ci
Jumlah lubang paling banyak adalah . Ini asimtotik optimal, karena ada konfigurasi di mana jumlah lubang setidaknya .k−2k−O(k−−√)
Buktinya ada di tulisan ini .
JAWABAN TUA:
Algoritme berikut, walaupun tidak optimal, ternyata cukup untuk menemukan partisi yang mempertahankan persegi panjang dengan bagian .N=O(n)
Algoritma ini bekerja dengan poligon bujursangkar , yang diinisialisasi ke persegi panjang .PC
Fase 1: Pilih persegi panjang yang berbatasan dengan batas barat (yaitu, tidak ada persegi panjang antara sisi barat dan batas barat ). Tempat dalam dan peregangan sampai menyentuh batas barat . Biarkan (untuk ) menjadi versi peregangan . Biarkan . Ulangi Fase 1 kali sampai semuaCiPCjCiPCiPPEii=1,…,nCiP=P∖Einnpersegi panjang asli ditempatkan dan diregangkan. Pada gambar di bawah ini, urutan penempatan persegi yang mungkin adalah :C1,C2,C4,C3
Sekarang, adalah poligon bujursangkar (mungkin terputus), seperti ini:P
Saya mengklaim bahwa jumlah simpul cekung di paling banyak . Ini karena, setiap kali persegi panjang yang ditarik dihapus dari , ada 3 kemungkinan:P2nP
- 2 simpul cekung baru ditambahkan (seperti saat menempatkan );C1,C4
- 3 simpul cekung baru ditambahkan dan 1 dihapus (seperti dengan );C3
- 4 simpul cekung baru ditambahkan dan 2 dihapus (seperti dengan ).C2
Fase 2: Partisi menjadi persegi panjang sumbu-paralel menggunakan algoritma yang ada (lihat Keil 2000, halaman 10-13 dan Eppstein 2009, halaman 3-5 untuk ulasan).P
Keil mengutip teorema yang mengatakan bahwa jumlah persegi panjang dalam partisi minimal dibatasi oleh 1 + jumlah simpul cekung. Oleh karena itu, dalam kasus kami angkanya paling banyak , dan jumlah total persegi panjang di partisi adalah .2n+1N≤3n+1
Algoritma ini tidak optimal. Misalnya, dalam contoh di atas memberikan sementara solusi optimal memiliki . Jadi ada dua pertanyaan yang tersisa:N=13N=5
A. Apakah algoritma ini benar?
B. Apakah ada algoritma waktu polinomial untuk menemukan optimal , atau setidaknya perkiraan yang lebih baik?N