Kepuasan umum (dengan beberapa pengecualian seperti Klausa Tanduk) tidak diyakini memiliki solusi algoritmik. Namun, algoritma berikut tampaknya menjadi solusi untuk kepuasan umum. Apa sebenarnya cacat dengan algoritma berikut?
- Membiarkan menjadi set kosong yang akan berisi semua variabel yang harus benar atau salah.
- Membiarkan menjadi seperangkat klausa.
- Loop melalui .
- Setiap kali variabel non-kondisional † ditemukan, hapus dari dan masukkan ke dalam .
- Jika ini meninggalkan implikasi AND kosong ‡ , hapus semua variabel dari implikasi kosong itu dan masukkan ke dalam .
- Jika ini meninggalkan implikasi OR kosong ‡ , buat instance baru dari algoritma, di mana setiap instance berurusan dengan satu variabel dalam implikasi (yaitu jika implikasinya adalah:, buat satu contoh di mana dimasukkan ke dalam , dimana dimasukkan ke dalam dan satu tempat dan dimasukkan ke dalam ).
- Tetapkan semua variabel dalam untuk nilai yang mereka harus.
- Masukkan kembali variabel dalam di dengan nilai yang diubah dan periksa apakah semua klausa puas.
- Jika kepuasan terpenuhi, maka kembali , kalau tidak kembalikan "Tidak Memuaskan".
† Variabel non kondisional didefinisikan sebagai variabel yang perlu benar atau salah, misalnya atau .
‡ Implikasi kosong didefinisikan sebagai implikasi di mana satu sisi kosong (mis) atau pihak lain harus benar (mis .
Untuk mendapatkan pemahaman yang lebih intuitif tentang algoritma, pertimbangkan serangkaian klausa berikut :
Algoritma akan melakukan hal berikut:
1) Sejak , , adalah variabel non-kondisional, algoritma akan memasukkannya ke dalam . .
2) Menghapus , dan akan meninggalkan klausa kosong: . Ini akan ditambahkan ke. .
3) Memasukkan kembali variabel ke dalam akan menghasilkan klausul pertama yang dilanggar: . Sejak itu salah, salah, artinya klausa (v) dilanggar. Algoritme akan mengembalikan "Tidak Memuaskan"
Saya sadar bahwa algoritme tampak membingungkan. Silakan meminta klarifikasi.
Dari komentar saya sekarang menyadari bahwa tidak ada algoritma kepuasan umum yang diketahui efisien . Saya masih tertarik dengan umpan balik tentang algoritme saya. Apakah itu bekerja? Bagaimana cara membandingkannya dengan algoritma umum?