SAT 솔버 용지 시작


24

첫 SAT 솔버를 만들고 싶습니다. 저는 SAT 경쟁과 SAT 회의를 알고 있으며이 주제에 관한 논문이 너무 많습니다. 나는 초보자, 압도적 인 초보자입니다. 어디서부터 시작해야합니까? 결국 저는 최첨단을 추진하고 싶습니다. 시작하는 방법에 대한 전문가의 조언이 필요하므로 비 필수 항목에 너무 많은 시간을 낭비하지 않습니다. 많은 감사합니다.


6
DPLL 알고리즘을 이미 구현 했습니까? 구현이 매우 빠르게 실행되도록 미세 조정하고 개선 했습니까?
Jukka Suomela

5
Satisfiability의 핸드북 - amazon.co.uk/...은 (아마도 라이브러리를 확인, 비용은 매우 높다).
MGwynne

1
@ Juka : 의견-> 답변?
Suresh Venkat

4
Jukka에 동의하지 않습니다. 왜 바퀴를 재발 명합니까? MiniSAT가 이미 오픈 소스를 제공하는 것을 다시 실행할 이유가 없습니다. CDCL 프레임 워크에 추가하려는 경우 추가 된 MiniSAT 성능이 추가됩니다. 또한 DPLL 자체로는 충분하지 않습니다. 많은 개선이 이루어졌습니다. 기본적으로 Mikolas의 답변을 따르십시오!
Huck Bennett

답변:


18

2009 년의 다음 기사에서 훌륭한 초보자 개요를 제공합니다.

기술적 측면으로 들어가는 방법에는 여러 가지가 있습니다. 원래 Davis-Putnam 용지로 시작할 수도 있습니다. 매우 명확하고 자세한 예가 있습니다. 강의에서 SAT 최적화를 논의 할 때 몇 가지가 이미 있다고 상상할 수 있습니다. Davis-Logeman-Loveland 논문은 덜 유익하지만 느리게 읽을 수 있습니다.

향후 50 년간의 발전을 따라 잡을 방법이있을 수 있습니다. 강의 슬라이드를 추천합니다. 'DPLL'을 검색하면 많은 자습서가 표시됩니다. 당신이 그들을 통해 탐색하면, 안개가 어느 정도 제거 될 것이라고 확신합니다. 유용한 설문 조사도 많이 있습니다. Zhang-Malik 용지는 시작하기에 좋은 장소입니다. 핸드북 만족도에는 유용 ​​할 수있는 몇 가지 기사가 있습니다.

나는 미 콜라 오스의 제안을 두 번째로한다. MiniSAT 코드는 깨끗하고 관리하기 쉬운 크기입니다. 당신은 그것으로 재생할 수 있습니다. 시도해 볼 수있는 다른 솔버가 몇 가지 있습니다. CryptoMiniSat도 매우 깨끗합니다. 또한 SAT 솔버를 작성하고 SAT 솔버 작성에 대해 쓰는 Armin Biere 의 작업을 참조해야합니다 .


17

솔버를 실제로 발전시킨 기술을 먼저 이해하고 다음과 같은 개요 및 분석을 제안합니다. .

그런 다음 minisat 의 소스 코드를 다운로드 하고 설명을 읽는 것이 좋습니다 .

물론 개별적 일 수도 있지만 가장 가치있는 소스 코드를 살펴 보았습니다.


9

당신이 거기에있는 모든 일에 압도 당한다면, 아무도 전에 문제에 대해 일한 적이없는 척하는 것이 어떻습니까? 궁극적으로 경쟁력있는 SAT 솔버를 구축하는 것이 목표라면 상당히 긴 여정이 될 것입니다. '솔루션을 확인하지 않고 그냥 놀기'만하면 잃는 것보다 더 많은 것을 얻을 수 있습니다.


9

좋은 설문지로 시작하십시오. 주제 조각을 공격하기가 쉬우 며 문헌에서 동일한 기술과 다른 기술에 사용 된 동일한 이름에 대해 다른 이름으로 혼동되기 쉽습니다. 최신 기술이 무엇인지 모르는 경우 오래된 알고리즘 전투 (예 : 발생 목록과 헤드 테일 목록, DPLL 구현을 위해 2 개의 감시 리터럴)를 쉽게 재현 할 수 있습니다.

Gomes 등의 만족도 해결사 알. 거친 땅을 줄 것입니다.

Manthey 의 최신 기술사용하여 SAT 해결사를 개선 하면 현재에 더 가까이 갈 수 있습니다.

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