コンピュータサイエンスにおいて、競合駆動型節学習(CDCL )は、ブール充足可能性問題(SAT)を解くためのアルゴリズムです。ブール式が与えられた場合、SAT問題は、式全体が真となるように変数を割り当てることを要求します。DPLLアルゴリズムに触発されたCDCLは、非時系列的なバックトラッキング(またはバックジャンピング)を利用し、競合が発生するたびに新しい節を節データベースに追加します。[ 1 ]
葛藤主導の節学習は、Marques-SilvaとKarem A. Sakallah(1996、1999)[ 2 ] [ 3 ]およびBayardoとSchrag(1997)[ 4 ]によって提案された。
充足可能性問題とは、連言標準形(CNF)で与えられた論理式に対して、充足可能な割り当てを見つけることである。
そのような公式の例は次のとおりです。
または、一般的な表記法を用いると:[ 5 ]
ここで、 A、B、Cはブール変数であり、、、、 そしてこれらはリテラルであり、そして節です。
この公式に適した課題の例は次のとおりです。
なぜなら、最初の節を真にするから(( は である)だけでなく、2 番目( なので)(これは真実です)。
この例では 3 つの変数 ( A、B、C ) を使用し、それぞれの変数には 2 つの割り当て (True と False) が可能です。したがって、1 つの変数には可能性は無限大です。この小さな例では、総当たり探索を使って考えられるすべての割り当てを試して、それらが式を満たすかどうかを確認できます。しかし、数百万もの変数と節を含む現実的なアプリケーションでは、総当たり探索は非現実的です。SATソルバーの役割は、複雑なCNF式に対してさまざまなヒューリスティックを適用することで、効率的かつ迅速に満足のいく割り当てを見つけることです。
節のリテラルまたは変数のうち 1 つを除くすべてが False と評価された場合、節が True となるためには、自由リテラルが True でなければなりません。たとえば、以下の不満足な節が次のように評価された場合そして私たちは持っていなければならない 条項のために本当だ。
単位節ルールの反復適用は、単位伝播またはブール制約伝播(BCP)と呼ばれます。
2つの節を考えてみましょうそして条項2 つの節を結合し、両方を削除することによって得られるそしては、2つの節の解決項と呼ばれます。
解決文は、その前提と等しく充足可能である(つまり、解決文が充足可能であるのは、その両方の前提が充足可能である場合に限る)。
シーケント計算に類似した記法は、CDCL を含む多くの書き換えアルゴリズムを形式化するために使用できます。以下は、CDCL ソルバーが適用できる規則であり、満足のいく割り当てが存在しないことを示すか、または、つまり、満足のいく割り当てが存在しないことを示すか、または、満足のいく割り当てを見つけるために使用できます。および抵触条項[ 6 ]
伝播する 式内の句が割り当てられていないリテラルがちょうど 1 つありますで節内の他のすべてのリテラルには false が割り当てられています。、 伸ばすとこのルールは、現在偽である節に未設定の変数が1つだけ残っている場合、その変数を強制的に設定して節全体を真にするという考え方を表しています。そうしないと、式は満たされません。
文字通りのはリテラルのセットに含まれていますそしてどちらもまたははそして、次の真理値を決定します。そして拡張する決定は文字通りこのルールは、課題を強制的に行う必要がない場合は、割り当てる変数を選択し、どの割り当てが選択によるものだったかをメモしておく必要があるという考え方を表しています。そうすることで、選択の結果、満足のいく割り当てが得られなかった場合に、元に戻ることができます。
矛盾条項がある場合それらの否定がは競合条項を設定するにこのルールは、現在の割り当てにおいて、節内のすべてのリテラルが false に割り当てられている場合に、競合を検出することを表しています。
矛盾条項について説明してください形式は先行節がありますそして割り当てられる前にでそして、紛争を解決することで説明する先行節との比較。この規則は、現在の競合節と、競合節内でリテラルの割り当てを引き起こした節から暗示される新しい競合節を導出することで、競合を説明します。
バックジャンプ競合条項形式はどこそして、決定レベルに戻るそして割り当てるそして設定するこのルールは、競合条項によって示される決定レベルにジャンプバックし、より低い決定レベルで競合を引き起こしたリテラルの否定を主張することにより、非時系列的なバックトラックを実行します。
学習した条項を式に追加できますこのルールは、CDCLソルバーの節学習メカニズムを表しており、競合する節は節データベースに追加され、ソルバーが検索ツリーの他のブランチで同じ間違いを繰り返すのを防ぎます。
:=\Phi \cup \{C\}}}{\text{ (学習)}}}
これらの6つのルールは基本的なCDCLには十分ですが、最新のSATソルバーの実装では、探索空間をより効率的に探索し、SAT問題をより速く解決するために、通常はヒューリスティック制御による追加のルールも追加されます。
学習済みの条項は式から削除できますメモリを節約するため。このルールは、節忘却メカニズムを表しており、学習した節のうちあまり有用でない節を削除することで、節データベースのサイズを制御します。式は条項なしそれでも意味する、 意味重複表現です。 :=\Phi '}}{\text{ (忘れる)}}}
ソルバーを再起動するには、課題をリセットしてください。空の割り当てへそして、競合条項を設定するにこのルールは再起動メカニズムを表しており、ソルバーが潜在的に非生産的な探索空間から抜け出し、学習済みの節に基づいて最初からやり直すことを可能にします。なお、学習済みの節は再起動後も記憶されるため、アルゴリズムの終了が保証されます。
対立に基づく節学習は、以下のように機能します。
CDCLアルゴリズムの視覚的な例:[ 5 ]
DPLLはSATの健全かつ完全なアルゴリズムであり、式ϕが充足可能であるのは、DPLLがϕに対する充足割り当てを見つけることができる場合に限る。CDCL SATソルバーはDPLLを実装しているが、新しい節を学習したり、時系列順ではないバックトラックを実行したりすることができる。競合分析による節の学習は、健全性にも完全性にも影響を与えない。競合分析は、解決操作を使用して新しい節を識別する。したがって、学習された各節は、解決ステップのシーケンスによって、元の節と他の学習された節から推論することができる。cNが新しい学習された節である場合、ϕが充足可能であるのは、ϕ ∪ {cN}も充足可能である場合に限る。さらに、バックトラック情報は各新しい学習された節から取得されるため、修正されたバックトラックステップも健全性や完全性に影響を与えない。[ 7 ]
CDCLアルゴリズムの主な応用例は、以下のような様々なSATソルバーです。
CDCLアルゴリズムによってSATソルバーは非常に強力になり、 AIプランニング、バイオインフォマティクス、ソフトウェアテストパターン生成、ソフトウェアパッケージの依存関係、ハードウェアおよびソフトウェアモデル検査、暗号化など、現実世界のさまざまなアプリケーション分野で効果的に使用されています。
CDCLに関連するアルゴリズムとしては、Davis–PutnamアルゴリズムとDPLLアルゴリズムが挙げられます。DPアルゴリズムは解像度反駁を用いるため、メモリへのアクセスに問題が生じる可能性があります。一方、DPLLアルゴリズムはランダムに生成されたインスタンスには適していますが、実際のアプリケーションで生成されるインスタンスには適していません。CDCLは、DPLLと比較して状態空間の探索量が少ないため、このような問題を解決するためのより強力なアプローチと言えます。
{{cite web}}引用には一般的なタイトルを使用します(ヘルプ)