내가 아는 모든 #SAT 솔버 (예 : RelSat, C2D)는 만족할만한 인스턴스 수만 반환합니다. 그러나 각 인스턴스를 알고 싶습니다.
이러한 #SAT 솔버가 있거나 사용 가능한 #SAT 솔버를 수정하여 어떻게해야합니까?
감사합니다.
내가 아는 모든 #SAT 솔버 (예 : RelSat, C2D)는 만족할만한 인스턴스 수만 반환합니다. 그러나 각 인스턴스를 알고 싶습니다.
이러한 #SAT 솔버가 있거나 사용 가능한 #SAT 솔버를 수정하여 어떻게해야합니까?
감사합니다.
답변:
ALL-SAT 또는 모든 솔루션 SAT 솔버를 찾고 있습니다. 이것은 #SAT와 다른 문제입니다. 계산하기 위해 모든 솔루션을 열거 할 필요는 없습니다.
사람들이 기존 SAT 솔버 위에 이러한 알고리즘을 추가하지만 이러한 확장을 출시하는 경우는 거의 없기 때문에 문제를 해결하는 도구를 모르겠습니다. ALL-SAT를 구현하기 위해 CDCL 솔버를 수정하는 데 도움이되는 두 가지 논문은 다음과 같습니다.
메모리 효율적인 모든 솔루션 SAT 솔버 및 도달 가능성에 대한 적용 , O. Grumberg, A. Schuster, A. Yadgar, FMCAD 2004
다음은 arXiv에 게시 된 최근 기사입니다.
모든 모델을 열거하기위한 최신 SAT 솔버 확장 , Said Jabbour, Lakhdar Sais, Yakoub Salhi, 2013
구현을 위해이 저자들에게 연락을 시도 할 수 있습니다.
VLSI 회의에서 All-SAT에 대한 최신 (2014) 논문을 찾았으므로 실제 측면을 향한 것이 확실합니다 (일반적으로 cstheory.SE는 아니지만 OP의 질문과 일치하는 것으로 보입니다).
IEEE 가입이없는 사람들을 위해 Subramanyan의 Princeton 웹 페이지 에 무료 사본이 있습니다. (그는 파일 공유 서비스를 사용하여 논문의 사본을 저장 / 배포하며이 URL이 얼마나 안정적인지 잘 모르겠으므로이 로터리 링크입니다.)
이 논문의 요지는 다음과 같다.
우리의 기여, 비 연속 -Dec 알고리즘은 솔버에 묵시적 변수를 포함하지 않는 매우 짧은 블로킹 절을 생성합니다. 일반적으로 만족스러운 최소항에있는 대부분의 변수가 암시됩니다. 짧은 블로킹 절은 평가에서 입증 된 것처럼 솔버 성능에 매우 유용합니다.
그들의 구현은 MiniSat을 기반으로합니다. 확장을위한 소스 코드는 공개적으로 제공되지 않는 것 같습니다. 아아 이것은 All-SAT 분야의 습관 인 것처럼 보이므로 실험 결과가 포함 된이 분야의 논문은 약간의 밀짚 맨보다 간단한 알고리즘을 설정하여 직접 비교하기가 거의 불가능합니다 (실험 측면에서) All-SAT에 대해 게시 된 다른 알고리즘과 함께 제공됩니다. Jabbour 등의 논문. Vijay D가 언급 한 것도 이런 종류입니다.
다른 답변에서 언급되지 않았지만 (András Salamon의 의견에서만), [대부분 인기있는] 차단 절 techinique가 다음과 같이 소개되었습니다.