変数が(a,b,c,d,e,f,g)
のCNF式があるとします。 SATソルバを使用して(d,e,f)
の割り当てを見つけるにはどうすれば{a,b,c,g} = {1,0,0,1}
と{a,b,c,g} = {1,1,1,1}
が与えられますか?それが1つの仮定だった場合、{d,e,f}
の代入を見つけるためにソルトソルバを呼び出すことは簡単です(たとえば、CNFに単位句を追加することによって)。しかし、複数の仮定がある場合はどうすればよいでしょうか?これは可能ですか?複数の仮定を用いて解く
1
A
答えて
2
ここでは、ハロードがあなたに説明しようとしていたことについてのステップがあります。変数a、b、c、d、e、f、gにはCNF式Fがあります。
- Gに重複G.
- を呼び出し、式を複製し、BB、CCとC、およびGGとGとB、A-Aと変数aを置き換えます。
- (a、b、c、g)=(1,0,0,1)になるようにFに単位節を追加します。
- (aa、bb、cc、gg)=(1,1,1,1)となるようにGに単位句を追加します。
- 式FとGを連結し、結果をSATソルバに入力します。
ソルバーは、(a、b、c、g)と(aa、bb、cc、gg)のプリセット値と一致する満足のいく割り当てを見つけます。
0
実用的な答えが必要なのか、またはが面白いかはっきりしない理論的な答え。私は実用的に行くつもりです。
仮定の各セットについて、その仮定のセット(example)の仮定を使って解をサポートするソルトソルバーを呼び出します。同じソルバーインスタンスでこれを順番に実行します。
長所:
- あなたは仮定の相互排他的なセットの充足を混在させないでください。仮説Aの集合を式Fに、他の集合A 'をFについてunsatとすると、ソルバへの各呼び出しは、それらの仮定が満たされているかどうかを示します。
- 2回目のコールでは、最初のコールからの学習済みの句が残ります。中間学習句は同じ変数について話します。 (注:もし、Fが変数Xを超え、Gが変数Yを超えていて、Yが変数を共有していない、別の式
F & G
を持っているならば、resolution - CDCLで使われている推論規則はFとGを混ぜた句を得ることができません。 。2つの混合代わりの1つのインスタンスがUNSAT証明し、早期に停止する方がはるかに簡単でない限り、それらを離れて分割する明白な利益はありません)
短所:
- インスタンスAがで解決することは困難である場合練習ではありますが、A 'は自明ですが、Aにはまってしまうかもしれません。
- 2つ以上のインスタンスがある場合、あなたはできるだけ早く解決したいと思っています。
これはわかりやすい回答ですが、試してみる価値があります。それが失敗すれば、あなたはw.r.tを解決するような魅力的なことをやってみることができます。仮定はA union A'
であり、それがAのこの戦略に落ち着かず、A 'の戦略に落ち着いていない場合に限る。これはあなたの例では役に立ちません。(a,b,c,g) = (1,0,0,1)
と(a,b,c,g) = (1,1,1,1)
は互いに排他的です。
関連する問題
- 1. file_get_contents - "定義されていない定数コードの使用 - "コード "と仮定
- 2. htaccessを使用して複数の仮想サブドメインにリダイレクト
- 3. Fipyで複数のPDEを解く
- 4. 使用 - 仮定「OAUTH_AUTH_TYPE_FORM」 - 仮定「OAUTH_AUTH_TYPE_FORM」
- 5. 未定義定数の使用SQLSRV_SQLTYPE_VARCHAR - 'SQLSRV_SQLTYPE_VARCHAR'を仮定
- 6. は、MATLABで複数の変数を解くことは、「未定義のオペレータエラー」
- 7. Flexを使用した複数の解像度のターゲット設定
- 8. opencart用にLinux上に仮想ホスト/複数のストアを設定する
- 9. 複数の線形回帰:仮定が満たされていても有意でないベータ数
- 10. PHPエラー変数エラー:Notice:定義されていない定数の使用FirstName - 'FirstName'と仮定
- 11. 未定義の定数値の使用 - 仮定された '値'
- 12. 未定義の定数DB_USERの使用 - 「DB_USER」と仮定
- 13. 複数の宣言エラー - 仮想関数
- 14. APIを使用している仮想ゲストのポートを開く
- 15. PHP 7.0.5:未定義定数の使用FTP_BINARY - 'FTP_BINARY'と仮定
- 16. Notice:未定義定数STDOUTの使用 - 「STDOUT」と仮定
- 17. 仮想関数とポインタの使い方を理解する
- 18. kombuで複数の仮想ホストからキューを使用する
- 19. 使用 - 仮定「ステートメント」
- 20. 定義されていない定数SERVICE_HTTP_PATHの使用 - YII2のSERVICE_HTTP_PATHと仮定しました
- 21. 単一のWebアプリケーションを使用して複数の仮想ディレクトリにアクセスする
- 22. ガンマパラメータ推定を数値的に解く
- 23. 複数のpython仮想のenv
- 24. 仮想マシン/インスタンスの複数の展開
- 25. 複数の仮想継承の曖昧
- 26. 複数のスレッドの仮想アドレス空間?
- 27. WPFでの複数レベルの仮想化
- 28. 定義されていない定数の使用DIR_CACHE - 'DIR_CACHE'と仮定しました
- 29. PHP Notice:定義されていない定数phpの使用 - 仮定された 'php'
- 30. sikuliを使用して複数回使用される特定のドロップダウンアイテムをクリックしてください
これは、今のところ、私にはほとんどわかりません(たとえば、bは0と1の両方にはなりません)。 – harold
a、b、c、d =(1,0,0,1) a、b、c、d =(1,1,1,1)は2つの「観測」である。これらの観測値が一致するように(d、e、f)にどのように値を割り当てることができますか? –
その編集はそれを再び混乱させました。これは、「abcgが1001か1111のいずれかになり、どちらかが満足できるモデルを得ることができます」よりも複雑なことを意味しますか?または、同じdefがセット内のすべてのabcgベクトルに対して機能する必要がありますか? – harold