분쟁 중심 조항 학습 역 추적 설명


9

wikipedia 페이지 에서 CDCL 알고리즘에 대해 잘 설명하고 있습니다 (사진은 Princeton의 Sharad Malik이 만든 슬라이드에서 가져온 것 같습니다). 그러나 모든 역 추적 방법을 설명 할 때는 "적절한 시점까지"라고 말합니다. MiniSAT는 또한 CDCL 알고리즘의 변형을 사용하므로이 논문을 읽었습니다.. 그들이 말하는 것처럼 배운 조항이 단위 조항이 될 때까지 역 추적해야한다는 것입니다. 그것은 분명히 설명이지만 나에게는 이해가되지 않습니다. 마지막 과제는 분명히 내가 알 수있는 한 학습 된 충돌 조항의 일부가 될 것입니다 (아마도 내가 틀렸습니까?) 한 단계를 역 추적하면 학습 된 조항 단위를 즉시 만들면 마지막으로 할당 된 값이 뒤집어집니다. 알고리즘은 충분히 역 추적하지 않고 DPLL로 정확하게 진행됩니다. 또한 wikipedia 페이지는이 규칙을 따르지 않으며 원하는 것처럼 훨씬 더 뒤로 추적됩니다.

어느 정도 역 추적해야합니까?

답변:


7

MiniSAT 논문의 관련 단락은 다음과 같습니다.

결정 단계는 모든 변수가 할당되거나 모델이 있거나 충돌이 발생할 때까지 계속됩니다. 충돌시 학습 절차가 시작되고 충돌 조항이 생성됩니다. 트레일은 학습 된 조항의 리터럴 중 하나가 언 바운드 될 때까지 한 번에 한 레벨 씩 결정을 실행 취소하는 데 사용됩니다 (모두에프에스이자형갈등의 시점에서). 구성에 따라 충돌 조항은 충돌에서 두 개 이상의 언 바운드 리터럴이있는 조항으로 직접 갈 수 없습니다. 조항이 여러 의사 결정 수준에 대한 단위로 유지되는 경우 가장 낮은 수준을 선택하는 것이 유리합니다 ( 점프 또는 비 연대기 역 추적 이라고 함 ).

놓친 것 같은 포인트는 취소 된 할당 (역 추적)으로 인해 학습 된 절이 일단 단위가되면 솔버가 거기서 멈추지 않는다는 것입니다. 이 과제 이전에는 현재의 갈등과 관련이없는 다른 과제가있을 수 있으며 실험적으로 이러한 관련없는 과제도 취소하는 것이 더 나은 것으로 나타났습니다. 따라서 솔버는 다음 실행 취소가 학습 된 절을 비단 위로 만들 때까지 (즉, 둘 이상의 할당되지 않은 변수를 포함 할 때까지) 할당을 계속 실행 취소합니다. 솔버는 여기서 정지하고 단위 전파를 실행하여 단위 절을 만족시킨 다음 검색을 다시 시작하여 변수를 정상적으로 할당합니다.

또한 현재 결정 변수가 학습 된 절에 없을 수도 있습니다. CDCL 솔버의 일반적인 전략은 첫 번째 고유 함의 지점 을 찾고 학습 된 절에서 해당 변수를 사용하는 것입니다. 어떤 경우에는 첫 번째 UIP가 결정 변수이지만 종종 그렇지 않습니다.

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