SAT matematiklerine dönüştürme (matematik) sorunları


22

Yapmak istediğim, sahip olduğum bir matematik problemini bir boole tatmin edici problemine (SAT) çevirmek ve sonra bir SAT Çözücü kullanarak çözmektir. Birinin bir el kitabı, rehber veya sorunumu SAT örneğine dönüştürmeme yardımcı olacak herhangi bir şey biliyor mu olduğunu merak ediyorum.

Ayrıca, bunu üstel bir zamandan daha iyi bir zamanda çözmek istiyorum. Umarım SAT Çözücü bana yardım eder.


1
SAT, verimli yöntemlere sahip değil ... ancak bu slaytlara
Fayez Abdlrazaq Deab


Bir şeyi denemek istemeniz durumunda başka bir şey denemeden önce hızlı ve kirli bir çözüm: cryptlogver . Araç, kripto için odaklandığını söylüyor, ancak hile yapacak. Dahası, kullanacağınız dilin sözdizimi çok benzer, bu yüzden çok fazla bir sorun yaşamayacaksınız. Kurulum zor değil ama dörtlü büyük yani bir fincan kahve alın.
absinthe_minded

1
Ayrıca şu soruya bakın: cs.stackexchange.com/q/30790
András Salamon

Yanıtlar:


20

SAT El Kitabının 2. Bölümü (Steven Prestwich tarafından) ayrık karar sorunlarının bir dereceye kadar CNF'ye nasıl çevrileceğini kapsar. (Maalesef, çevrimiçi taslak bir sürüm olduğunu sanmıyorum - muhtemelen yerel kitaplığınıza danışmak en iyisidir.) Magnus Björk'in ilginç genel bakışı bölümünde yer alan diğer referanslardan bazıları Başarılı SAT Kodlama Teknikleri de faydalıdır.

Eğer problemleriniz devam ediyorsa veya özellikle eşitsizlik sistemlerine ilgi duyuyorsanız, o zaman diğer çözücüler daha faydalı olabilir. Kyle'ın işaret ettiği gibi, SMT çözücüler ( Z3 , Yices veya OpenSMT gibi ) faydalı olabilir, ancak geleneksel olarak SMT teorileri bilgisayar yazılımının doğrulanmasına odaklanma eğilimindedir, bu nedenle SMT çözücüler genellikle tam sayıların aralıklarını içeren ifadeler gibi şeyler için büyük destek görürler. , ancak enjekte etme kısıtlamaları üzerinde zayıf performans gösterebilir. Doğal olarak eşitsizlik sistemleri olarak ifade edilen problemler için CPLEX , yenendir (akademik kullanım için ücretsiz olarak kullanılabilirdi ve yine de olabilir). Bazı kombinasyonel karar problemleri için (bulma gibi)Bir kare içine dikdörtgen paketleri ), Minion gibi SAT çözücüler gibi kısıtlayıcı çözücüler ve kullanımı genellikle daha kolaydır.


13

Matematiksel problemleri SAT örneklerine bir öğrenme alıştırması olarak çevirmiyorsanız, zamanınızı tatmin edicilik modulo teorileri hakkında öğrenmeye daha verimli bir şekilde harcayacaksınız . SMT, denklemleri ve diğer kısıtlamaları Boolean SAT örneklerinden çok daha doğal olarak ifade etmenize izin verecektir. Bazı SMT çözücüler, NP'nin ötesine geçmenizi ve PSPACE sorunlarını ifade etmenizi sağlayan varoluşsal ve evrensel niceleyicileri destekler.

Daha etkileyici olmanın yanı sıra, SMT çözücüleri daha hızlıdır. P = NP daha hızlı değil, ancak iyi bir SMT çözücüsünün, çözücüyü arama alanı boyunca yönlendirmeye yardımcı olan teoriye özgü yapısal bilgileri atmadığı için daha verimli değil. Karp azaltma işleminin doğrudan SAT örneğine yapılması, SAT çözücüyü tüm bu yapıyı, genellikle katlanarak maliyetle yeniden öğrenmeye zorlar. Örneğin, eklemenin değişmeli olduğu gerçeği hem DPLL tabanlı hem de yerel arama tabanlı SAT çözücülerinde kayboluyor; Çözücü bunun sayılarla uğraştığının farkında değil! X + y + z = 10'un tüm permütasyonlarını denemekten kaçınmak için bir SAT çözücü, grafik otomorfizm tespiti gerektiren simetri kodlama gerektirir. Mevcut en iyi grafik otomorfizm tanıma algoritmaları, en kötü durumda, köşelerin sayısı için üssel zaman gerektirir,


2
Özel bir smt çözücü önerir misiniz?
Dchris

5

Üst düzey dilleri SMT veya CNF'ye dönüştüren iki araç.

CVC Sözdizimi CAS'a yakın.

CBMC Bir C programını CNF'ye dönüştürerek iddialara izin verir. İddialar her zaman doğrudur ya da yanlışsa bir karşı örnek girişi bulunur. CBMC döngüleri açar, bu nedenle bazı C programları katlanarak büyük CNF / SMT'ye sahiptir.


CBMC, keyfi bir C programını CNF'ye dönüştürmüyor gibi görünüyor; tamsayı taşmaları, arabellek taşmaları ve benzerleri için statik bir analiz yapan C programını temel alan bir CNF oluşturur.
vy32
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.