Mempartisi persegi panjang tanpa merusak bagian dalam persegi panjang


12

C adalah persegi panjang sumbu-paralel.

C1,,Cn adalah persegi-sumbu paralel-paralel berpasangan-interior-disjoint sedemikian sehingga , seperti ini:C1CnC

masukkan deskripsi gambar di sini

Sebuah partisi persegi panjang-melestarikan dari C adalah partisi C=E1EN , sehingga Nn , yang Ei adalah sumbu-paralel persegi panjang berpasangan-interior-menguraikan, dan untuk setiap i=1,,n : CiEi , yaitu, setiap kotak yang ada terkandung dalam kotak baru yang unik, seperti ini:

masukkan deskripsi gambar di sini

Apa yang dimaksud dengan algoritma untuk menemukan partisi pengawet persegi panjang dengan kecil ?N

Secara khusus, apakah ada algoritma untuk menemukan partisi yang mempertahankan persegi panjang dengan bagian ?N=O(n)

Jawaban:


4

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 .k2kO(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=PEinnpersegi panjang asli ditempatkan dan diregangkan. Pada gambar di bawah ini, urutan penempatan persegi yang mungkin adalah :C1,C2,C4,C3

masukkan deskripsi gambar di sini

Sekarang, adalah poligon bujursangkar (mungkin terputus), seperti ini:P

masukkan deskripsi gambar di sini

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+1N3n+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


Nah, pada fase 1, Anda menambahkan sel partisi, yang masing-masing berisi tepat satu persegi panjang awal dan tidak tumpang tindih pada yang lain. Pada fase 2, Anda mempartisi ruang yang tersisa, sehingga sel-sel yang dibuat pada fase 2 tidak memotong salah satu dari persegi panjang awal. Bukti kebenaran tampaknya cukup mudah, atau apakah saya melewatkan sesuatu?
Boson

@ Pada titik yang saya tidak yakin pada adalah bahwa jumlah simpul cekung paling banyak . Tampaknya "jelas" bahwa hanya ada 3 kemungkinan seperti yang saya tulis, tetapi saya mungkin telah melewatkan beberapa kemungkinan lainnya. 2n
Erel Segal-Halevi
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.