Если у меня возникла сложная проблема, один из стандартных подходов состоит в том, чтобы выразить его как экземпляр SAT и попробовать запустить на нем решатель SAT. Другой стандартный подход состоит в том, чтобы выразить это как проблему удовлетворения ограничений и попытаться использовать решатель CSP. Эти два понятия как-то смутно схожи в том, какие проблемы могут быть естественным образом выражены в их формате ввода.
Существуют ли какие-либо руководящие принципы или практические правила о том, как распознать для данной проблемы, какой подход с большей вероятностью даст хорошие результаты? Есть ли какое-либо руководство, которое кто-либо может предложить о том, какие виды проблем могут быть решены лучше решателями SAT, чем решателями CSP, или наоборот?
(Очевидно, что есть несколько простых проблем, которые могут быть решены с помощью обоих подходов. Есть также некоторые сложные проблемы, которые не могут быть эффективно решены ни одним из подходов. Давайте отложим их в сторону. В случае, когда руководство является наиболее полезным, это проблемы, когда любой SAT решатели работают лучше, чем решатели CSP, или где решатели CSP работают лучше, чем решатели SAT. Как определить, что решатель SAT лучше подходит, чем решатель CSP, или когда решатель CSP может быть лучше SAT решатель - то есть, какой подход попробовать в первую очередь?)