SMT çözücü bir SAT çözücü + karar prosedürüdür
SAT çözücüsü bir karar probleminin çözücüsüdür: SAT problemi bir karar problemidir. Ek olarak, bu karar sorunu "kendi kendini azaltabilir" dir:
SAT problemi kendiliğinden azaltılabilir, yani SAT örneğinin çözülebilir olması durumunda doğru cevap veren her algoritma tatmin edici bir ödev bulmak için kullanılabilir.
- ( wikipedia )
Bu, SAT çözücülerinin soruna karar vermenin yanı sıra tatmin edici bir ödev verebilecekleri anlamına gelir.
TL; DR SMT çözücüler teoride izin verilen türlere / kısıtlamalara bağlı olarak SAT probleminin genelleştirmesini çözer. Ayrıca, SAT kodlamaların izin verdiğinden daha yüksek düzeyde ilişkilerin kodlanmasına da izin verir.
Bir SAT çözücü genellikle sadece cümlecikleri / kısıtlamalar yoluyla ilgili birçok tek Boole değişkeni, ilgilenir CNF . Bir QF_BV (niceleyici içermeyen bitvektör) teorisi SMT çözücü temelde bir SAT çözücü + ilişkiler hakkında daha fazla bilgidir. Örneğin, bir QF_BV SMT çözücü SAT 1'e indirgenebilir . Peki neden bir QF_BF SMT çözücü kullanıyorsunuz? En büyük avantajı SAT'da, bir tamsayı farklı değişkenler tarafından temsil edilmesidir, ilk bakışta ilgisiz görünebilir. Bir SAT çözücüsü, gibi basit ilişkileri yeniden öğrenmek için çok zaman harcardı.( A = B ) ∧ ( B = C)⟹( A = C)
- Çözülmesi gereken eşdeğer SAT problemini bile çıkaran Beaver SMT çözücüye bakınız .
QF_BV SMT çözücü bir SAT çözücü üzerinde bu avantaja sahip olsa da, bunun bir karmaşıklık avantajı olduğunu düşünmüyorum: her ikisi de esasen eşdeğerdir ve en kötü durum sorunlarını çözmek için üssel olarak zaman alırlar. Ancak pratikte, bir QF_BV SMT çözücü bu ekstra bilgi nedeniyle çok daha hızlı olabilir. Şu anki QF_BV SMT çözücülerinin ve SAT çözücülerinin boğulacağı "zor" kabul edilen bir örnek için SMT çözücülerinin sınırlarına olan cevabımı görün .
Boolean Satisfiability'den daha zorlu problemleri bile çözmeye çalışan SMT çözücüleri de vardır (örneğin, gerçekler üzerindeki türlere ve kısıtlamalara izin vermek veya niceleyicilere izin vermek); Açıkçası bunlar teorik olarak en azından bir SAT çözücü kadar yavaşlar. Bu SMT çözücüler SAT probleminin genellemesini çözüyor; İkili değişken kullanmak yerine, her "teori", gerçekler veya nicelenmiş (herkes için) kısıtlamaları gibi farklı alanlar üzerindeki ilişkilere / kısıtlamalara izin verir.
Teorem prover
P= NP
Ancak, bu tür değişiklikler, devrimle karşılaştırıldığında önemli ölçüde soluk olabilir, NP-tam sorunlarını çözmek için etkili bir yöntem matematiğin kendisinde olur. Stephen Cook'a göre, [19]
... bir bilgisayarın, makul bir kanıtı olan herhangi bir teorinin resmi bir kanıtını bulmasına izin vererek matematiği dönüştürür, çünkü resmi kanıtlar polinom zamanında kolayca tanınabilir. Örnek problemler, tüm CMI ödül problemlerini içerebilir.
- ( wikipedia )
[19]: Aşçı, Stephen (Nisan 2000). P'ye Karşı NP Problemi. Kil Matematik Enstitüsü (PDF) .
P= NP
Ancak şimdilik, otomatikleştirilmiş teorem çoğunlukla sezgisel kullanım veya üstel zaman algoritmaları kullanmaktadır (fakat yine de faydalıdır).
Kısıt çözücü
Bunlar genellikle SAT / SMT çözücülerinin diğer dillere dönüştürülmesidir. Bir problemi çözmek için herhangi bir SAT / SMT çözücüsü kullandıysanız, çözücülerin deterministik olmayan yeteneğini gerçekten sevebilirsiniz. Yani, bilgisayara nasıl bir şey yapılacağını söylemek yerine, ne istediğinizi söylüyorsunuz , yani. Çıktının hangi özelliklere sahip olmasını istediğinizi ve bir SAT / SMT çözücü, belirleyici olmayan bir “doldurma” da, uygulama detaylarıyla uğraşmadan sizi bekliyor. Bu tür programlama paradigması çok çekicidir ve kısıt programlama olarak adlandırılır ve çalıştırılması için bir kısıtlayıcı çözücü kullanması gerekir (kullanmanıza izin verdiği türlere ve kısıtlamalara bağlı olarak arka uçta bir SAT / SMT çözücü kullanabilir) .
Ama ben Z3 diyen insanları teorem kanıtı olarak görüyorum. Bu yüzden bu terimleri nasıl yeneceğimi bilmiyorum.
AFAIK, Z3, bir SMT çözücü, çeşitli teorem kanıtlama / model kontrol dilleri ve daha fazlasını içeren birçok araç grubudur.
Ve hepsi için en genel terim nedir?
Memnuniyet probleminin genelleşmesinin Memnuniyet Modulo Teorileri olduğunu düşünüyorum ve bu nedenle "SMT çözücü" bunların hepsinden daha genel olurdu. Ancak, tüm gerçek SMT çözücü uygulamaları tüm teorileri çözmez, bu nedenle tüm SMT çözücülerinin eşit derecede genel olduğu anlamına gelmez.