加えて、01ナップザック問題の動的なプログラミング他の解決策はありますかですか?

爆発の検索方法と貪欲法もソリューションズ01リュックサックが、制限があります。

ソリューション01バックパックバースト検索方法

例:容量バックパックM = 10、物品A = [2、3、5、7]、商品Vの値= [1、5、2、4]のサイズ

ソリューションバースト検索:列挙が撮影したすべてのオブジェクトを取られたりされていない、1は取らないし、0を表し取ります

画像

バースト検索アルゴリズムの制限

画像

01バックパック貪欲ソリューション

最高値を取ります:

  • M = 2、A = [1、1,2]、V = [2、2、3]
  • 貪欲答え:3、正解:4

最軽量を取ります:

  • M = 2、A = [1、1,2]、V = [1、1,3]
  • 貪欲回答:2、正解:3

単位あたりの最高値を取ります:

  • M = 3、A = [1、1,3]、V = [2,2、5]
  • 貪欲回答:4、正解:5

あなたが見ることができ、すべての貪欲は間違っています!

だから、どのように動的なプログラミングソリューション01バックパックそれ?

例1:

容量バックパックM = 10、物品Aの大きさ= [2、3、5、7]、商品Vの値= [1、5、2、4]。

最大値jの容量を取ることができる場合には、前者からi番目の記事を記録するために、アレイを使用して:

画像

DP [i] [j]は最大値にJの容量は、取ることができる場合には、前にi番目のオブジェクトを表します

あなたは、i番目のオブジェクト、DPの値をとる場合は、[I - 1] [JA [I]] + V [i]が(JA [I]> 0)

i番目の目的は、DPの値を取られていない場合は[I - 1] [J]

状態遷移:DP [I] [J] = MAX(DP [I - 1] [J - A [I] + V [i]は、DP [I - 1] [J])

他の二つのサブ問題実際には、私たちが知っている必要があります01バックパック、ナップザック問題に加えて - 。フルバックパックと複数のナップザック問題、残りの一部が変形し、組み合わせの3種類があります。

あなたはより徹底的にこの知識を習得したい場合は、「聞くことができるバックパック四講義」、基本的には〜に覆われ、ブラシ質問されています

公開された452元の記事 ウォンの賞賛393 ビュー190 000 +

おすすめ

転載: blog.csdn.net/JiuZhang_ninechapter/article/details/104075003