GSAT algoritmasını uygulama - Hangi değişmez sayı çevrilecek?


20

GSAT algoritması çoğunlukla basittir: Bir formülü konjonktif normal formda alırsınız ve formülü karşılayan bir çözüm bulana veya max_tries / max_flips sınırına ulaşana ve hiçbir çözüm bulana kadar cümlelerin değişmezlerini çevirirsiniz.

Aşağıdaki algoritmayı uyguluyorum:

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

Aşağıdaki satırı yorumlarken sorun yaşıyorum:

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

Aradığımız maksimum memnun cümle sayısı değil mi? Bana öyle geliyor ki çözümü bulmak için çözümü veya yaklaşımları kullanmaya çalışıyoruz.

Bunu yapmanın bazı yollarını düşündüm ama diğer bakış açılarını duymak iyi olurdu (Varsayım, bir kez seçildikten sonra değişken döndürüldüğünde.):

  • Mümkün olan tüm döndürmelerle bir durum alanı oluşturun ve bu alanı, hedef duruma en iyi yaklaşıma yol açan bir değişmez değeri arayın.
  • Rastgele, daha yaygın olan değişmez değerlerden başlayarak çevireceğim değişkeni seçin.
  • Rastgele bir harf seçin.

Yanıtlar:


12

Aradığımız maksimum memnun cümle sayısı değil mi?

Evet, maksimum cümle sayısını karşılayan bir ödev arıyoruz (hepsi bu, tercihen). Ve bu amaçla kendimize "Hangi tek değişken bizi döndürürken bu hedefe en yakın getirecek?" Diye soruyoruz. ve sonra çevir.

Bana öyle geliyor ki çözümü bulmak için çözümü veya yaklaşımları kullanmaya çalışıyoruz.

Çözümü kullanmak, "Birden fazla döndürmenin hangi kombinasyonu en iyi sonucu verir?" Diye sorduğumuzda olurdu. ya da basitçe "Hangi görev en iyi olurdu?". Ancak yaptığımız bu değil, sadece bir adım ileriye bakıyoruz. Çözümün yaklaşık olarak kullanılması doğru bir tanım gibi görünmektedir. Ancak bunda yanlış bir şey yok. Açgözlü stratejiler böyle çalışır.

Mümkün olan tüm döndürmelerle bir durum alanı oluşturun ve bu alanı, hedef duruma en iyi yaklaşıma yol açan bir değişmez değeri arayın.

Sağ.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.