SAT vs Constraint Satisfaction ne zaman kullanılır?


18

Zor bir sorunum varsa, standart bir yaklaşım bunu bir SAT örneği olarak ifade etmek ve üzerinde bir SAT çözücü çalıştırmayı denemektir. Başka bir standart yaklaşım, bunu bir kısıtlama memnuniyeti sorunu olarak ifade etmek ve bir CSP çözücüsü kullanmayı denemektir. İkisi, giriş formatlarında ne tür problemlerin doğal olarak ifade edilebileceği konusunda belirsiz bir şekilde benzer hissediyorlar.

Belirli bir problem için nasıl tanınacağına dair hangi kurallar veya kurallar var mı, hangi yaklaşımın iyi sonuçlar vermesi daha olasıdır? Herkesin hangi tür problemleri SAT çözücüler tarafından CSP çözücülerinden daha iyi ele alabileceği konusunda önerebileceği herhangi bir rehber var mıdır?

(Açıkçası, her iki yaklaşımla da çözülebilecek bazı kolay problemler vardır. Her iki yaklaşımla da yararlı bir şekilde çözülemeyen bazı zor problemler de vardır. Bunları bir kenara bırakalım. Rehberliğin en yararlı olduğu durum, SAT Çözücüler CSP çözücülerinden daha iyi performans gösterirken veya CSP çözücülerinin SAT çözücülerden daha iyi performans gösterdiği yerlerde SAT çözümleyicisinin CSP çözücüsünden daha uygun olacağını veya CSP çözücüsünün bir SAT çözücü - yani ilk önce denemek için hangi yaklaşım?)


1
SAT'a azaltmak istiyorsanız bir sorunun çok zor olamayacağını unutmayın.
Raphael

1
Ya da neden sadece SAT / CSP'ye odaklanın, Peki ya SMT?
Juho

Kısıt çözücü bir araç kullanmanın avantajı, çok zor olmayan durumlarda bazı optimizasyonları (örneğin simetri kırma teknikleri) deneyebilmeniz (ve bu optimizasyonların etkinliğini kontrol edebilmeniz) avantajına sahiptir. Ayrıca birçoğu standart bir CNF dosyasını ara çıkış olarak verebilir.
Vor

Harika bir nokta, @Juho! SMT de dikkate değer - bu konuda herhangi bir düşünceniz varsa üçünü (SAT, CSP, SMT) karşılaştırmaktan çekinmeyin.
DW

Aynı soruyu sordum, sorduğunuz için teşekkürler.
xxx ---

Yanıtlar:


8

Bence bu çok iyi bir soru. Ayrıca sorabilirsiniz: ne zaman bir SMT çözücü kullanılır? Sorunu modellemeden ve aslında CSP / SAT / SMT çözücüleri çalıştırmadan ve bulmadan önce belirlemenin zor olabileceğini hissediyorum. Farklı çözücülerin bile aynı durumlarda çok farklı performans gösterdiği iyi bilinmektedir! Sezgim ayrıca bir problemi modellemenin potansiyel olarak birçok yolunun varlığından kaynaklanıyor. Ayrıca, ne tür kısıtlamaların kullanıldığına bağlı olarak (söz konusu formalizm farklı türlere izin veriyorsa), arama ve çıkarım yapmanın birçok yolu vardır.

8×89+9+9=2732x32 Sudoku bulmaca, SAT çözücüler CSP çözücüler daha hızlı olurdu.

Farklı formalizmler, alana özgü bilgileri yakalayabilir ve bu bilgileri daha iyi ve farklı şekillerde kullanabilir. Bununla ilgili biraz daha fazla bilgi için cevaba ve yorumlara bakın .

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.