Tiga pendekatan di sini, semua melibatkan pengurangan SAT ke dalam lingua franca geometris 2D: teka-teki logika nonogram. Sel-sel dalam teka-teki logika sesuai dengan variabel SAT, batasan untuk klausa.
Untuk penjelasan lengkap (dan silakan tinjau kode saya untuk bug!) Saya sudah memposting beberapa wawasan untuk pola dalam ruang solusi nonogram. Lihat https://codereview.stackexchange.com/questions/43770/nonogram-puzzle-solution-space. Menghitung> 4 miliar solusi teka-teki dan menyandikannya agar sesuai dengan tabel kebenaran menunjukkan pola fraktal - kesamaan diri dan khususnya afinitas diri. Afine-redundancy ini menunjukkan struktur dalam masalah, dapat dieksploitasi untuk mengurangi sumber daya komputasi yang diperlukan untuk menghasilkan solusi. Ini juga menunjukkan perlunya umpan balik kacau dalam setiap algoritma yang berhasil. Ada kekuatan penjelas dalam perilaku transisi fase di mana instans "mudah" adalah instans yang terletak di sepanjang struktur kasar, sementara instans "keras" memerlukan iterasi lebih lanjut menjadi detail halus, cukup tersembunyi dari heuristik normal. Jika Anda ingin memperbesar ke sudut gambar yang tak terbatas ini (semua <= 4x4 instance puzzle dikodekan) lihat http://re-curse.github.io/visualizing-intractability/nonograms_zoom/nonograms.html
Metode 1. Ekstrapolasi bayangan ruang solusi nonogram menggunakan peta kacau dan pembelajaran mesin (berpikir fungsi pas mirip dengan yang menghasilkan Set Mandelbrot).
Berikut ini adalah bukti visual induksi. Jika Anda dapat memindai keempat gambar ini dari kiri ke kanan dan berpikir Anda memiliki ide bagus untuk menghasilkan gambar ke-5 ... ke-6 yang hilang, dll., Maka saya baru saja memprogram Anda sebagai ramalan NP saya untuk masalah keputusan solusi nonogram adanya. Silakan melangkah maju untuk mengklaim hadiah Anda sebagai superkomputer paling kuat di dunia. Saya akan memberi Anda kejutan listrik setiap saat, sementara dunia berterima kasih atas kontribusi komputasi Anda.
Metode 2. Gunakan Fourier Transforms pada input gambar versi boolean. FFT menyediakan informasi global tentang frekuensi dan posisi dalam sebuah instance. Sementara bagian besarnya harus serupa antara pasangan input, informasi fase mereka benar-benar berbeda - berisi informasi terarah tentang proyeksi solusi sepanjang sumbu tertentu. Jika Anda cukup pintar, Anda mungkin merekonstruksi gambar fase dari solusi melalui beberapa superposisi khusus dari gambar fase input. Kemudian invers mengubah fase dan besarnya umum kembali ke domain waktu dari solusi.
Apa yang bisa dijelaskan metode ini? Ada banyak permutasi dari gambar boolean dengan padding fleksibel di antara run yang berdekatan. Ini memungkinkan pemetaan antara input -> solusi yang menjaga multiplisitas sambil tetap mempertahankan properti FFT dari bidirectional, pemetaan unik antara domain waktu <-> (frekuensi, fase). Ini juga berarti tidak ada yang namanya "tidak ada solusi." Apa yang akan dikatakannya adalah bahwa dalam kasus berkelanjutan, ada solusi skala abu-abu yang tidak Anda pertimbangkan ketika melihat gambar bilevel dari pemecahan teka-teki nonogram tradisional.
Kenapa kamu tidak melakukannya? Ini adalah cara yang mengerikan untuk benar-benar menghitung, karena FFT di dunia floating-point saat ini akan sangat tidak akurat dengan contoh besar. Presisi adalah masalah besar, dan merekonstruksi gambar dari besaran fase dan gambar fase biasanya menghasilkan solusi yang sangat mendekati, meskipun mungkin tidak secara visual untuk ambang mata manusia. Ini juga sangat sulit untuk menghasilkan bisnis superposisi ini, karena jenis fungsi yang sebenarnya melakukannya saat ini tidak diketahui. Apakah itu skema rata-rata yang sederhana? Mungkin tidak, dan tidak ada metode pencarian khusus untuk menemukannya kecuali intuisi.
Metode 3. Temukan aturan automata seluler (dari kemungkinan ~ 4 miliar tabel aturan untuk aturan 2-negara von Neumann) yang memecahkan versi simetris dari teka-teki nonogram. Anda menggunakan penyematan langsung masalah ke dalam sel, ditunjukkan di sini.
Ini mungkin metode yang paling elegan, dalam hal kesederhanaan dan efek yang baik untuk masa depan komputasi. Keberadaan aturan ini tidak terbukti, tetapi saya punya firasat itu ada. Inilah alasannya:
Nonogram membutuhkan banyak umpan balik kacau dalam algoritma yang harus dipecahkan dengan tepat. Ini dibuat oleh kode brute force yang tertaut pada Review Kode. CA hanya tentang bahasa yang paling mampu memprogram umpan balik kacau.
Ini terlihat benar, secara visual. Aturan tersebut akan berkembang melalui penyisipan, penyebarluasan informasi secara horizontal dan vertikal, mengganggu, kemudian distabilkan menjadi solusi yang menghemat jumlah sel yang ditetapkan. Rute propogasi ini mengikuti jalur (mundur) yang biasanya Anda pikirkan ketika memproyeksikan bayangan objek fisik ke konfigurasi asli. Nonogram berasal dari kasus khusus tomografi diskrit, jadi bayangkan duduk bersamaan dalam dua pemindai CT yang dipojokkan dengan kitty .. ini adalah bagaimana sinar-X akan mempropogasi untuk menghasilkan gambar medis. Tentu saja, ada masalah batas - tepi alam semesta CA tidak dapat terus menyebarkan informasi di luar batas, kecuali jika Anda mengizinkan alam semesta toroidal. Ini juga melemparkan puzzle sebagai masalah nilai batas periodik.
Ini menjelaskan beberapa solusi sebagai kondisi transien dalam efek osilasi terus menerus antara menukar output sebagai input, dan sebaliknya. Ini menjelaskan contoh yang tidak memiliki solusi sebagai konfigurasi asli yang tidak menghemat jumlah sel yang ditetapkan. Tergantung pada hasil yang sebenarnya menemukan aturan tersebut, bahkan mungkin mendekati contoh dipecahkan dengan solusi yang dekat di mana negara-negara sel yang dilestarikan.