Si j'ai un problème difficile, une approche standard consiste à l'exprimer en tant qu'instance SAT et à essayer d'exécuter un solveur SAT dessus. Une autre approche standard consiste à l'exprimer comme un problème de satisfaction de contrainte et à essayer d'utiliser un solveur CSP. Les deux se sentent en quelque sorte vaguement similaires quant aux types de problèmes qui peuvent être naturellement exprimés dans leur format d'entrée.
Existe-t-il des lignes directrices ou des règles de base pour savoir comment reconnaître, pour un problème donné, quelle approche est la plus susceptible de donner de bons résultats? Existe-t-il des conseils que quiconque puisse offrir sur les types de problèmes qui peuvent être mieux traités par les solveurs SAT que par les solveurs CSP, ou vice versa?
(Évidemment, il y a des problèmes faciles qui peuvent être résolus par les deux approches. Il y a aussi des problèmes difficiles qui ne peuvent pas être résolus utilement par l'une ou l'autre approche. Mettons-les de côté. les solveurs fonctionnent mieux que les solveurs CSP, ou lorsque les solveurs CSP fonctionnent mieux que les solveurs SAT. Comment puis-je reconnaître quand un solveur SAT est susceptible d'être mieux adapté qu'un solveur CSP, ou lorsqu'un solveur CSP est susceptible d'être mieux adapté un solveur SAT - c'est-à-dire quelle approche essayer en premier?)