답변:
SAT 솔버를위한 또 다른 가능한 전략은 해상도 검색 (일부 좋은 휴리스틱과 함께 해상도 규칙을 적용하는 것)입니다. 이론적으로 DPLL보다 기하 급수적으로 지수가 더 강력합니다 (즉, 지수가 짧은 증거가있는 문제가 있습니다). 내가 아는 한 열림)하지만 더 나은 실제 구현을 알지 못합니다.
검색을 완료하도록 제한하지 않으면 WalkSat은 만족스러운 솔루션을 찾는 데 사용할 수있는 로컬 검색 솔버이며 많은 경우 DPLL 기반 검색보다 성능이 우수합니다. 실패한 모든 할당을 캐시하지 않으면 지수 메모리 요구 사항을 의미하는 경우를 제외하고는 불만족을 증명하는 데 사용할 수 없습니다.
편집 : 추가 잊어 버림-SAT를 정수 프로그램으로 줄여 절단면을 사용할 수도 있습니다. 특히 Gomory는 정수 프로그램을 최적으로 해결하기에 충분합니다. 최악의 경우에도 지수가 필요할 수 있습니다. Arora & Barak의 Computational Complexity 책에는 이론적으로 SAT 해결과 같은 용도로 사용할 수있는 증거 시스템의 몇 가지 예가 더 있다고 생각합니다. 다시 한 번, DPLL 기반 또는 로컬 검색 기반 방법 외에는 빠른 구현을 보지 못했습니다.
MCTS (Monte Carlo Tree Search) 는 최근 Go와 같은 게임에서 인상적인 결과를 얻었습니다. 대략적인 기본 아이디어는 트리 검색과 무작위 시뮬레이션을 인터리빙하는 것입니다. 가볍고 구현하기 쉬우 며 링크 된 리서치 허브 페이지에는 많은 예제, 논문 및 코드가 포함되어 있습니다.
Previti et al. [1] SAT에 적용된 MCTS에 대한 예비 조사를 수행했다. 이를 MCTS 기반 검색 알고리즘 UCTSAT ( "나무 SAT에 적용되는 상한 신뢰")라고합니다. 그들은 UCTSAT가 DPLL보다 훨씬 작은 검색 트리를 생성하는지 확인하기 위해 SATLIB 저장소의 인스턴스에서 DPLL 및 UCTSAT의 성능을 비교했습니다.
크기가 다른 균일 한 임의의 3-SAT 및 평면 그래프 채색 사례의 경우 큰 차이가 없었습니다. 그러나 UCTSAT는 실제 인스턴스에서 더 나은 성능을 보였습니다. 4 개의 서로 다른 SSA 회로 결함 분석 인스턴스에 대한 평균 트리 크기 (노드 수로 표시)는 DPLL의 경우 수천에 달하는 반면 UCTSAT의 경우 항상 200 미만입니다.
DPLL은 변수 방문 순서를 엄격하게 지정하지 않으며 최적의 변수 순서 공격 전략에 대한 많은 흥미로운 연구가 있습니다. 이 중 일부는 SAT 알고리즘의 변수 선택 로직에 통합되어 있습니다. 어떤 의미에서이 연구의 일부는 다양한 변수 공격 순서가 서로 다른 순차적 제약 (예 : 경도와 밀접한 상관 관계)을 유발하고,이 명백한 핵심 통찰력을 악용하기위한 가장 효과적인 휴리스틱 또는 전략을 고안한다는 것을 보여줍니다. 연구의 초기 단계에서.
다이내믹 하이퍼 그래프 분리기 분해를 통한 실제 SAT 해결 안내 Li, van Beek
제약 나이프-에지 (1998) Walsh