#SAT 솔버 다운로드


21

누구나 #SAT 솔버의 실제 구현을 다운로드 할 수있는 하나 이상의 웹 사이트를 가리킬 수 있습니까? 나는 근사치가 아닌 정확한 솔루션 수를 반환하는 사람들에 관심이 있습니다.


2
월터 안녕하세요, 귀하의 질문은이 사이트에 대한 "주제"에 대한 공식적인 경계에 가깝습니다. 그러나이 질문을 할 다른 곳이없고 우리가 대답 할 수 있다면, 그렇게 나쁘지는 않을 것입니다 ... (사이트가 아직 개발 중이므로 다른 사이트보다 더 개방적이라고 생각합니다.) 안심하십시오. 이 의견의 요점은 "실지"거나 "경고"하는 것이 아니라 친근한 통지 일뿐입니다.
Ryan Williams

라이언, 고맙습니다 이 질문이 국경에 가까워지면 죄송합니다. 웹에서 검색했는데 아무것도 찾지 못했습니다. 일부 SAT 솔버 만 있지만 #SAT 솔버는 없습니다. 그래서 제가 여기에 물었습니다. 물론 SAT 솔버를 엔진으로 사용하여 솔루션을 계산하는 자체 코드를 작성할 수는 있지만 이미 만들고 사용할 준비가 된 것을 찾고있었습니다.
Giorgio Camerani

12
동의하지 않습니다. 나는 그런 질문들이 범위 안에 있다고 생각합니다!
Suresh Venkat

범위에 동의합니다. fyi / imho는 SAT 솔버에서 #SAT 솔버를 빌드하기에 너무 실용적이지 않습니다. 소스 코드가없고 아주 작은 지수를 제외하고는 아주 작은 지수를 제외하고는 그렇게 실용적이지 않습니다. 일반적으로 SAT가 아닌 #SAT에 고유 한 특수 기술이 필요합니다.
vzn

답변:



16

CNF 공식의 만족스러운 할당 수를 계산하기 위해 #SAT 솔버 "sharpSAT"( website , github )를 사용해 볼 수도 있습니다 .


11

한 가지 옵션은 JavaBDD 와 같은 BDD 라이브러리를 사용하는 입니다. 이러한 모든 라이브러리에는 솔루션을 빠르게 계산하는 함수가 있거나 적어도 그러한 함수를 쉽게 작성할 수 있습니다. 그러나 단점은 BDD 구성이 많은 경우에 느리고 메모리가 많이 필요할 수 있다는 것입니다.

CNF로 ​​입력 한 경우 BDD의 구성 속도를 높이는 간단한 휴리스틱은 다음과 같습니다. 먼저 각 절에 대해 작은 BDD를 작성하고 루트가 가장 작은 BDD 인 우선 순위 큐에 넣으십시오. 둘째, BDD 두 개를 팝하고 그 사이에 AND를 계산 한 다음 결과를 우선 순위 큐로 푸시하십시오. 아이디어는 다음과 같습니다. 크기 n의 BDD 사이에서 AND를 계산하는 데 이론적으로 O ( m n ) 가 걸리지 만 실제로는 ~ m + n 이 걸리므로 런타임을 최소화하는 것은 허프만 코드를 찾는 것과 같습니다.영형()+


7

관련 주제 : 최상의 SAT 솔버 .


1
감사합니다 Sadeq. 지적하신 주제는 이론적 인 주제 인 것 같습니다. 상한을 낮추는 몇 가지 논문이 나와 있습니다. 매우 흥미롭지 만 바로 사용할 수있는 구현을 찾고있었습니다.
Giorgio Camerani

2
당신은 가장 환영합니다. 거기에 인용 된 링크들 중에서, 실제로 실용적인 것은 satcompetition.org였습니다 . 나는 당신이 거기에서 아주 좋은 구현을 찾을 수 있다고 생각합니다.
MS Dousti




2

웹 사이트 BeyondNP 에는 #SAT (및 CNF 공식의 기타 관련 어려운 문제)를 해결하기위한 기존 도구의 훌륭한 인벤토리가 포함되어 있습니다. 근사한 모델 카운팅지식 컴파일 (CNF를 다항식 시간 모델 카운팅을 지원하는 간결한 데이터 구조로 변환하는 작업)을 위한 도구 목록을 찾을 수도 있습니다 .

또한 모델 카운터 및 다양한 벤치 마크 의 성능을 향상시키는 데 유용한 CNF 공식 전처리 도구 목록을 찾을 수 있습니다 .



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.