#SAT를 해결하기 위해 때때로 효율적인 알고리즘이 있습니까?


24

하자 사업자와 일부 변수 보통 AND, OR 및 NOT으로 구성된 부울 수식합니다. 대한 만족스러운 과제 수를 세고 싶습니다 . 즉, 나는의 변수 진리 값을 다른 할당의 수를 찾으려면 하는 true 값을 가정합니다. 예를 들어, 수식 에는 세 가지 만족스러운 할당이 있습니다. 는 4 개입니다. 이것이 #SAT 문제 입니다.B B B a b ( a b ) ( c ¬ b )BBBBab(ab)(c¬b)

분명히이 문제에 대한 효율적인 솔루션은 SAT에 대한 효율적인 솔루션을 의미 할 것입니다. 실제로는이 문제가 # P- 완전하므로 SAT보다 엄격하게 어려울 수 있습니다. 따라서 보장 된 효율적인 솔루션을 기대하지 않습니다.

그러나 SAT 자체의 실제 어려운 사례는 상대적으로 적다는 것은 잘 알려져 있습니다. (예를 들어 Cheeseman 1991, " 정말 어려운 문제가있는 곳"참조 ) 최악의 경우 기하 급수적 검색은 많은 인스턴스를 효율적으로 해결할 수 있습니다. 해결 방법은 최악의 경우에는 지수이지만 실제로는 훨씬 효율적입니다.

내 질문은 :

일반적인 알고리즘에서 지수 시간이 필요한 경우에도 일반적인 부울 공식의 만족스러운 할당 수를 빠르게 계산할 수있는 알고리즘이 있습니까? 가능한 모든 과제를 열거하는 것보다 눈에 띄는 것이 있습니까?


1
# p-completeness에 태그를 추가하려고했지만 Stack Exchange 소프트웨어는 # 기호를 좋아하지 않습니다.
Mark Dominus

나는 "SAT 자체의 실제 어려운 사례는 거의 없다"고 주장하면서 조심해야한다. 나는 당신이 연결하는 논문이 실제로 랜덤 -SAT 에 대해 이야기한다고 생각합니다 . 또한, 위상 천이 현상은 랜덤 인스턴스에만 적용됩니다. 수공예, 산업 등 SAT의 사례가 많이 있습니다. k
Juho

감사. 이것이 내 질문을 덜 명확하게 만드는 경향이 있다고 생각합니까? 내가 원하는 것을 이해합니까?
Mark Dominus

나에게 분명하다. 단계 전환을 나타내는 인스턴스를 기억하는 것이 중요합니다. :)
Juho

답변:


21

일반적인 경우 계산

2

정확한 계산 방법은 종종 DPLL 스타일의 철저한 검색 또는 일종의 지식 편집을 기반으로합니다. 대략적인 방법은 일반적으로 보장없이 빠른 추정을 제공하는 방법과 정확성을 보장하는 하한 또는 상한을 제공하는 방법으로 분류됩니다. 백도어 검색과 같이 범주에 맞지 않는 다른 방법이나 수식 (또는 제약 조건 그래프)을 유지하기 위해 특정 구조적 속성을 요구하는 방법도 있습니다.

실제 구현이 있습니다. 일부 정확한 모델 카운터는 CDP, Relsat, Cachet, sharpSAT 및 c2d입니다. 정확한 솔버가 사용하는 주요 기술의 종류는 부분 개수, 기초 구속 조건 그래프의 성분 분석, 공식 및 성분 캐싱 및 각 노드에서의 현명한 추론입니다. 지식 편집에 기반한 다른 방법은 입력 CNF 공식을 다른 논리 형식으로 변환합니다. 이 형식에서 모델 수를 쉽게 추론 할 수 있습니다 (새로 생성 된 수식 크기의 다항식 시간). 예를 들어 공식을 이진 결정 다이어그램 (BDD)으로 변환 할 수 있습니다. 그런 다음 BDD를 "1"리프에서 루트로 다시 이동할 수 있습니다. 또는 다른 예에서, c2d는 CNF 공식을 결정 론적 분해 가능한 부정 정규 형식 (d-DNNF)으로 바꾸는 컴파일러를 사용합니다.

ϕϕ

Gogate and Dechter [3]은 SampleMinisat로 알려진 모델 카운팅 기술을 사용합니다. 부울 수식의 역 추적없는 검색 공간에서 샘플링 한 것을 기반으로합니다. 이 기술은 DPLL 기반 SAT 솔버를 사용하여 역 추적없는 검색 공간을 구성하는 중요도 리샘플링 아이디어를 기반으로합니다. 이것은 완전히 또는 근사치까지 수행 될 수 있습니다. 보장 된 추정치에 대한 샘플링도 가능합니다. Gomes et al. [4]는 수정 된 무작위 화 된 전략으로 샘플링을 사용하면 높은 확률 적 정확성 보장으로 전체 모델 수에 대해 가능한 하한을 얻을 수 있음을 보여 주었다.

신념 전파 (BP)를 기반으로하는 작업도 있습니다. Kroc et al. [5] 그리고 그들이 소개 한 BPCount. 같은 논문에서 저자는 모델 수에 상한을 제공하기 위해 MiniCount라는 두 번째 방법을 제공합니다. 특정 통계적 가정 하에서 상한을 계산할 수있는 통계 프레임 워크도 있습니다.

# 2-SAT 및 # 3-SAT 알고리즘

영형(1.3247)영형(1.6894)영형(1.6423)

문제의 본질과 마찬가지로 실제로 인스턴스를 해결하려는 경우 인스턴스의 크기와 구조에 따라 달라집니다. 더 많이 알수록 올바른 방법을 선택할 수 있습니다.


[1] 빌헬름 달리 요프, 피터 존슨, 매그너스 월 스트롬. 2-SAT 및 3-SAT에서 만족스러운 할당 계산. 제 8 회 연례 국제 컴퓨팅 및 조합 회의 (COCOON-2002), 535-543, 2002.

[2] W. Wei 및 B. Selman. 모델 카운팅에 대한 새로운 접근. SAT05 절차 : 제 8 차 만족도 테스트 이론 및 응용에 관한 국제 회의, 컴퓨터 과학 강의 노트 3569, 324-339, 2005.

[3] R. Gogate 및 R. Dechter. 역 추적없는 검색 공간을 샘플링하여 대략적인 계산. AAAI-07 발간물 : 인공 지능에 관한 22 차 전국 회의, 198–203, 밴쿠버, 2007.

[4] CP Gomes, J. Hoffmann, A. Sabharwal 및 B. Selman. 샘플링에서 모델 카운팅까지. IJCAI-07의 절차 : 인공 지능에 관한 제 20 차 국제 공동 회의, 2293–2299, 2007.

[5] L. 크록, A. Sabharwal 및 B. 셀만. 모델 전파를위한 신념 전파, 역 추적 검색 및 통계 활용. CPAIOR-08 : 제약 프로그래밍에서 AI와 OR 기술의 통합에 관한 5 차 국제 컨퍼런스, 컴퓨터 과학 강의 노트 5015, 127–141, 2008.

[6] K. Kutzkov. # 3-SAT 문제에 대한 새로운 상한. 정보 처리 서한 105 (1), 1-5, 2007.


8

Juho가 나열한 논문 외에도이 주제에 대한 작업, 특히 솔루션 수를 근사화하는 방법을 설명하는 다른 문서가 있습니다.

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