SAT、CP、SMT、(多くの)ASPはすべて、同じ組み合わせの最適化問題を処理します。ただし、これらの問題はさまざまな角度から、さまざまなツールボックスで発生します。これらの違いは、主に、各アプローチが探索空間の探索に関する情報をどのように構成するかにあります。私の作業上の例えは、SATはマシンコードであり、他は高レベル言語であるということです。
バツ1∨ X2¯¯¯¯¯∨ X3{ (x1、0 )、(x2、1 )、(x3、0 )}バツ1バツ3バツ2バツ1∨ X2¯¯¯¯¯∨ X3∨ X4バツ1∨ X2¯¯¯¯¯∨ X3∨ X4¯¯¯¯¯∨ X5
節構造の近似は、ソリューションのセットを絞り込み、このセットが空かどうかを判断するのに役立つように維持されます。検索中に、一部の割り当てがソリューションに含まれないことが判明する場合があります(インスタンス内の各制約を個別に満たす場合でも)。これらはnogoodsとして知られ、( "Mr GNU")ストールマンとサスマンによって導入された用語 X ≤ 5x = 5。したがって、単一の一般的な句構造ではなく、句構造のシングルトン(リテラル)が表すものに応じて、表現の各選択に関連付けられた構造があります。
制約プログラミング(CP)は従来、スケジューリング、時間割、組み合わせの問題に焦点を当てたAIの分野であったため、2つ以上の値(通常は有限数)をとることができる変数に対して中心的な役割を果たします。CPは効率的な検索を強調し、従来のアプリケーションに動機付けられて、all-different
(単射性)制約に中心的な役割を与えましたが、他の多くの種類の制約に対して効率的な伝搬関数も開発しました。CPの正式な定義は、少なくともモンタナリの1974年の論文「制約のネットワーク」以来のものです。、前駆体はさらに早く戻ります。この歴史の重みが、過去10年間でCPが未加工のパフォーマンスにおける他のアプローチに遅れをとっていた可能性があります。CPは、古典的に、変数のアクティブドメインのセットを介して、節構造の補数の近似を維持します。目的は、アクティブなドメインから値を削除し、変数に候補値を割り当てて必要に応じてバックトラックすることにより、句構造を調査することです。
充足可能性モジュロ理論(SMT)は検証コミュニティから生まれました。SMTソルバーの各理論は、潜在的に無限に多くのSAT句の暗黙的な表現を形成します。SMTで使用される理論とCPで使用される制約は、それらのさまざまな歴史的応用を反映しています。SMTが考慮するほとんどの理論は、整数インデックス付き配列、実際の閉じたフィールド、線形次数などに関係しています。これらは、プログラムの静的分析(コンピューター支援検証)または数学的な証明の形式化(自動推論)から発生します。対照的に、時間割とスケジューリングでは、単射性制約が中心であり、標準のSMTLIB言語には2003年の開始以来(単射distinct
シンボル)、2010年までは、SMTソルバーdistinct
は単純なアルゴリズムを介してのみ実装されていました。その段階で、標準のCPプロパゲーターからのマッチング手法all-different
が移植され、変数の大きなリストに適用されると大きな効果が得られました。参照SMTでのアンAlldifferent制約ソルバをさらにSMT 2010年、BankovićとMaricのことで、標準的なSMTの理論は、箱から出して、無限のドメイン(整数、最近で実数)を扱うのに対し、最もCPのプロパゲータは、有限領域での問題のために設計されています。SMTは、節構造の近似としてSATインスタンスを使用し、必要に応じて理論からnogood節を抽出します。優れた概要は
、Satisfiability Modulo Theories:Introduction and Applications by De Moura andBjørner、doi:10.1145 / 1995376.1995394です。。
Answer Set Programming(ASP)は、ロジックプログラミングから生まれました。安定したモデルを見つけるというより一般的な問題を解決することに重点を置いているため、また普遍的および実存的定量化が可能であるため、ASPは長年CPまたはSMTと競合していませんでした。
正式には、SATはブールドメインのCSPですが、節学習のSATの焦点、競合検出の優れたヒューリスティック、およびバックトラックの高速な方法は、伝播者、一貫性の確立、および変数の順序付けのヒューリスティックに焦点を当てた従来のCSPとはまったく異なります。SATは通常非常に効率的ですが、多くの問題では、最初に問題をSATインスタンスとして表現するために多大な努力が必要です。CPのような高レベルのパラダイムを使用すると、問題をより自然に表現できます。その後、CPインスタンスを手動でSATに翻訳するか、ツールで翻訳を処理できます。SATの基本的な概要については、PipatsrisawatとDarwicheによる「Modern Clause-Learning Satisfiability Solvers」(doi:10.1007 / s10817-009-9156-3)を参照してください。
それでは、一般性から現在の詳細に移りましょう。
過去10年間で、CPの一部の人々は遅延句生成(LCG)に焦点を合わせ始めました。これは基本的に、かなり厳密なアクティブドメインの抽象化ではなく、より柔軟なSMTのような手法を使用してCPプロパゲータをボルトで固定する方法です。これは、多くの種類の問題を効率的に表現して解決するための公開されたCP伝播者の長い歴史があるため便利です。(もちろん、SMTソルバーの新しい理論を実装するための協調的な努力によって、同様の効果が得られます。)LCGのパフォーマンスはSMTと競合することが多く、問題によっては優れている場合があります。簡単な概要は、StuckeyのCPAIOR 2010ペーパーLazy Clause Generation:SATとCP(およびMIP?)の能力を組み合わせて解く、doi:10.1007 / 978-3-642-13520-0_3。それはまたのCP-中心のビジョン塗料・ガルシア・デ・ラ・バンダ、スタッキー、ヴァンHentenryckとウォレスのポジションペーパー、読む価値のある最適化技術の将来:、DOI 10.1007 / s10601-013-9149-Zを。
私の知る限り、最近のSMT研究の焦点の多くは、形式的な方法と形式化された数学の応用にシフトしたようです。例としては、SMTプルーフトレースに推論ルールを反映するためにIsabelle / HOL戦術を構築することにより、Isabelle / HOL などのプルーフシステム内でSMTソルバーによって検出されたプルーフを再構築します。ITP 2010のBöhmerとWeberによるZ3の高速LCFスタイルの証明再構築を参照してください。
トップASPソルバーは、CP、SMT、SATのみのソルバーと競合するように、過去数年にわたって開発されてきました。私はソルバーclasp
が競争力があるなどの実装の詳細に漠然と精通しているだけなので、これらをSMTやCPと実際に比較することはできませんが、クラスプはノーグッドの学習に焦点を明示的にアドバタイズします。
これらの形式間の従来の境界を越えることは、より抽象的な問題表現から効率的に実装可能な低レベルの形式への変換です。いくつかのトップASPおよびCPソルバーは、入力を明示的にSATインスタンスに変換し、その後、市販のSATソルバーを使用して解決します。CPでは、Savile Row制約モデリングアシスタントは、コンパイラデザインテクニックを使用して、中レベル言語のエッセンスで表現された問題を、MinionやMiniZincなどのCPソルバーへの入力に適した低レベル形式に変換します。Savile Rowはもともと、低レベルの形式としてCP表現を使用していましたが、バージョン1.6.2でターゲットとしてSATを導入しました。さらに、さらに高いレベルの言語エッセンスConjureツールを使用して、Essenceに自動的に翻訳できるようになりました。同時に、Lingelingのような低レベルのSATのみのソルバーは毎年改良され続けており、最近では節の学習と処理中の段階を交互に繰り返すことにより、AAAI 2015のHeuleとSchaubによるSATおよびASPコンテストの最新情報の概要をご覧ください。
したがって、プログラミング言語の歴史との類推は適切なようです。SATは一種の「マシンコード」になり、節構造内の節の探索の低レベルモデルを対象としています。抽象パラダイムは、より高度なコンピューター言語のようになりつつあり、独自の方法論とアドレス指定に優れたアプリケーションを備えています。最後に、これらの異なる層間のリンクのますます密集したコレクションは、コンパイラ最適化エコシステムに似始めています。