マルチセットを、合計が等しい 2 つのセットに分割する必要があります。たとえば、マルチセットが与えられた場合:
1 3 5 1 3 -1 2 0
2 つのセットを出力します。
1) 1 3 3
2) 5 -1 2 1 0
どちらも合計すると 7 になります。
Z3 (smt2 入力形式) と「線形演算ロジック」を使用してこれを行う必要があります。これは次のように定義されています。
formula : formula /\ formula | (formula) | atom
atom : sum op sum
op : = | <= | <
sum : term | sum + term
term : identifier | constant | constant identifier
正直なところ、これをどこから始めればよいかわかりません。アドバイスをいただければ幸いです。
よろしく。