Subset_sum_problemの解決に行き詰まっています。
整数のセット(S)が与えられた場合、合計が与えられたtarget(T)に等しい空でないサブセットを計算する必要があります。
例:与えられたセット、S {4、8、10、16、20、22}ターゲット、T=52。
制約:集合Sの要素数Nは8に制限されています。したがって、Nの上限が小さいため、NP時間解は許容されます。時間と空間の複雑さは実際には問題ではありません。
出力:
合計がT=52に正確に等しい可能なサブセットは次のとおりです。
{10、20、22}
{4、10、16、22}
Wikiや他のいくつかのページで提供されている解決策は、そのようなサブセットが存在するかどうかをチェックしようとします(YES / NO)。
上記の例で概説したように、考えられるすべてのサブセットを計算することは実際には役に立ちません。
このリンクでの動的計画法のアプローチは、そのようなサブセットを1つ提供しますが、そのようなサブセットはすべて必要です。
明らかなアプローチの1つは、力ずくの力を使用してすべての2 ^ Nの組み合わせを計算することですが、それが私の最後の手段になります。
私はいくつかのプログラム的な例(できればC ++)またはイラスト/例でそのようなサブセットを計算するアルゴリズムを探していますか?