したがって、次のような問題があります。オブジェクトのNカテゴリのセットがあります。各カテゴリには、それぞれ指定された値と重みを持つMオブジェクトがあります。重みが< =ある与えられた容量Wとなるように、各カテゴリから1つのオブジェクトを選択する必要があり、値は最大です。タスクは、branchおよびboundsメソッドを使用して解決する必要があります。私はこの方法がこの状況でどのように動作するはずであるか理解するのに苦労しています。それを私に説明してもらえますか?ブランチとバインドされたメソッドを持つ変更されたナップザック
0
A
答えて
0
アルゴリズムが何をすべきかの簡単な例。
あなたには、[(weight, value)]= [(3, 5),(8, 10),(1, 2),(4, 5)]
の4つのアイテムがあります。 まず重量= [(1, 2),(12, 20),(4, 5),(9, 10)]
あたりが値にそれらを並べ替えると、最大重量はあなたのいずれかの広告や、アイテムをドロップし、ツリーを作る最初の項目から始まる16
です。 ツリーの各レベルで、重みと、値と、まだ3つに残っている値を計算します。ブランチのleft + valueの値が見つかった最大値よりも小さい場合は、そのブランチを閉じます。体重が声を上回っている場合は、枝を閉じます。それがどのように動作するかをの概略以下
。
(value) (0)
(weight) (0)
(value left) (37)
add drop
(1,2) <------- ------>
(2) (0)
(1) (0)
(35) (35)
(20,12) ---------------------------------------------------------------
(22) (2) (20) (0)
(13) (1) (12) (0)
(15) *(15) (15) *(15)
(4,5) -----------------------------------------------------------------------
(27) (22) (25) (20)
(17) (13) (16) (12)
**(10) (10) (10) (10)
(9,10) ---------------------------------------------------------------------------
(31) (20) (35) (25) (30) (20)
(22) (13) (25) (16) (21) (12)
**(0) (0) **(0) (0) **(0) (0)
win
*
分岐が原因値+値は、ツリー内<、最大値を左こと
**
分岐が原因量が声を出して重量以上であることを閉じているために閉じられます。
この方法の利点は、ブルートフォース方式と比較して計算量を削減できることです。重量あたりの価値が最も高いアイテムを開始することによって、ブランチをすぐに終了して計算時間を短縮する可能性が非常に高いです。
うまくいけば、これは役に立ちます
関連する問題
- 1. ブランチとバインドされたナップザックに含まれるアイテムの計算
- 2. ブランチとバインドされたアルゴリズムの実装
- 3. バインドされたItemSourceが変更されたときのSelectedItemの保持
- 4. TypeScriptで名前が変更されたメソッドを持つエクスポートクラス?
- 5. バインドされたコレクションを持つWindow.InputBindings
- 6. バインドされたデータを持つPDO queryString
- 7. 1つのブランチに導入された変更を示すために2つのブランチを変更します
- 8. GIT変更された2つのブランチ間のファイル
- 9. クラスとその祖先へのアクセスを持つバインドされたメソッドのデコレータ
- 10. 変更に応答しないapplyBindingsToNodeを持つ動的バインドされた要素
- 11. PERFORCE:指定されたソースを持つブランチを見つける
- 12. コレクションが変更されたときにバインドされたWPFリストボックスのスクロール位置を保持する
- 13. バインドされたListBox SelectedIndexが変更され続ける
- 14. プロパティが変更されたときにWPF - バインドされたコントロールが更新されない?
- 15. Oracleバインドされた変数
- 16. git - 作成されたブランチのファイルが変更されました。
- 17. 親オブジェクトが変更されたときにUWPがバインドを維持する
- 18. Set Cover問題のブランチとバインドされたアルゴリズム?
- 19. 変更された値と、エンティティにバインドされたSilverlightコントロールの値を更新した人
- 20. ネストされたメソッドを持つメソッド参照のパラメータを持つメソッド
- 21. バインドされたサービスのonStartCommand()メソッド
- 22. GIT:コミットされた変更とプッシュされた変更をブランチから新しいブランチに含めるにはどうすればいいですか?
- 23. 更新されたポップアップウィンドウに再度unbeforeunloadメソッドをバインドします。
- 24. MvxSpinnerリストが変更されたときにMvvmCrossがバインドされない
- 25. Pythonでバインドされたメソッドのインスタンスを見つけるには?
- 26. Mercurialのブランチにコミットされた名前を変更
- 27. git:ブランチ上で変更されたファイルを確認する
- 28. Visual Studioで追跡されたGitブランチを変更する
- 29. バインドされたプロパティが変更された後にツリービューのチェックボックスが更新されない(SL4)
- 30. バインドされたデータが変更されたときにプロパティを更新しないユーザーコントロールの依存プロパティ
これは少し広すぎます。それでも問題が残っている場合は、まずコードを刺す必要があります。問題です –
- 私はこの方法は、このような状況で動作するようになっているか理解していない – Miyavistka
ので、あなたの質問は特にパイソンとは何の関係もありません... – hoefling