Bir SAT sorununun tüm çözümlerini listeleme


11

Bildiğim tüm #SAT çözücüler, örneğin RelSat, C2D, yalnızca tatmin edilebilir örnek sayısını döndürür. Ama bu örneklerin her birini bilmek istiyorum?

Böyle bir #SAT çözücü var mı veya bunu yapmak için kullanılabilir bir #SAT çözücü nasıl değiştirmeliyim?

Teşekkür ederim.


7
Buna genellikle "tüm çözümler SAT çözücüsü" denir, ancak kullanıma hazır görünmüyor. Referanslar MiniSAT ve diğer çözücülerdeki değişiklikler hakkında, genellikle bir çözümü bulunduğunda hariç tutmak için engelleme maddeleri ekleyerek konuşabilirim. Öte yandan, çoğu kısıt çözücü tüm çözümlerin standart olarak üretilmesini destekler.
András Salamon

bir yaklaşım, bir çok literatürün bulunduğu bir CNF → DNF dönüşümüdür
vzn

Yanıtlar:


13

Bir ALL-SAT veya tüm çözümler SAT çözücüsü arıyorsunuz. Bu, #SAT'tan farklı bir sorundur. Bunları saymak için tüm çözümleri numaralandırmanız gerekmez.

Sorununuzu çözen bir araç bilmiyorum, çünkü insanlar bu algoritmaları mevcut SAT çözücülerin üstüne ekliyor, ancak nadiren bu uzantıları serbest bırakıyor gibi görünüyor. ALL-SAT'ı uygulamak için bir CDCL çözücüsünü değiştirmenize yardımcı olacak iki makale aşağıdadır.

Bellek Verimli All-Solutions SAT çözücü ve Erişilebilirliğe Uygulaması , O. Grumberg, A. Schuster, A. Yadgar, FMCAD 2004

İşte arXiv'de yayınlanan yeni bir makale.

Tüm Modelleri Saymak İçin Modern SAT Çözücülerin Genişletilmesi , Said Jabbour, Lakhdar Sais, Yakoub Salhi, 2013

Uygulanması için bu yazarlarla iletişime geçmeyi deneyebilirsiniz.


İkinci kağıt için sadece ilk sürümü v1'i tıklamanız yeterlidir.
Tayfun Pay


1
@Kaveh, OP'nin bir ALLSAT çözücüsü veya #SAT çözücüsünü ALLSAT çözücüsüne dönüştürmenin bir yolunu istediğine inanıyorum. Bu, #SAT için alt sınırlardaki bir makaledir. OP'ye yardım ettiğinden emin değilim.
Vijay D

2

Bir VLSI konferansında All-SAT hakkında daha yeni (2014) bir kağıt buldum, bu yüzden kesinlikle pratik tarafa yöneliktir (OP'nin buradaki soruya göre, cstheory ile daha az da olsa görünmektedir).

  • Yinlei Yu, Pramod Subramanyan, Nestan Tsiskaridze, Sharad Malik, VLSI Design 2014 tarafından "En Az Engelleme Maddelerini Kullanan All-SAT". Doi: 10.1109 / VLSID.2014.22 .

IEEE aboneliği olmayanlar için Subramanyan'ın Princeton web sayfasında ücretsiz bir kopya var . (Belgelerinin kopyalarını saklamak / dağıtmak için bir dosya paylaşım hizmeti kullanıyor ve bu URL'lerin ne kadar kararlı olduğundan, bu dolambaçlı bağlantıdan emin değilim.)

Bu makalenin özü şöyledir:

Katkımız Non-Disjoint-Dec algoritması, çözücüde ima edilen değişkenlerin hiçbirini içermeyen son derece kısa engelleme maddeleri üretir. Tipik olarak, tatmin edici bir mintermdeki değişkenlerin çoğunluğunun ima edildiğini unutmayın. Kısa engelleme maddeleri, değerlendirmede gösterildiği gibi çözücü performansı için çok faydalıdır.

Uygulamaları MiniSat üzerine kuruludur. Uzantılarının kaynak kodu yine de herkese açık görünmüyor. Ne yazık ki, bu All-SAT alanında bir alışkanlık gibi görünüyor, bu yüzden deneysel sonuçlar içeren bu alandaki kağıtlar sadece yenmek için daha fazla veya daha az saman adam daha basit bir algoritma kurdu ve nadiren doğrudan karşılaştırılabilir (deneysel olarak) sonuçlar) All-SAT için yayınlanan diğer algoritmalarla Jabbour ve ark. Vijay D tarafından da belirtildiği gibi.

Diğer cevapta (ancak sadece András Salamon'un yorumunda) belirtildiğini görmediğim gibi, [oldukça popüler] engelleme cümlecikleri tekniği tanıtıldı:

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.