簡単な概要
ナップザック問題について調べてみました
http://en.wikipedia.org/wiki/Knapsack_problem
それが私のプロジェクトに必要なものであることはわかっていますが、プロジェクトの複雑な部分は、メインの袋の中に複数の袋が必要になることです。
すべての「バッグ」を収納できる大きなナップザックは、x 個の「バッグ」しか持ち運べません (例として 9 個としましょう)。各バッグには異なる値があります。
- 重さ
- 料金
- サイズ
- 容量
など、これらの値はすべて整数です。0から100までと仮定しましょう。
内側のバッグにもタイプが割り当てられ、プログラム入力には同じタイプの複数が与えられますが、外側のバッグ内にはそのタイプの 1 つしか存在できません。
メイン バッグが保持できる最大重量を割り当てる必要があり、小さいバッグの他のすべてのプロパティは重み付けされた値でグループ化する必要があります。
例
アウターバッグ:
- 小さめのバッグなら9個収納可能
- 体重が98以下 [ギブオアテイク5]
- 各タイプを 1 つ保持する必要があり、一度に各タイプを 1 つだけ保持できます。
インナーバッグ:
- コスト、100% で加重
- サイズ、加重 67%
- 容量、加重 44%
プログラムには複数のバッグの入力が与えられ、小さなバッグの組み合わせを大きなバッグに入れる必要があります。入力に応じて複数のソリューションがあり、プログラムは最適なソリューションを出力します。
私がこれにアプローチするための最良の方法は何だと思いますか。
JavaまたはC#でプログラミングします。PHP でプログラムしたいのですが、Web サーバーにとってアルゴリズムが非常に非効率的ではないかと心配しています。
あなたが与えることができる助けをありがとう
-ザック