整数の合計の組み合わせの最大化

基本的に、正の非ゼロ数のソートされたリスト、例えば{1,4,5}が与えられれば、可能な別個の組み合わせを最大にするためにリスト内の単一の数字を変更します。上記は、 1つ、4つ、5つ、6つ、9つ、10つ、すなわち6つの組み合わせである。 {1、2、5}となるように4から2に変更すると、1,2,3,5,6,7,8、つまり7つの組み合わせが得られます。

私は組み合わせの量を最大にするためにリストの単一の番号に追加するために番号xを見つける必要があります。 xは最小のabslout値でなければなりません。加算または減算することができます。

私は何度も指数関数的に実行される列挙によってブルートフォースを使ってやってきました。したがって、より大きな問題では実現不可能です。今私はそれをすばやく行う必要があります。

組み合わせの数を確認するだけで指数関数的な時間ですか?そして、私は正確な最適解を見つけなければなりません。

この問題を解決するためのキーワードは何でしょうか?私は再発を見つけようとしたので、動的プログラミングと何らかのブランチを使って爆発を制限することができましたが、それは役に立たないです。

私は、切断工場サブセットの合計など、いくつかのアイデアを見つけることができるかどうかを確認するための他の組み合わせ最適化問題がたくさんあります。しかし、私はそれを取得しません。単に解を検証することは指数関数的な時間です。

14
(+1)興味深い質問。スペルや文法にもっと多くの努力を払うだけで、3人の他の人がそれを編集して形にする必要はありません。
追加された 著者 NPE,
2 ^ | numberset |あなたの上限です(空のサブセットを含む場合)。それを確実にする1つの方法(明らかに常に可能であるとは限りません)は、セット内のすべての数値を特定の整数の異なる冪にすることです。
追加された 著者 bdares,
あなたは、Excelのソルバーを使用して見て、あなたのためにハードワークを行うことができます。 合計を作るための数字の最良の組み合わせを見つけた同様の質問を参照してください。
追加された 著者 brettdj,
セット内の別の番号に追加される番号の組み合わせを最小限にするという目標はありますか?たとえば、最初のセットは、2つの数字がすでに3番目の数字に加算されているためにのみ改善できます。
追加された 著者 Gareth,

2 答え

これはちょうどそれに刺すようです、私はコードを書いていないか、それについても何の証拠も試していません。

あなたは1つの値だけを変更することに限定されているので、私は、あなたがしようとしていないことを知っているが、私を聞いている組み合わせを排除する最も簡単な方法は、リスト内の別の番号に追加します。したがって、 1 + 4 = 5 であなたの組み合わせで失われるため、あなたの例 1 4 5 したがって、私は何の番号のペアの結果セットの別のメンバーになるのかを照会します。これは、各番号を他のすべての番号と比較するときに O(n ^ 2 lg n)であり、そうすることで(ソートされた)番号のリストを検索して存在するかどうかを調べます。

あなたの候補は「衝突」の数が最も多い候補です。衝突の可能性が最も高い番号にゼロ衝突番号を設定すると、最終結果が最大限に増加します。そこから、非衝突番号にするために、それに追加/減算する数字を見つけることが問題になります。私はこれを行うための適切な方法を働いていないが、私はそれが多項式時間で動的プログラミングで行うことができると思われる。

あなたがネクタイを持っている別の深刻な問題があります。同時に検索する n の関係が最大になるので、これは最悪の場合、複雑さに余分な * n を追加することになると思います。したがって、pがある一定の多項式である n ^ p 時間で上記の問題を計算できると仮定すると、問題全体は n ^(p + 1)時間。

これは確かに問題の厄介なものであり、私はこれが何らかの光を当てることができたことを願っています。 2ヶ月後、誰かがそれに刺す必要がありますよね? :)

1
追加された

問題は、nの任意の値に対して、nの正の整数が最大の組み合わせ数を与えるものであると仮定します。この質問に対する答えは、2 ^ 0,2 ^ 1,2 ^ 2、... 2 ^(n-1)です。

証明は簡単です:

  • このセットでは、2 ^ 0と(2 ^ n)-1の間のすべての整数を作成できます。

  • このセットの合計は(2 ^ n)-1です。

{1、2、4}を考えてみましょう。組み合わせは、1,2,1 + 2,4,1 + 4,2 + 4,1 + 2 + 4です。 1 + 2 + 4 = 7となる。

あなたは2 ^ 0、2 ^ 1、...にできるだけ似ているようにセットを作ることによって、どのセットでも組み合わせの数を最大にすることを提案することは合理的です。

私は、「できるだけ似ている」ということを意味していません。しかし、{1,2,5}は{1,4,5}に近い{1,2,4}に近い。これはあなたがブルートフォースによって調査した他のセットにも当てはまりますか?

私は{1,2,5}が{1,2,4}から離れていることに気付き、組み合わせは1つ少ない。これは偶然でしょうか?

これらの観察が試験に耐えば、私は彼らが証明するのが難しくないと思う。あなたがそれらを証明できない場合でも、彼らはあなたに働くアルゴリズムを与えるかもしれません。

0
追加された
多分、私はどのx ^ iシリーズも同じ最大数の組み合わせを持つことに言及すべきでした。 2 ^ iシリーズは、その組み合わせが連続する一連の整数であるという点でのみユニークです。実際、x(n)+ x(n + 1)
追加された 著者 Tony Dallimore,
私はあなたの証拠が完璧だとは思わない。任意の x のシリーズ x ^ i には、一意のパワーセット合計数があります。
追加された 著者 Mr.Wizard,