SATとConstraint Satisfactionを使用する場合


18

難しい問題がある場合、標準的なアプローチの1つは、SATインスタンスとして表現し、SATソルバーを実行することです。別の標準的なアプローチは、それを制約充足問題として表現し、CSPソルバーを使用してみることです。この2つは、入力形式でどのような問題を自然に表現できるかについて、なんとなく漠然と似ています。

特定の問題に対して、どのアプローチが良い結果をもたらす可能性が高いかを認識する方法に関するガイドラインまたは経験則はありますか?CSPソルバーよりもSATソルバーがより適切に処理できる問題、またはその逆について、だれでも提供できるガイダンスはありますか?

(明らかに、両方のアプローチで解決できるいくつかの簡単な問題があります。どちらのアプローチでも有効に解決できない難しい問題もあります。それらを脇に置いておきましょう。ガイダンスが最も役立つケースは、SATソルバーはCSPソルバーよりも優れたパフォーマンスを発揮するか、CSPソルバーがSATソルバーよりも優れたパフォーマンスを発揮します。 SATソルバー-つまり、最初に試すアプローチはどれですか?)


1
SATに還元したい場合、問題はそれほど難しくないことに注意してください。
ラファエル

1
または、なぜSAT / CSPのみに焦点を当てるのですか、SMTはどうですか
たJuho

制約ソルバーツールを使用すると、それほど難しくないインスタンスでいくつかの最適化(たとえば、対称性の破れのテクニック)を簡単に試すことができるという利点があります(そのような最適化の有効性を確認します)。さらに、それらの多くは、標準CNFファイルを中間出力として出力できます。
はVor

素晴らしい点、@ Juho!SMTも検討する価値があります。考えがあれば、3つすべて(SAT、CSP、SMT)を自由に比較してください。
DW

私は同じ質問をしました、尋ねてくれてありがとう。
xxx ---

回答:


8

これは非常に良い質問だと思います。また、質問することができます:SMTソルバーをいつ使用するか?問題をモデル化し、実際にCSP / SAT / SMTソルバーを実行して見つける前に判断するのは難しいかもしれないと感じています。異なるソルバーでさえ、同じインスタンスで非常に異なるパフォーマンスを発揮することはよく知られています!私の直感は、問題をモデル化する多くの方法が潜在的に存在するという事実からも生じます。さらに、使用されている制約のタイプに応じて、検索と推論を行う方法が多数あります(問題の形式が異なるタイプを許可する場合)。

8×89+9+9=2732×32 数独パズル、SATソルバーはCSPソルバーよりも高速です。

さまざまな形式は、ドメイン固有の情報をキャプチャし、さまざまな方法でより適切に活用することができます。これについてもう少し詳しくは、こちらの回答とコメントをご覧ください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.