Doğrudan SAT-3-SAT azaltma


18

Burada amaç, en az sayıda cümle ve değişken kullanarak polinom zamanda keyfi bir SAT problemini 3-SAT'a indirmektir. Benim sorum meraktan kaynaklanıyor. Daha az resmi olarak şunu bilmek isterim: "SAT'dan 3-SAT'a 'en doğal' azalma nedir?"

Şimdi her zaman ders kitaplarında gördüğüm azalma şöyle olur:

  1. Öncelikle SAT örneğinizi alın ve SAT devresini azaltmak için Cook-Levin teoremini uygulayın.

  2. Ardından, kapıları yan tümcelerle değiştirerek SAT devresinin standart olarak 3-SAT'a düşürülmesi ile işi bitirirsiniz.

Bu çalışırken, sonuçta ortaya çıkan 3-SAT cümleleri, Cook-Levin teoreminin ilk uygulaması nedeniyle başladığınız SAT cümleleri gibi neredeyse hiçbir şeye bakmaz.

Herkes, ara devre adımını atlayıp doğrudan 3-SAT'a giderek azaltmayı nasıl daha doğrudan yapacağını görebilir mi? Hatta n-SAT özel durumunda doğrudan bir azalma ile mutlu olurdu.

(Hesaplama süresi ve çıktı boyutu arasında bazı değiş tokuşlar olduğunu tahmin ediyorum. Açıkça dejenere - P = NP olmadığı sürece neyse ki kabul edilemez olsa da - çözüm sadece SAT problemini çözmek, sonra önemsiz bir 3 yayar -SAT örneği ...)

DÜZENLEME: Mandalın cevabına dayanarak, n-SAT'a indirgemenin biraz önemsiz olduğu açıktır (ve gerçekten göndermeden önce biraz daha dikkatli olduğunu düşünmeliydim). Birisinin daha genel duruma cevabı bilmesi durumunda bu soruyu biraz açık bırakıyorum, aksi takdirde mandalın cevabını kabul edeceğim.


7
Cook-Levin'in (1) 'de kullanımını anlamıyorum. Boolean-formula-SAT, devrenin grafik yapısının ağaç olduğu özel bir devre-SAT durumu değil midir?
Luca Trevisan

Yanıtlar:


28

Her SAT yan tümcesinde 1, 2, 3 veya daha fazla değişken vardır. 3 değişken yan tümcesi herhangi bir sorun olmadan kopyalanabilir

1 ve 2, değişken maddeleri {a1}ve {a1,a2}genişletilebilir {a1,a1,a1}ve{a1,a2,a1} sırasıyla.

3'ten fazla değişkenlerle maddesi {a1,a2,a3,a4,a5}genişletilebilir {a1,a2,s1}{!s1,a3,s2}{!s2,a4,a5}ile s1ve s2orijinal madde değişken doğru olan değeri yeni değişkenlerin bağlıdır


6
Dikkatli. Kim SAT girişinin "hüküm" olması gerektiğini söylüyor?
Jeffε

6
Soru "n-SAT özel durumunda doğrudan bir azalma ile mutlu olurum" dedi
Ryan Williams

Evet, işe yarıyor! Sanırım son satırı eklemeden önce biraz daha dikkatli düşünmeliydim, ama daha genel bir soruya cevap alamazsam bunu kabul edeceğim.
Mikola

1
@Mikola Belki Tseitin veya Plaisted-Greenbaum dönüşümü size 3CNF kazandırır? (Soruyu tam olarak anladığımdan pek emin değilim :))
Mikolas

Neden mandal tarafından belirtilen k = 1 için uzantının herhangi bir kitapta (en azından şimdiye kadar karşılaştığım) görünmediğini merak ediyorum. Benim gerekçem, tanım gereği bir değişmezin 'a1 değil' olması ve {a1, a1, a1} gibi genişletilememesidir. Öte yandan, orijinal sat öğesinin negatif bir değişmez değer içerip içermediğini belirlemek için başka bir mantığa ihtiyaç duyduğundan {'a1' değil, 'a1' değil, 'a1]} yapamazsınız. Michael R. Garey ve David S. Johnson da dahil olmak üzere tüm yazarların buradaki yazısında 'Carlos Linares López' tarafından sunulan farklı bir uzantı kullanmasının nedeni budur.
KGhatak


19

K-SAT'dan 3-SAT'a bir azalmaya ihtiyacınız varsa, mandalın cevabı iyi çalışır.

Genel teklif formülünden CNF'ye (ve 3-SAT'a) doğrudan bir azalma istiyorsanız - en azından "SAT çözücüler perspektifinden" - Bence sorunuzun cevabı 'En doğal' azaltma nedir ... ? , olduğunu: 'Doğal' bir azalma yoktur !

Bölüm 2 - " çok iyi) kitabın " CNF Kodlamaları " nın sonuçlarından : Memnuniyet El Kitabı :

...
CNF'de belirli bir sorunu modellemenin genellikle birçok yolu vardır ve bunlar arasında seçim yapmak için çok az yönerge bilinir. Değişken olarak modellemek için genellikle sorun özelliklerinin bir seçimi vardır ve bazıları keşfedilmesi önemli ölçüde düşünülebilir. Tseitin kodlamaları kompakt ve mekaniktir, ancak pratikte her zaman en iyi modele yol açmaz ve bazı alt formüller daha iyi genişletilebilir. Bazı maddeler polarite hususları göz ardı edilebilir ve ima edilen simetri kırma veya engellenen maddeler eklenebilir. Farklı kodlamaların boyut veya çözelti yoğunluğu gibi farklı avantajları ve dezavantajları olabilir ve bir SAT çözücüsü için avantajı diğeri için dezavantaj olabilir. Kısacası CNF modellemesi bir sanattır ve sıklıkla sezgi ve deneylerle ilerlemeliyiz.
...

En bilinen algoritma Tseitin algoritmasıdır (G. Tseitin. Önerme analizinde türetmenin karmaşıklığı üzerine). Akıl Yürütme Otomasyonu: Hesaplamalı Mantıkta Klasik Makaleler, 2: 466-483, 1983. Springer-Verlag.)

CNF kodlamalarına iyi bir giriş yapmak için önerilen El Kitabı o Satisfiability kitabını okuyun . Ayrıca bazı yeni çalışmaları okuyabilir ve referanslara bakabilirsiniz; Örneğin:

  • P. Jackson ve D. Sheridan. Boole devreleri için yan tümce dönüşümleri. HH Hoos ve DG Mitchell'de editörler, Memnuniyet Testinin Teorisi ve Uygulamaları, 7. Uluslararası Konferans, SAT 2004 , LNCS'nin 3542 cilt, sayfa 183-198. Springer, 2004. (madde sayısını azaltmayı amaçlamaktadır)
  • P. Manolios, D. Vroon, CNF Dönüşümünde Verimli Devre. In Teorisi ve Gerçeklenebilirlik Test Uygulamaları -. 2007 (2007) SAT, s 4-9

15

Lütfen Ratchel'inkine benzer ama biraz farklı başka bir çözüm yayınlayayım. Bu doğrudan Steven Skiena'nın "Algoritma Tasarım El Kitabı" 2.Baskı'nın 9. bölümünden alınmıştır.

  • Cümlenin yalnızca bir değişmez değeri C = {z1} ise, iki yeni değişken v1 ve v2 ve dört yeni 3 litre deyimi oluşturun: {v1, v2, z1}, {! V1, v2, z1}, {v1,! v2, z1} ve {! v1,! v2, z1}. Bu cümlelerin dördünün de eşzamanlı olarak karşılanabilmesinin tek yolunun z1 = T olması, bu da orijinal C'nin tatmin edileceği anlamına geldiğini unutmayın.
  • Cümlenin iki değişmez değeri varsa, C = {z1, z2} ise, yeni bir değişken v1 ve iki yeni cümle oluşturun: {v1, z1, z2} ve {! V1, z1, z2}. Yine, bu maddelerin her ikisini de karşılamanın tek yolu z1 ve z2'den en az birinin doğru olması, dolayısıyla C'yi tatmin etmektir.
  • Cümlenin üç değişmez değeri varsa, C = {z1, z2, z3} ise, C'yi değişmeden 3-SAT örneğine kopyalayın
  • Cümlenin 3'den fazla değişmez değeri C = {z1, z2, ..., zn} ise, bir zincirde n-3 yeni değişken ve n-2 yeni cümle oluşturun; burada 2 <= j <= n-2 için , Cij = {v1, j-1, zj + 1,! Vi, j}, Ci1 = {z1, z2,! Vi, 1} ve Ci, n-2 = {vi, n-3, zn-1, zn}

1
@TayfunPay Bu çözümü neden daha doğru bulduğunuzu açıklayabilir misiniz? Değişkenleri çoğaltmak benim için daha doğal görünüyor ve gördüğüm 3SAT tanımlarını ihlal etmiyor. Bu çözümü daha iyi hale getiren bir teknik var mı?
crockeea
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.