私は考えていたので、ナップザック問題の変形に対する動的プログラミングアルゴリズムの作成
ナップザック問題を変形したいと思っていました。
さまざまな重み付け/値を持つアイテムで、元の問題を想像してください。
私のバージョンは、通常の重み付け/値とともに「グループ」値を含みます。
例えば、 アイテム1 [5キロ、$ 600電子] アイテム2、私が確認するために、ナップザック問題をコーディングする方法を今[1キロ、$ 50食品]
、このようなアイテムのセットを持つ、その1つの項目の最大値から各「グループ」が選択されます。
注:
- あなたは、各グループ内の複数の項目
- あなたはまだ値
- 最大化、重量を最小限に抑えているがありますが、そのグループ
- から項目を選択する必要はありませんグループの量は、その値と共に事前定義されています。
私はこの段階でコードの草稿を書いています。私は動的アプローチを採用しました。私は定期的なナップザック問題のダイナミックなソリューションの背後にあるアイデアを理解していますが、これらの「グループ」を組み込むためにこのソリューションを変更するにはどうすればよいですか?私は、今のところ持って、それはそれはそれは、これを解決するたびにあるグループから対応するすべての項目を削除するようにそれを追加するために必要なものだ
KnapSackVariation(v,w,g,n,W)
{
for (w = 0 to W)
V[0,w] = 0;
for(i = 1 to n)
for(w = 0 to W)
if(w[i] <= w)
V[i,w] = max{V[i-1, w], v[i] + V[i-1, w-w[i]]};
else
V[i,w] = V[i-1, w];
return V[n,W];
}
。 i番目の要素
V [I、W、S]のカテゴリ:
グループアイテムを状態に追加してください! – quasiverse
コンビナトリアル最適化の問題としてそれを解決することはどうですか?各アイテムについて、アイテムを選択するか、アイテムを選択しません。これを解決するには、ブランチ検索とバインド検索を使用するとよいでしょう。 – ysdx