#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.