2017-06-30 2 views
2

通常のナップザックの問題:重量制限C、アイテム数がValueWeight(V, W)であるとします。 を最大化し、WCになるようにします。この質問では、各アイテムの1つしか持てません。さまざまなアイテムのナップザック

しかし、この問題にはもう一つの欠点があります。あなたは様々なアイテムを持っていたいと思っています。あなたが少なくとも5つ(または任意の数)の異なるアイテムを持ちたいと言っているとします。解決策の項目が5つ未満の場合、その回答は無効です。これを解決するこの問題へのアプローチはありますか?

答えて

0

それはとても重(ほとんどのCの重量で)と多様性(少なくとも5異なるアイテム)がどのように異なるかを確認することができます、制約の単なる別の形です:有効な(空の袋がCを下回っているよう

  • 体重が開始されます)、ダイバーシティは無効(空の袋には5種類の項目が含まれていません)の間に開始されます。

最初に注意しなければならないのは、追加制約があるため、無効/解決不可能という概念が必要であるということです。これは、重み制約を満たす5つの異なる項目がない場合に解決策がないためです。

invalidの結果を返す方法を定義したら、これは標準のナップザック問題に非常に近いものです。再帰では、残りの許容される重量と現在の多様性を渡します。再帰アンカーの場合は、ダイバーシティをチェックし、ダイバーシティが要件を満たさない場合はinvalidを返します。それ以外の場合は通常のナップザック問題のように結果を返します。 invalidの再帰結果を確認し、それに応じて処理してください。

関連する問題