SAT 솔버를 작성 중이며 DPLL 알고리즘을 구현하기 시작했습니다. 나는 알고리즘을 이해하고 그것이 어떻게 작동하는지, 나는 또한 그것의 변형을 구현했다. 그러나 나를 귀찮게하는 것은 다음 것이다.DPLL 일관된 리터럴 집합이란 무엇입니까?
function DPLL(Φ)
if Φ is a consistent set of literals
then return true;
if Φ contains an empty clause
then return false;
for every unit clause l in Φ
Φ ← unit-propagate(l, Φ);
for every literal l that occurs pure in Φ
Φ ← pure-literal-assign(l, Φ);
l ← choose-literal(Φ);
return DPLL(Φ ∧ l) or DPLL(Φ ∧ not(l));
은 무엇을 의미 하는가, Φ
리터럴의 일관된이라고? 나는 이 일치하지 않는 것은을 의미하며, 은 일관성이 없음을 의미합니다.. 왜 현재 할당이 문제를 위조하지 않는다면 true
을 반환 할 수 있습니까?
내 SAT 해결사를 구현 한 방법은 모든 절을 사실로 만든 할당이 올 때마다 해당 할당을 반환하고 알고리즘이 완료되었음을 의미합니다. 하지만 주어진 할당 때문에, 문제에 대한 해결책이되기 위해서는 모든 절이 참이어야합니다. 이해가 안됩니다. 이 단지의 문제를 해결할 경우에 true
을 반환 할 수있는 방법은 무엇입니까? 여기서 무엇인가 잘못되었지만, Φ
이 일관성이 있다면 거짓이 아니라는 것을 의미합니다. 그러나 여전히 결정할 수 없습니다.).
그게 내가 기대했던 것인데, 그것이 그것이 의미하는 바가 확실하지 않은 일관성의 정의에 방해가되었습니다. 고마워. 만족할만한 과제를 반환해야하기 때문에, 나는 phi가 일관성이있을 때 현재 과제를 인쇄한다고 가정합니다. – campovski