負でない整数のリストが与えられた場合、リストN
の数値の合計がX
残りの と等しいかどうかをチェックするアルゴリズムを提案しますN-X
。
言い換えれば、集合全体を含む部分和問題のより単純なケースです。
試みられた解決策
リストの要素を降順に並べ替えます。変数SUM
を最初の要素に初期化します。最初の要素 (最大、 ) を削除しa(1)
ます。現在のリストの要素を示すa(n)
ようにします。n-th
リストには複数の要素がありますが、
またはのいずれか最も近いものに等しく
SUM
します。(最も近い平均が最小である場合)。SUM + a(1)
SUM - a(1)
a(2)
|a(2) - SUM_POSSIBLE|
を削除し
a(1)
ます。
がまたはにSUM
等しい場合、線形和が存在します。-a(1)
a(1)
問題
上記のアルゴリズムを解決できないようです。正しい場合は、証明が必要です。それが間違っている場合 (より可能性が高い)、線形時間でこれを行う方法はありますか?
PS: 私が何か間違ったことをしているなら、許してください:S