Saya akan mencoba menunjukkan masalah ini NP-hard, dengan pengurangan dari .Planar-3-SAT
Pengurangan dariPlanar-3-SAT
Beberapa Gadget dasar
Gadget adalah konfigurasi internal geometri yang memungkinkan kita membuat gerbang untuk digunakan dalam suatu rangkaian, yang akan kita kurangi .Planar-3-SAT
4X3-gadget
Gadget ini memiliki dua status minimal-kuadrat-partisi yang valid :
Kiri A 4x3-gadget . Tengah dan kanan: Dua kemungkinan status partisi-kuadrat minimum .
5X4-gadget
Gadget ini, persis seperti gadget 4X3 , hanya dengan dimensi lebih besar.
Meninggalkan A 5X4-gadget . Tengah dan kanan: Dua kemungkinan status partisi-kuadrat minimum .
gadget titik akhir
Sebuah titik akhir-gadget adalah sebuah 5x4-gadget . Ini sering digunakan sebagai titik akhir / pin gerbang . Salah satu dari dua status titik akhir dapat dinilai sebagai benar, dan yang lainnya salah. Endpoint tanda kedua ujung, satu sebagai dan yang lain sebagai . Akhir yang ditutupi oleh kotak besar adalah nilai titik akhir.FTF
Kiri: Bingkai rangka akhir-gadget . Pusat: Titik akhir bernilai sejati. Kanan: Titik akhir bernilai salah.
gadget i-wire
Sebuah gadget i-kawat adalah singkatan kawat implikasi .
Aturan:
- Sebuah gadget i-kawat terdiri dari persegi panjang aneh-panjang panjang lebih dari dan lebar .222
- Sebuah gadget i-kawat dapat memiliki minimal persegi partisi-negara , mendorong dari satu sisi, yang lain, atau tidak; sebuah i-kawat di negara bagian ketiga ini akan disebut secara lokal unconstrainted .3
Contoh:
Gambar 7: Sebuah i-kawat gadget panjang , dan lebar .272
Inilah cara penggunaannya:
Gambar 8,9 , Kiri: bingkai gambar i-wire melintasi dua titik akhir . Kanan: Serikat.
Sekarang, jika satu titik akhir berada dalam kondisi yang tepat, itu memaksa titik akhir lainnya ke posisi terdorong. Contoh:
Kiri: Diagram partisi kotak; saklar kiri turun, "mendorong" semua kotak ke bawah i-wire dan akhirnya, menekan saklar lainnya ( titik akhir ). Kanan: Diagram partisi kotak; titik akhir kiri penuh, "mendorong" semua kotak ke bawah i-wire , dan memaksa titik akhir di kiri untuk "naik".
Ini pada dasarnya adalah implikasi logis. Pertimbangkan "down" untuk menjadi kenyataan, maka kita memiliki . Kita juga dapat melakukan dengan hanya membalik titik akhir di sebelah kanan.AA⟹¬BA⟹B
Namun, ini meninggalkan kasus yang tidak dibatasi:
Jika kita menggabungkan dua kabel-i , kita bisa mendapatkan implikasi dua arah, pada dasarnya persamaan (dalam) boolean:
Jadi, dua kabel i dapat membawa hubungan kesetaraan penuh, seperti sirkuit - pada kenyataannya, itu adalah sirkuit. Kami akan menggunakan pasangan ini untuk membangun kawat yang dapat digunakan .
Setiap gadget i-wire berkontribusi kotak-partisi ke partisi-persegi- minimum , simpan untuk sudut-berbagi dengan gadget lain.l−12+2
i-wires dapat diorientasikan sesuai kebutuhan.
kawat
Sebuah kawat terdiri dari sepasang i-wires yang terhubung ke gerbang yang sama di setiap titik akhir.
- The i-kabel yang berwarna merah dan hijau.
- Pasangan harus dipisahkan oleh spasi (konvensi).3
- Setiap pin gerbang akan memiliki kontak hijau dan merah; sebuah kawat harus terhubung dengan benar.
- Aturan invarian: satu i-wire didorong ke arah yang berlawanan dari i-wire lainnya , masing-masing gerbang mengasumsikan ini, dan memastikan hal ini (kecuali dinyatakan sebaliknya).
- Karena setiap kawat berisi implikasi dua arah, ia membawa nilai-nilai dari gerbang ke gerbang seperti kabel di sirkuit.
- Setiap kabel harus terhubung ke gerbang di kedua ujungnya. . Gagal ini dapat merusak asumsi beberapa gerbang yang saya jelaskan, dan aturan invarian di atas; Namun, gerbang yang memiliki titik akhir melintasi timah aman - Anda dapat menghubungkan kabel liar ke titik akhir ini tanpa khawatir akan merusak gerbang.
- kabel harus panjangnya aneh, termasuk kabel ke sirkuit apa pun yang dihubungkannya; namun saya akan menjelaskan gerbang ganjil di bawah yang memungkinkan kawat genap menjadi ganjil.
Gambar :
Atas: Sebuah kawat .
Kiri dan kanan: Dua kemungkinan minimal persegi partisi-negara dari kawat . Perhatikan bahwa jika kawat hanya sepanjang ini, ia tidak akan bisa bergeser ke kanan atau kiri, dan harus memecah satu kotak menjadi potongan-potongan yang lebih kecil.
kabel dapat diorientasikan sesuai kebutuhan.
bend-gate : Membungkuk kawat
Kiri: Tampilan kawat-bingkai. Kanan: Tampilan gabungan.
Perhatikan penggunaan gadget 4X3 . Ini digunakan untuk memperbaiki ujung merah ke panjang aneh.
Berikut ini adalah dua kemungkinan kondisi lengkung minimal persegi :
Kiri dan kanan: Dua kemungkinan status partisi lentur persegi-persegi-persegi-minimum .
Gerbang dapat berorientasi sesuai kebutuhan. Jelas, gerbang ini dapat dicerminkan untuk bekerja ke arah lain.
Miringkan kawat
Mudah untuk memindahkan kawat. Ilustrasi wireframe:
gerbang bernama-nilai
Sebuah gerbang bernama-nilai pada dasarnya adalah titik akhir sebagai gerbang dengan satu kontak kawat:
odd-skip-gate : Aneh melewatkan kawat
Terkadang tidak nyaman untuk hanya memiliki kabel panjang ganjil. Sebagai contoh:
Seperti yang Anda lihat, sedikit ekstensi itu sedikit mengganggu. Berikut adalah solusi yang sesuai, menggunakan gerbang 4X3 :
Jadi, mengubah ini menjadi gerbang, kita mendapatkan odd-skip-gate (dalam rangka gambar):
Gerbang dapat berorientasi sesuai kebutuhan.
twist-gate : Memutar kawat
Kadang-kadang Anda mendapatkan kabel-i merah dan hitam di sisi yang salah untuk digunakan dengan gerbang . Dalam hal ini, disediakan twist-gate , untuk memutar kabel-i merah dan hitam ke sisi yang berlawanan.
Ilustrasi wireframe:
Yakinkan diri Anda bahwa itu berfungsi:
Mulai dari , ikuti panah-tekan, semuanya harus dipaksa dan konsisten.A
Gerbang dapat berorientasi sesuai kebutuhan.
split-gate : Memisahkan kawat
Memisahkan kawat, bingkai foto:
Yakinkan diri Anda bahwa itu bekerja:
Gambar: Mulai dari , ikuti panah-tekan. Semuanya harus dipaksakan dan konsisten.A
Gambar: Mulai dari , ikuti panah-tekan. Semuanya harus dipaksakan dan konsisten.A
Catatan: Setiap kabel yang masuk dan keluar dari splitter benar-benar harus terhubung ke titik akhir di suatu tempat, untuk mempertahankan invarian. Atau, Anda dapat menambahkan titik akhir ke masing-masing pasangan lead splitter.
Gerbang dapat berorientasi sesuai kebutuhan.
bukan gerbang
Gerbang tidak mengambil kawat dan menghasilkan kawat yang memiliki implikasi sebaliknya. Ini pada dasarnya adalah twist-gate , kecuali bahwa itu melabel ulang warna kabel. The tidak-gerbang terlihat seperti ini:
Dan pandangan dari dua kemungkinan kondisi:
Gerbang dapat berorientasi sesuai kebutuhan.
gerbang klausa
Untuk gerbang klausa , pertama-tama kami perkenalkan gadget klausa :
Kiri ke kanan: 1 klausa-gadget . 2-4: yang berbeda minimal persegi partisi-negara . 3
Seperti inilah bentuk gerbang:
Kami dapat menunjukkan berbagai kondisi gerbang ini (penjelasan di bawah semua ilustrasi):3
Penjelasan:
- Mulai dari gadget-klausa dan ikuti panah.
- Non-panah-garis berarti bahwa itu adalah bagian dari suatu rangkaian, tetapi tidak dipaksa ke keadaan oleh gerbang.
- Keadaan gadget-klausa memaksa salah satu titik akhir untuk dinilai benar .
Seperti yang Anda lihat, setidaknya salah satu input harus dinilai benar . Inilah yang dibutuhkan oleh klausa .3-CNF
Gerbang dapat berorientasi sesuai kebutuhan.
Pengurangan
Biarkan menjadi rumus , di manaPlanar- 3 -SATΦ(x)Planar-3-SAT
Φ(x)=∧niCi,C={(xj∨xk∨xl)}
Bantuan visual (sumber asli: Terrain Guarding is NP-Hard (PDF) , direproduksi dalam tikz):
Kemudian:
- Untuk setiap variabel , tempatkan dua gerbang variabel bernama di sebelah satu sama lain, beri nama salah satunya dan yang lain .x i ¬ x ixi∈xxi¬xi
- Hubungkan gerbang satu sama lain dengan tidak-gerbang , sehingga mereka secara logis meniadakan nilai masing-masing.
- Tempatkan variabel 'gerbang' poligon di lokasi mereka di planar-embedding.
- Untuk setiap klausa, letakkan gerbang klausa di lokasi klausa dalam penyisipan planar.
- Menggunakan gerbang yang dijelaskan di atas, hubungkan semua variabel ke klausa mereka.
- Jalankan algoritma-minimum-kuadrat-partisi pada hasil yang dihasilkan dari semua poligon gerbang (seluruh rangkaian).
- Jika algoritma mengembalikan jumlah dari semua ukuran minimum-kuadrat-partisi- gerbang (mengurangi untuk sudut-berbagi) maka itu memuaskan. Jika tidak memuaskan, itu akan memaksa gadget terbatas untuk memecah menjadi kotak yang lebih kecil, sehingga meningkatkan jumlah kotak yang diperlukan untuk mempartisi rangkaian.
Mengapa ini berhasil?
- Setiap gadget memiliki ukuran keadaan partisi-kuadrat minimal ; yaitu, partisi minimum persegi dari gadget itu adalah ukuran tertentu.
- Beberapa gadget memiliki beberapa status dengan ukuran ini; masing-masing negara ini adalah partisi minimum-kuadrat yang valid .
- Ketika gadget digabungkan hanya di sudut-sudutnya, jumlah kondisi partisi minimum kuadrat gadget adalah * masih status partisi-minimum-kuadrat-persegi penyatuannya; Anda dapat melihat ini secara intuitif: bergabung di sudut tidak memberikan ruang yang cukup bagi kotak untuk berkembang / terhubung dengan kotak dari gadget lain.
- Meskipun menggabungkan gadget di sudut tidak mengurangi ukuran total partisi-kuadrat minimum , hal itu terkait dan membatasi gadget satu sama lain.
- Dengan gerbang yang ditunjukkan di atas, Anda dapat membatasi keadaan, sehingga jika rumus logis tidak memuaskan, maka satu atau lebih gadet harus masuk ke kotak yang lebih kecil, dan menambah ukuran partisi minimum kuadrat .
sumber grafik
Anda juga dapat melihat gambar yang lebih besar dengan menghapus sufiks "s", "m", "l", url imgur. Misalnya, Anda dapat melihat gambar yang lebih besar dari ini: http://i.stack.imgur.com/6CKlGs.jpg dengan membuka
http://i.stack.imgur.com/6CKlG.jpg . Perhatikan "s" yang hilang sebelum .jpg
.