2016-12-28 10 views
0

私は動的プログラミングアルゴリズムで解決できるボックススタッキング問題に似た問題を扱っています。私はここでそれについての記事を読んでいますが、私はDPアプローチを理解するのは難しいですし、それがどのように機能するのかについていくつか説明したいと思います。ここでの問題は手元にあります:オブジェクトスタッキング、動的プログラミング

Xのオブジェクトを考える

、自重「W」と強度「S」、どのよう 多くは、あなたが互いの上に積み重ねることが可能で、各? の体重は、その体重を上回っていても、その体重の合計は、 の体重を超えていない限り、持ち運びできます。

私は、それが最適な部分構造を持っているが、私を混乱させる部分的な部分問題があることを理解します。私はそれが何回も同じことを計算するかを見るために再帰ツリーを作成しようとしていますが、関数が例えば1つまたは2つのパラメータを取るかどうかわかりません。

+0

私はその質問がhttp://cs.stackexchange.com/に属すると思います。 – user28434

+0

この問題の原因を示すことができますか(ソースに対して[適切な帰属](http://cs.stackexchange.com/help/referencing)を提供しています)?あなたが参照しているSOの投稿にリンクし、あなたの具体的な混乱が何であるか教えてください。また、何を試しましたか? [動的プログラミングに関する参考資料](http://stackoverflow.com/tags/dynamic-programming/info)を参照して、どのような進歩を示したのかをお知りになりたいでしょう。あなたが試したサブ問題の選択肢は何ですか? –

+0

クロス掲示:http://cs.stackexchange.com/q/68049/755、http://stackoverflow.com/q/41361652/781723複数のサイトに同じ質問を投稿しないでください(http://meta.stackexchange.com/q/64068)。誰も時間を無駄にすることなく、それぞれのコミュニティは答えに正直な打撃を与えるべきです。 @ user28434、別のサイトを提案しようとしている場合は、クロスポストしないように人々に知らせてください(そうでなければ悪い経験を残します)。あなたは他の場所でより適していると思えば、質問を削除し、他の場所に投稿するように提案することができます。 –

答えて

2

この問題を解決するための第一歩は、最高から最低の強度の順に並べられたボックスで最適なスタックを見つけることができることを証明しています。

次に、強度でボックスをソートし、最適なスタックに含まれているものを特定するだけです。

再帰的サブ問題には2つのパラメータがあります。スタックの最上部に置くことができる最善のスタックを見つけます。

1

良いDPソリューションが存在する場合、それは2つのparamsを取る:未訪問のオブジェクトの

  • 訪問したオブジェクトの数や、未訪問のオブジェクトの数
  • 総重量あなたが現在訪問したオブジェクトの(重量余裕が問題ではありません。 )

動作させるには、次のオブジェクトの上にオブジェクトを配置することは役に立たない、順序を見つける必要があります。つまり、この順序付けに違反するすべてのソリューションに対して、この順序付けに従うもう1つのソリューションがあり、それはより良いか同等です。

選択した注文が存在することを証明し、明確に定義する必要があります。体重には何らかの意味があるので、Matt Timmermansによって提案された、力による単純なソートは十分ではないと思います。しかしそれは校正部分です...

関連する問題