Оговорка, основанная на конфликте

9

На странице википедии здесь довольно хорошо описан алгоритм CDCL (и, похоже, фотографии были взяты из слайдов, созданных Шарадом Маликом в Принстоне). Тем не менее, при описании того, как откатить все, что он говорит, это «до соответствующей точки». MiniSAT также использует вариант алгоритма CDCL, поэтому я прочитал эту статью, Похоже, они говорят, что вы должны вернуться, пока выученное предложение не станет единичным предложением. Это, конечно, разъяснение, но это не имеет смысла для меня. Насколько я могу судить, последнее назначение определенно будет частью оговорки изученного конфликта (возможно, я здесь не прав?), Поэтому, когда вы вернетесь на один шаг назад, вы сразу же сделаете единицу изученного предложения, последнее присвоенное значение будет отображаться, и алгоритм будет работать точно так же, как и DPLL, и не будет проходить достаточно далеко. Кроме того, страница википедии не следует этому правилу, она отступает намного дальше, как кажется желательным.

Как далеко можно вернуться?

Джейк
источник

Ответы:

7

Вот соответствующий параграф из статьи MiniSAT:

FaLsе

Похоже, вы упустили момент, когда изученное предложение становится единым из-за отмененных назначений (возврата), решатель на этом не останавливается. До этого могли быть другие назначения, которые не имеют отношения к текущему конфликту, и экспериментально было показано, что лучше также отменить эти несвязанные назначения. Таким образом, решатель продолжает отменять назначения до тех пор, пока следующая отмена не сделает изученное предложение неединичным, то есть он будет содержать более одной неназначенной переменной. Здесь решатель останавливается, запускает распространение модуля, чтобы удовлетворить предложению модуля, а затем возобновляет поиск, обычно назначая переменные.

Также обратите внимание, что текущая переменная решения может отсутствовать в изученном предложении. Общая стратегия для решателя CDCL - найти первую уникальную точку импликации и использовать эту переменную в изученном предложении. В некоторых случаях первый UIP является переменной решения, но часто это не так.

Кайл Джонс
источник