(数学)問題をSATインスタンスに変換する


22

私がやりたいのは、数学の問題をブール充足可能性問題(SAT)に変え、SATソルバーを使用してそれを解くことです。誰かが私の問題をSATインスタンスに変換するのに役立つマニュアル、ガイド、または何かを知っているのだろうか。

また、指数関数的な時間よりも良い方法でこれを解決したいです。SAT Solverが役立つことを願っています。


1
SATには効率的な方法はありません...しかし、これらのスライドを
フェイエズアブドラザクDeab


cryptlogverをテストするだけの場合は、他のことを試す前の迅速で汚いソリューションです。ツールは、暗号化に焦点を合わせていると言いますが、トリックを行います。さらに、使用する言語の構文は非常に似ているため、多くの問題は発生しません。設置は難しくありませんが、クォーツは大きいので、コーヒーを飲んでください。
absinthe_minded

1
関連する質問も参照してくださいcs.stackexchange.com/q/30790
アンドラスサラモン

回答:


20

SATハンドブックの第2章(スティーブン・プレスウィッチ著)では、離散決定問題をCNFに変換する方法をある程度詳しく説明しています。他の文献のいくつかは、マグヌスビョークの風変わりな概要で引用- (おそらく最良のあなたの地元の図書館に相談すること。残念ながら、私はオンラインのドラフト版があるとは思わない)成功したSAT符号化技術も有用です。

問題が継続的である場合、または特に不等式のシステムに関心がある場合は、他の種類のソルバーが役立つ可能性が高くなります。Kyleが指摘しているように、SMTソルバー(Z3YicesOpenSMTなど)は便利な場合がありますが、従来のSMT理論はコンピューターソフトウェアの検証に焦点を当てる傾向があるため、SMTソルバーは通常、整数の間隔を含む式などを強力にサポートしています、ただし、単射性の制約ではパフォーマンスが低下する場合があります。不平等のシステムとして自然に表現される問題については、CPLEXが勝ちます(以前は無料でアカデミックな使用が可能でしたが、それでも可能性があります)。いくつかの組み合わせ決定問題(発見など)長方形の正方形へのパッキング)、Minionなどの制約ソルバーはSATソルバーよりも優れており、多くの場合、使いやすいです。


13

数学的問題を学習演習としてSATインスタンスに変換しない限り、あなたの時間は充足可能性モジュロ理論についての学習により多くの実りある時間を費やします。SMTを使用すると、ブールSATインスタンスよりもはるかに自然に方程式やその他の制約を表現できます。一部のSMTソルバーは、実存的および汎用数量詞をサポートしているため、NPを超えてPSPACE問題を表現できます。

より表現力豊かであることに加えて、SMTソルバーは高速です。P = NPよりも高速ではありませんが、優れたSMTソルバーは、探索空間を通じてソルバーを導くのに役立つ理論固有の構造情報を破棄しないため、より効率的です。SATインスタンスに対して直接カープ削減を行うと、SATソルバーは、多くの場合指数関数的なコストで、そのすべての構造を再学習します。たとえば、加算が可換であるという事実は、DPLLベースとローカル検索ベースの両方のSATソルバーで失われます。ソルバーは、数値を処理していることをまったく認識していません。x + y + z = 10のすべての順列の試行を回避するために、SATソルバーは対称性を破るコードを必要とします。これには、グラフの自己同型検出が必要です。現在の最良のグラフ自己同型認識アルゴリズムは、最悪の場合には頂点の数に指数関数的な時間を必要としますが、


2
特定のSMTソルバーを提案していますか?
Dchris

5

高水準言語をSMTまたはCNFに変換する2つのツール。

CVC構文はCASに近いです。

CBMC CプログラムをCNFに変換し、アサーションを許可します。アサーションは常に真であるか、偽の場合は反例の入力が見つかります。CBMCはループを展開するため、特定のCプログラムには指数関数的に大きなCNF / SMTがあります。


CBMCは任意のCプログラムをCNFに変換しないようです。整数オーバーフロー、バッファオーバーフローなどの静的解析を実行するCプログラムに基づいてCNFを作成します。
vy32
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.