ナップザック問題の動的プログラミングのJava実装

 

解決の手順:

1)モデル

2)制約を探すわずか3商品、バックパックの重量10

3)再発の関係を見つけるために

V(I):

Wは、I 体重

V I、J ):バックパックの電流容量J 、前のI 番目の最良の組み合わせ値が物品に対応

現在の製品のために2つのケースがあります。

①現在の製品重量は、残りのバックパックの重量よりも大きい、中に入れません。次いで、V I-1、J)= V(I、J)

②現在の製品重量は、残りの量のバックパックよりも小さいが、必ずしも最適解に到達することができるインストールされていない、とリフィルは、選択の間に設置されていません。マックス{V(I-1、 j)は、V(I、JW(I))+ V(I)}

前記 V(I-1、Jは、。) インストールされていない示し、V(I、JW(I))+ V(I)がインストールされ、バックパックの残りの重量減少を表し(I)Wは、その値が増加するV(i)を。これは、漸化式を、次のとおりです。

J(I)>(I)W:V(i、j)はV(I-1、j)を=

J(I)<(I)W:最大{V(I-1、j)は、V(I-1、JW(I))+ V(I)}

注:なぜ場合は、このような動的計画として解決に行くことができ入れあり最適の原理は、 V(I-1、JW(i)は)以前の決定によって引き起こされる状態で、単に存在記事です入れて、私は比較を行う必要があることができ、前の比較は、バックパックは袋から、新たな重みが変更されている追加し、中に入ると、最大値を選択した2例を保持しているためではありません最適解のうち、すでにでした。意思決定の背後に最適な戦略を構成する必要があります。2つのケースは、最良の結果を比較しました。

 

おすすめ

転載: www.cnblogs.com/had1314/p/11210714.html