İşte bir SAT örneği göz önüne alındığında, olduğunu bildiğiniz bir Benzersiz -SAT örneği oluşturmanın bir yolu . Tarafından verilen formülünü göz önünde bulundurunφ ψ ( x )kφψ ( x )
φ ( x ) ∧ sa ( x ) = y,
burada , bir atama eşleştiren bir hızlı arama fonksiyonu olan X bir k (bazı küçük bir değer için bitlik değeri k ), ve y , bir rastgele K bitlik değer. Eğer φ yaklaşık tatmin edici atamaya sahipse, (sezgisel olarak) tam olarak bir tatmin edici atamaya sahip olacağını varsayıyoruz (sabit olasılıkla). Bir SAT çözücü kullanarak durumun böyle olup olmadığını test edebiliriz (yani, tatmin edici olup olmadığını test edin ; eğer tatmin edici bir , tatmin edici olup olmadığını test edin ). Eğerhxkkykφ ψ ψ x 0 ψ ( x ) ∧ x ≠ x 0 k2kψψx0ψ ( x ) ∧ x ≠ x0kbilinmemektedir, ikili aramayı kullanarak veya sadece her bir aday değeri üzerinden yineleyerek bulabilirsiniz (burada , cinsinden boole değişkenlerinin sayısıdır)k = 1 , 2 , … , n nkk = 1 , 2 , … , nn ).x
Karma işlevini özgürce seçebilirsiniz. Muhtemelen mümkün olduğunca basit hale getirmek isteyeceksiniz. Son derece basit bir yapı, x'ten k bitlerinin rastgele bir alt kümesini seçmesidir . Biraz daha sofistike bir yapı sağlamaktır i inci bit h ( x ) iki rasgele seçilmiş bit XOR olmak x (her biri için bit konumlarının ayrı çift seçme i , bağımsız bir şekilde,). Tutulması h basit tutacak ψ nispeten basit.hkxbenh ( x )xbenhψ
Bu tür bir dönüşüm bazen bir formülün tatmin edici atamalarının sayısını tahmin etmek için bir şemanın parçası olarak kullanılır / önerilir ; Özel ihtiyaçlarınıza göre uyarladım.φ
İnternette birçok SAT örneği test yatağı bulabilirsiniz ve Benzersiz -SAT örnekleri koleksiyonu elde etmek için bu dönüşümü hepsine uygulayabilirsiniz .k
Başka bir olasılık , kriptografiden Benzersiz SAT örnekleri oluşturmak olacaktır . Örneğin, f : { 0 , 1 } n → { 0 , 1 } n'nin kriptografik tek yönlü bir permütasyon olduğunu varsayalım . Let X rastgele seçilmiş bir eleman { 0 , 1 } , n , ve izin y = f ( x ) . Sonra f ( x ) ile verilen φ ( x ) formülü =kf:{0,1}n→{0,1}nx{0,1}ny=f(x)φ(x) bir Benzersiz k -SAT örneğidir. Başka bir örnek olarak, iki büyük asal sayıyı p , q rastgele seçin ve n = p q olsun . Daha sonra x ⋅ y = n ∧ x > 1 ∧ y > 1 ∧ x ≤ y (bit dizeleri ve tamsayılar arasındaki bariz yazışma ile ) tarafından verilen φ ( x , y ) formülüBenzersiz k'dir.f( x ) = ykp , qn=pqφ(x,y)x⋅y=n∧x>1∧y>1∧x≤yk-SAT örneği. Ancak, bu yapılar çözücünüzü karşılaştırmak veya optimize etmek için yararlı bir yol gibi görünmemektedir. Hepsinin özel bir yapısı vardır ve bu yapının gerçek dünya sorunlarını temsil ettiğine inanmak için hiçbir neden yoktur. Özellikle, kriptografik sorunlardan alınan SAT örneklerinin, SAT çözücülerinin diğer gerçek dünyadaki uygulamalarından çizilen SAT örneklerinden çok daha sert, çok daha sert olduğu bilinmektedir, bu nedenle çözücünüzü karşılaştırmak için çok iyi bir temel değildir.
Genel olarak, bu cevapta bahsedilen tüm tekniklerin , belirli bir yapıya sahip Benzersiz -SAT örnekleri üretme dezavantajı vardır , bu nedenle aradığınız şey olmayabilir - veya en azından güvenmek istemeyebilirsiniz sadece bu şekilde üretilen formüller üzerine. Daha iyi bir yaklaşım, Unique k -SAT (kim çözücünüzü ve hangi amaçla kullanacağını düşünüyorsunuz) uygulamalarını tanımlamak ve daha sonra bu uygulama alanlarından bazı gerçekçi örnekler elde etmeye çalışmak olacaktır.kk
İlgili bir konu için Ayrıca bkz. İlginç birleştirici optimizasyon sorunları oluşturma