Algoritma acak untuk 3SAT

8

Ada algoritma acak yang sangat sederhana yang, diberikan 3SAT, menghasilkan penugasan yang memenuhi setidaknya 7/8 dari klausa (dengan harapan): pilih penugasan acak. Penugasan acak memenuhi setiap klausa dengan probabilitas 7/8, dan dengan demikian linearitas harapan menunjukkan bahwa fraksi yang diharapkan dari klausa yang dipenuhi oleh penugasan acak adalah 7/8.

Bisakah ini dilakukan dengan cara yang deterministik? Jika demikian, mengapa kita tertarik dengan algoritma acak?

Yuval Filmus
sumber

Jawaban:

6

Algoritma penugasan acak dapat derandomized (dibuat deterministik) menggunakan metode ekspektasi bersyarat.

Biarkan instance 3SAT terdiri dari klausa C1,,Cm. Selama algoritma, kami akan memberikan nilai ke variabel. The skor klausaC didefinisikan sebagai berikut:

  • Jika C puas maka nilainya adalah 1.
  • Jika C tidak puas dan telah k literal yang belum ditetapkan maka nilainya adalah 12k.

Awalnya skor setiap klausa adalah 123=7/8, dan total skornya adalah (7/8)m. Kami sekarang memberikan nilai ke variabelx1,,xndalam urutan. Misalkan kita telah menetapkan nilai ke variabelx1,,xi1, dan skor total saat ini adalah S=S(C1)++S(Cm). MembiarkanS0,S1 skor total jika kita menetapkan nilai 0,1 (masing-masing) ke xi. Saya mengklaim ituS0(C)+S1(C)=2S(C) untuk setiap klausa C, dan sebagainya S0+S1=2S. Memang:

  • Jika C puas (hanya diberikan x1,,xi1) atau tidak mengandung xi kemudian S0(C)+S1(C)=2S(C).
  • Seandainya C mengandung k literal yang belum ditetapkan, termasuk xi. KemudianS(C)=12k, S0(C)=12(k1), dan S1(C)=1. Karena itu
    S0(C)+S1(C)=[122k]+1=2(12k)=2S(C).
  • Argumen serupa bekerja ketika C mengandung x¯i.

Sejak S0+S1=2S, antara S0S atau S1S(mungkin keduanya). Karena itu ada beberapa tugas untukS sedemikian rupa sehingga setelah penugasan, skor baru setidaknya S.

Skor awal adalah (7/8)mdan algoritma memastikan bahwa skor tidak pernah berkurang. Pada akhirnya, skor klausaC adalah 1 jika sudah puas dan 120=0jika tidak. Dengan demikian tugas akhir memuaskan setidaknya(7/8)m klausa.

Mengingat ada algoritma deterministik, mengapa kita tertarik pada yang acak? Ada beberapa alasan:

  1. Algoritma acak jauh lebih sederhana.
  2. Algoritma acak berpotensi lebih cepat.
  3. Algoritma acak dapat dikonversi menjadi deterministik menggunakan metode ekspektasi bersyarat; kita dapat menganggapnya sebagai resep untuk membangun algoritma deterministik.

Lebih umum, hal ini diduga bahwa setiap algoritma polytime acak untuk masalah keputusan dapat diderandomisasi (ini adalah P=BPPdugaan). Algoritma acak masih akan menarik karena semua alasan yang disebutkan di atas.

Yuval Filmus
sumber