충돌에 의한 절 학습

Conflict-driven clause learning

컴퓨터 과학에서 CDCL(conflict-drived clause learning)은 부울 만족도 문제(SAT)를 해결하기 위한 알고리즘입니다.부울 공식을 지정하면 SAT 문제는 전체 공식이 참으로 평가되도록 변수 할당을 요구합니다.CDCL SAT 솔버의 내부 동작은 DPLL 솔버에서 영감을 받았습니다.CDCL과 DPLL의 가장 큰 차이점은 CDCL의 백 점프가 비연대적이라는 것이다.

분쟁 주도형 조항 학습은 마르케스 실바와 사칼라(1996,[1][2] 1999)와 바야르도 및 슈라그(1997)[3]에 의해 제안되었다.

배경

부울 만족도 문제

만족도 문제는 연결 정규 형식(CNF)에서 주어진 공식에 대한 만족스러운 할당을 찾는 데 있습니다.

이러한 공식의 예는 다음과 같습니다.

(A아님) 또는 (C아님) 및 (B 또는 C)

또는 일반적인 [4]표기법을 사용하여 다음을 수행합니다.

여기서 A, B, C는 부울 변수, 、 C C 、 C 、 C C 、 C 、 B 、 、 B c C 、 B C、 C c C 、 Bc C c C 、 C C style C style C C style C style C style C style C style C style Cstyle C style C style \ display stylelor

이 공식에 대한 만족스러운 과제는 다음과 같다.

두 번째 절(C Cdisplaystyle C\)과 마찬가지로 첫 번째 절(A\displaystyle A 참이므로)도 참이 됩니다.

이 예에서는 3개의 변수(A, B, C)를 사용하고 있으며, 각 변수에는 2개의 할당(True 및 False)이 있습니다.하나는 2 2} 8)의 가능성이 .이 작은 예에서는 brute-force 검색을 사용하여 가능한 모든 할당을 시도하고 공식을 충족하는지 확인할 수 있습니다.그러나 수백만 개의 변수와 절이 있는 현실적 응용 프로그램에서는 무차별적인 강제 검색이 비현실적입니다.SAT 해결사의 책임은 복잡한 CNF 공식에 다른 휴리스틱을 적용하여 만족스러운 과제를 효율적이고 빠르게 찾는 것입니다.

단위구 규칙(단위 전파)

불만족 절이 False에서 평가된 리터럴 또는 변수를 제외한 모든 것을 포함하는 경우 해당 절이 True가 되려면 자유 리터럴이 True여야 합니다.예를 들어 다음 불만족 절이 A \ A 및 B a e B =False로 될 경우 해당 절 대해 C 합니다

unit 구 규칙의 반복 적용은 unit propagation 또는 Boolean Constraint propagation(BCP; 부울 제약 전파)이라고 불립니다.

결의안

2개의 구' 'C (A B C(' ' ' C D E에 대해 검토합니다.2개의 구를 통합하여 C C C를 모두 삭제한 구 B D E를 2개의 구의 해결사라고 합니다.

알고리즘.

충돌에 의한 절 학습은 다음과 같이 동작합니다.

  1. 변수를 선택하고 True 또는 False를 할당합니다.이를 의사결정 상태라고 합니다.과제를 기억하십시오.
  2. 부울 제약 조건 전파(유닛 전파)를 적용합니다.
  3. 시사 그래프를 작성합니다.
  4. 경합이 있는 경우
    1. 충돌의 원인이 된 암시 그래프에서 절단 부분을 찾습니다.
    2. 충돌을 초래한 할당을 부정하는 새 절을 도출합니다.
    3. 충돌과 관련된 첫 번째 할당된 변수가 할당된 적절한 의사결정 수준으로 비연대적 역추적("백 점프")
  5. 그렇지 않으면 모든 변수 값이 할당될 때까지 스텝1부터 계속 진행합니다.

CDCL 알고리즘의 시각적 예:

완전성

DPLL은 SAT를 위한 건전하고 완전한 알고리즘입니다.CDCL SAT 솔버는 DPLL을 실장하지만 새로운 절을 학습하고 비연대적으로 역추적할 수 있습니다.갈등 분석을 통한 절 학습은 건전성도 완전성도 영향을 미치지 않는다.충돌 분석은 해결 연산을 사용하여 새로운 절을 식별합니다.따라서 학습된 각 절은 해결 단계에 따라 원래의 절 및 기타 학습된 절에서 추론할 수 있다.cN이 새로운 학습절인 경우, is { {cN}도 만족할 수 있는 경우에만 만족합니다.또한 변경된 역추적 스텝은 새로운 [5]학습절마다 역추적 정보가 취득되기 때문에 건전성 또는 완전성에 영향을 주지 않는다.

적용들

CDCL 알고리즘의 주요 적용 분야는 다음과 같은 다양한 SAT 솔버입니다.

  • MiniSAT
  • Zchaff SAT
  • Z3
  • 포도당[6]
  • ManySAT 등

CDCL 알고리즘은 SAT 솔버를 매우 강력하게 만들어 AI 계획, 생물 정보학, 소프트웨어 테스트 패턴 생성, 소프트웨어 패키지 의존성, 하드웨어 및 소프트웨어 모델 검사, 암호학 등의 실제 응용 분야에서 효과적으로 사용하고 있습니다.

관련 알고리즘

CDCL과 관련된 알고리즘은 데이비스이다.풋남 알고리즘과 DPLL 알고리즘.DP 알고리즘은 분해능 레퍼레이션을 사용하여 메모리 액세스에 문제가 있을 수 있습니다.DPLL 알고리즘은 랜덤하게 생성된 인스턴스에는 문제가 없지만 실제 응용 프로그램에서 생성된 인스턴스에는 문제가 없습니다.CDCL을 적용하면 DPLL에 비해 상태 공간 검색이 적다는 점에서 CDCL은 이러한 문제를 해결하는 보다 강력한 방법입니다.

인용된 작품

  1. ^ J.P. Marques-Silva; Karem A. Sakallah (November 1996). "GRASP-A New Search Algorithm for Satisfiability". Digest of IEEE International Conference on Computer-Aided Design (ICCAD). pp. 220–227. CiteSeerX 10.1.1.49.2075. doi:10.1109/ICCAD.1996.569607. ISBN 978-0-8186-7597-3.
  2. ^ J.P. Marques-Silva; Karem A. Sakallah (May 1999). "GRASP: A Search Algorithm for Propositional Satisfiability" (PDF). IEEE Transactions on Computers. 48 (5): 506–521. doi:10.1109/12.769433.
  3. ^ Roberto J. Bayardo Jr.; Robert C. Schrag (1997). "Using CSP look-back techniques to solve real world SAT instances" (PDF). Proc. 14th Nat. Conf. on Artificial Intelligence (AAAI). pp. 203–208.
  4. ^ 아래 그림에서 는 "or"를 나타내며 곱셈은 "and"를 나타냅니다.
  5. ^ Biere, Heule, Van Maaren, Walsh (February 2009). Handbook of Satisfiability (PDF). IOS Press. p. 138. ISBN 978-1-60750-376-7.{{cite book}}: CS1 maint: 여러 이름: 작성자 목록(링크)
  6. ^ "Glucose's home page".

레퍼런스