SATソルバーでこのサブセットカバーの問題を解決するのは実現可能ですか?
-
28-09-2020 - |
質問
問題は、 $ \ mathcal {s} $ を見つけることです。 $ \ {1のサブセットの最小収集2つの条件が満たされるような\ dot、17 \} $ :
-
$ s subseteq \ mathcal {s} $ の場合 $ |= 6 $ ;
$ a \ subseteq \ {1、\ dots、17 \} $ の場合 $ | a |= 3 $ 、 $ \ \ mathcal {s} $ が $ a \ subset sに存在します。 $
$ s \ subseteq \ {1、\ dots、17 \} $ の $ | s | s |= 6 $ 、変数 $ x_s $ を導入します。そして、 $ a \ subseteq \ {1、\ dots、17 \} $ $ | a | a |= 3 $ 、節を紹介します
$$
\ vee_ {s:a \ subseteq s、| s |= 6} x_ {s}
$$
それから、プリンシパルでは、SATソルバーを使用して、すべての句を満たすためには、$ X_S $ の最小数を見つけることができます。
これは $ \ binom {17} {6}= 12376 $ 変数、 $ \ binom {17} {長さの句 $ \ binom {17-3} {3}= 364 $ 。
実際にSATソルバーを使用して経験がほとんどありません。これは実際に私のラップトップを試着する価値があるか、まったく希望がないのですか?
セットカバーに関する多くの研究があります。パラメータ(17,6,3)の問題を解決しようとするのは私が野心的であったようです。
は純粋な土の中ですべてを書きようとしました、そしてそれはz3よりもCADicalを使ってより速いです。
解決
SATを使用した最適化は通常、MIN SATの代わりにMAXSATと呼ばれます。特に、MAXHSとRC2など、「加重部分MAXSAT」のソルバーを探すことをお勧めします。
あなたが最新のMaxsat-Solversの文脈ではかなり小さい問題のサイズであるので、はい、試す価値があります。ソルバーが効率的に機能するという保証はありません。
他のヒント
SATで、実行可能なものと何が悪いのかを予測することは困難です。それは試してみる価値があります。
MINSATの代わりに、最初にバイナリ検索を使用して、 $ n= | \ mathcal {s} | $ 、セット数必要。 at-most- $ n $ - out-12376 $ x_s $ 変数いくつか
所属していません cs.stackexchange