Menerapkan algoritma GSAT - Bagaimana memilih literal mana yang akan dibalik?

20

Algoritma GSAT sebagian besar lurus ke depan: Anda mendapatkan rumus dalam bentuk normal konjungtif dan membalikkan literal klausa hingga Anda menemukan solusi yang memenuhi rumus atau Anda mencapai batas max_tries / max_flips dan tidak menemukan solusi.

Saya menerapkan algoritma berikut:

procedure GSAT(A,Max_Tries,Max_Flips)
  A: is a CNF formula
  for i:=1 to Max_Tries do
    S <- instantiation of variables
    for j:=1 to Max_Iter do
      if A satisfiable by S then
        return S
      endif
      V <- the variable whose flip yield the most important raise in the number of satisfied clauses;
      S <- S with V flipped;
    endfor
  endfor
  return the best instantiation found
end GSAT

Saya mengalami kesulitan menafsirkan baris berikut:

V <- the variable whose flip yield the most important raise in the number of satisfied clauses;

Bukankah jumlah klausa puas maksimum yang kita cari? Menurut saya, kami mencoba menggunakan solusi atau perkiraan untuk menemukan solusi.

Saya telah memikirkan beberapa cara untuk melakukan ini tetapi akan lebih baik untuk mendengar sudut pandang lain (Asumsinya adalah bahwa sekali variabel dibalik setelah dipilih.):

  • Hasilkan ruang keadaan dengan semua kemungkinan membalik dan cari ruang untuk literal yang menghasilkan perkiraan terbaik untuk keadaan tujuan.
  • Pilih secara acak variabel yang akan saya flip mulai dengan literal yang lebih umum.
  • Pilih literal acak.
Daniel
sumber

Jawaban:

12

Bukankah jumlah klausa puas maksimum yang kita cari?

Ya, kami sedang mencari tugas yang memenuhi jumlah maksimum klausa (itu semuanya, lebih disukai). Dan untuk itu kami bertanya pada diri sendiri, "Satu variabel mana yang akan membawa kita paling dekat dengan tujuan ini ketika membalikkannya?" dan kemudian balikkan.

Menurut saya, kami mencoba menggunakan solusi atau perkiraan untuk menemukan solusi.

Menggunakan solusinya adalah jika kita bertanya, "Kombinasi beberapa flip mana yang akan memberikan hasil terbaik?" atau hanya "Tugas mana yang akan menjadi yang terbaik?". Namun bukan itu yang kami lakukan, kami hanya melihat selangkah lebih maju. Menggunakan perkiraan solusi sepertinya deskripsi yang akurat. Namun tidak ada yang salah dengan itu. Begitulah cara strategi serakah bekerja.

Hasilkan ruang keadaan dengan semua kemungkinan membalik dan cari ruang untuk literal yang menghasilkan perkiraan terbaik untuk keadaan tujuan.

Baik.

sepp2k
sumber