よし概要ナップザックの問題と?
私はナップザック問題
http://en.wikipedia.org/wiki/Knapsack_problem
に見ていると私はそれは私が私のプロジェクトのために必要なものですけど、私のプロジェクトの複雑な部分は、私は複数必要ということでしょう主袋の中に袋を入れる。
すべての「バッグ」を保持する大きなナップザックは、「バッグ」をx個だけ持ち運ぶことができます(例として9と言うことができます)。各バッグには異なる値があります。
- 重
- コスト
- サイズ
- 容量
というように、これらの値の全てが整数です。 0-100と仮定します。
インナーバッグにもタイプが割り当てられ、そのタイプはアウトサイドバッグ内に1つしかない場合がありますが、プログラム入力には同じタイプの複数が与えられます。
メインバッグが保持できる最大の重量を割り当てる必要があり、小さなバッグの他のすべてのプロパティを重み付け値でグループ化する必要があります。
例
外袋:
- は9つの小さな袋
- 98を超えない重量を保持することができます
- [5側のいずれかを与えるか、または取る]それぞれのいずれかを保持する必要がありますタイプは、一度に各タイプのうちの1つだけを保持することができます。
インナーバッグ:
- コスト、100%
- サイズで加重、67%
- 能力で加重、44%
プログラムで加重複数の袋の入力が与えられ、次に小さい袋の組み合わせを試してlaに入ります入力に応じて複数のソリューションがあり、プログラムは私にとって最高のソリューションを出力します。
私はこれに接近するための最善の方法があると思います。
私はJavaまたはC#でプログラミングします。私はPHPでそれをプログラムしたいと思うが、私はアルゴリズムがWebサーバにとって非常に非効率的であることを恐れている。あなたは
-Zack
へ
リンクだから、本当に内側の袋を埋める気にしませんか?バッグ(アウターバッグ)に同じタイプの複数のアイテム(インナーバッグ)を入れることができないという追加の制約を受けて、アイテム(インナーバッグ)をバッグ(アウターバッグ)にフィットさせたいだけです。右? –
すべての内側の袋を外側の袋に詰め込む必要がありますか、または1つの外側の袋のみを充填する必要がありますか?それではビンパックまたはナップザックですか? –
はい、外側の袋には重すぎる重量が含まれているという制約があります。このタイプの問題をさらに検討していましたが、これはビンの梱包またはナップザック、またはその両方のようです。 将来、私は内側の袋を満たす必要があるかもしれませんが、まずこの問題に集中したいと思います。 –