Maaf telah menjawab pos lama.
Saya sudah memikirkannya dan saya pikir masalah dengan alfabet tetap adalah NP-complete juga.
Saya akan mengurangi 1-in-3 SAT positif untuk masalah kata ini
Kemarin saya mengalami masalah dengan ide untuk menyelesaikan masalah. Saya mengalami masalah dalam membuat setiap variabel berbeda hingga saya melihat kembali pertanyaannya dan saya menyadari bahwa Anda mengizinkan kotak dengan simbol yang ditanam. Ini menyederhanakan pengurangan banyak. Ide saya yang lain adalah memiliki kata-kata dengan panjang yang berbeda untuk setiap variabel yang berbeda.
PENGURANGAN
Sekarang saya akan menjelaskan gadget yang akan kita gunakan:
Gadget variabel
Kami memberi label pada setiap variabel dengan indeks numerik yang berbeda dan kami akan memiliki angka yang berbeda untuk setiap variabel. Kami memilih indeks terbesar dan kami mewakili angka dalam biner, kami akan memanggil rantai biner ini .n
Kemudian kita membuat dua kata vertikal berbeda untuk setiap variabel. Semua kata akan memiliki panjang (Hanya jika kami mengizinkan kata-kata rangkap dalam daftar kata), di mana | n | adalah panjang rantai biner n .3 + | n || n |n
Misalnya, biarkan indeks terbesar menjadi nomor . Ketika kita mengubah angka ini dalam biner, kita mendapatkan rantai 100 dalam biner, rantai ini memiliki panjang tiga. Jadi setiap kata variabel akan memiliki panjang 6 dalam contoh ini.41006
32n3
43
41
320013420014
1|n|
Kita harus menyalin kata-kata ini berkali-kali, kita akan membutuhkan satu salinan dari setiap kata untuk setiap kemunculan variabel dalam instance SAT. Ini akan membuat duplikat dalam daftar kata. Kita bisa menghilangkan duplikat dengan menambahkan rantai biner lain ke rantai biner yang secara unik mengidentifikasi variabel. Rantai baru ini akan secara unik mengidentifikasi setiap arus suatu variabel.
Untuk melakukan itu, kita cukup menetapkan setiap arus variabel rantai biner lain dan kami menempatkan rantai itu di akhir representasi biner variabel.
niini|ni||ni|
Ini akan menghilangkan duplikat di dalam kata-kata variabel.
x2
32010013 4201001432010103 4201010432010113 42010114
Gadget klausa
6
535354535453545353
435
mm|m||m|. Kami menambahkan setiap rantai biner ke kata-kata klausa yang termasuk dalam klausa.
Sekarang, mari kita lihat gambar gadget klausa di papan tulis:
(x2∨x3∨x4)(x1∨x2∨x3)∧(x2∨x3∨x4)
4
Jika kami tidak mengizinkan duplikat di dalam daftar kata, kami harus memodifikasi gambar.
5b5b5b10
b201010bb201110bb21001b
b
Lihat sebuah contoh:
Gadget konsistensi variabel
Ini adalah gadget yang memastikan bahwa pemain hanya dapat menetapkan nilai yang sama untuk semua kolom literal dari suatu variabel.
Kami akan memiliki gadget baru untuk setiap variabel
Kami akan membuat dua kata baru untuk setiap gadget.
2∗kkx263 k64 k
x2
63636464
Jika kita ingin menghindari kata-kata berulang, perhatikan bahwa setiap gadget konsistensi milik variabel yang berbeda. Jadi kita dapat menambahkan rantai biner yang mengidentifikasi setiap variabel ke dua kata yang kami buat untuk gadget ini.
Sekarang mari kita lihat contoh gambar gadget ini:
x2(x1∨x2∨x3)∧(x2∨x3∨x4)
3434. Kita dapat menempatkan kata sisa dari gagdet ini di baris lain
Jika kami tidak mengizinkan duplikat dalam daftar kata, kata-kata di dalam gambar contoh akan:
Untuk baris:
6b6b0106b6b010
Untuk kolom:
b201001bb201010b
b
Lihat sebuah contoh:
Gadget tempat sampah
Ini adalah gadget yang dibuat untuk menempatkan kata-kata klausa yang tidak digunakan. Untuk melakukan itu, kita hanya perlu menempatkan dua baris untuk setiap kata klausa di bagian kosong dari papan. Baris-baris ini tidak terhubung ke baris atau kolom lainnya.
Dengan ini kami menyelesaikan pengurangan, karena kami mengklaim kami hanya perlu 6 simbol untuk pengurangan.
Contoh
Jika penjelasan sebelumnya membingungkan, berikut adalah contoh gambar instance positif 1 in 3 SAT yang telah direduksi menjadi masalah kata ini:
Jika kita melarang kata-kata berulang:
Contoh yang telah dikurangi adalah:
(x1∨x2∨x3)∧(x2∨x3∨x4)
Saya pikir pengurangan berikut dari Directed Hamiltonian path works:
Sekarang, untuk mengisi tangga, hanya kata-kata simpul yang dapat diletakkan di dalam langkah-langkah, dan untuk menghubungkan dua simpul, kata tepi harus diletakkan di antara mereka, yang sesuai dengan tepi yang ada dalam grafik. Tepi yang tidak digunakan dapat diletakkan di bagian kedua papan. Arah kedua sepele.
Saya pikir ini bekerja (bukti kebenaran saya buat sketsa adalah melambaikan tangan yang terbaik, tapi tetap saja).
sumber