標準的なナップザックの問題はダイナミックプログラミングで解決できますが、私の考えを少しでも解消しようとしていますが、思ったより難しいかもしれません。相互排他的なアイテムを含むナップザック
オリジナルナップザック問題はサイズW
、そして最高の合計値とのナップザックに収めることができるアイテムのサブセットを見つける重量w[i]
と値v[i]
を持ち、項目のリストでナップザックを与えられたということです。
これは動的プログラミングのO(Wn)
で行うことができます。n
はアイテム数です。
m
制約を追加しようとした場合、それらのそれぞれが唯一の相互排他的に撮像することができるアイテムのペアである(つまり、アイテムAとアイテムBの制約が存在する場合は、その後、私は取ることができ
いずれか1つではなく、両方ではない)
このような制約の下で、この問題は動的プログラミングによって解決できますか?O(Wn)
?
まだ消化していますが、私にとっては非常に妥当な音です...私の心を払拭するために、各拘束がペアではなく、それぞれのアイテムが相互に排他的でなければならないアイテムのセットO(Wn)時間を持つ同様のアルゴリズムを使用しましたか? – shole
@shole制約が重複していない限り(複数の制約にアイテムが存在しない場合)、このアプローチは制約内の複数のアイテムに拡張できます。 –
ありがとう、私はこのコンセプトを使用して簡単なコードを実装しようとしています。 – shole