1

私はアルゴリズムに不慣れで、現在YouTubeのビデオチュートリアル/講義と本を使用して勉強しています。最初にビデオを見てから本を読み、最後に本から質問をして、トピックを正しく学習したことを確認します。私は現在、欲張りアルゴリズムに取り組んでおり、非常に混乱しています。

本の中にはいろいろな問題がありますが、特定の問題を理解して答えるのに苦労しています。

まず、問題が発生します(テキストをコピーしました)。

サイズが{x1;のn個のオブジェクトのセットがあります。x2;.....xn}と容量Bのビン。これらはすべて正の整数です。これらのオブジェクトのサブセットを見つけて、それらの合計サイズがB以下になるようにしますが、可能な限りBに近づけます。

すべてのオブジェクトは1次元です。たとえば、オブジェクトのサイズが4、7、10、12、15、およびB = 20の場合、合計サイズが19(または同等に7と12)の4と15を選択する必要があります。次の欲張りアルゴリズムのそれぞれについて、反例を作成して、それらが最適ではないことを示します。例をできるだけ悪くするようにしてください。「悪さ」は、最適なソリューションと貪欲なソリューションの比率によって測定されます。したがって、最良の解の値が10で、欲張り解の値が5の場合、比率は2になります。

次の場合、どうすればよいですか?

1)このオブジェクトとすでに選択されている他のすべてのオブジェクトの合計サイズがBを超えないように、常に最大サイズのオブジェクトを選択します。残りのオブジェクトについてもこれを繰り返します。

4

2 に答える 2

1

問題の次のインスタンスを想定します。

サイズのボックスがあり2n、1つの要素はサイズn+1で、残りはサイズnです。

最適なのはサイズの2つの要素であることが簡単にわかりますがn、貪欲な場合はサイズの1つの要素が得られますn+1

それぞれに当てはまるのでn、実際には、少なくともこの貪欲なアプローチを使用して、望ましい比率が得られます2

于 2012-03-06T18:18:26.257 に答える
0

これは、各アイテムのサイズが異なるが値が同じである0-1ナップサック問題に似ています。つまり、1つのアイテムは、そのサイズ以外のビンに配置されることを優先しません。コードでは、各アイテムを調べて、ビンの容量を超えずにビンに入れるかどうかに関係なく、最大合計サイズを計算する必要があります。

于 2017-04-19T12:45:09.720 に答える