「置換」は正確に正しい単語ですが、私はList
〜40 Objects
というシナリオがあります。それぞれ異なるObject
は異なるvalue
とcost
を持っています。オブジェクトの順列の最小コストを求める。どのようにメモリの問題を克服するには?
value
は1と5の間にあります。targetValue
を超えるオブジェクトのリストを結合しようとしています。合計の合計がcost
で、その組み合わせが返されます。この組み合わせには、List
にオブジェクトの1つの複製が含まれている可能性があります。
たとえば、私のオブジェクトのリストが{a、b、c、d}の場合、 はとなります。{a、a、a、a、a、a、a、a、a}です。但し、の順序はまたの問題であることに注意してください。 {a、a、b}は{a、b、a}とは異なる合計値を持つことがあります
現在、私は解決策を強要しようとしています。しかし、40!組み合わせ、私はすべての異なる "順列"を追跡しながらメモリが不足しています。
私はまだ精度のためにすべての組み合わせを実行することをお勧めしますが、計算を実行する時間が問題にはなりませんが、前にも述べたように、最大の問題はメモリです。
現在のコード:(incompleteListは初めから始まるがオブジェクト)
while (incompleteList.size() > 0)
{
Container container = incompleteList.get(0);
for (myObject o : objectList)
{
Container newAdditionContainer = new Container(container);//copies the list of objects into a new container
newAdditionContainer.addMyObject(o);
if (newAdditionContainer.getTotalValue()) < targetValue)
{
incompleteList.add(newAdditionContainer);
} else {
completeList.add(newAdditionContainer);
}
}
incompleteList.remove(container);
} //code then loops through completeList and grabs the container with the cheapest cost,
//but in actuality that code hasn't been able to run yet.
私はかなり確信している以上の仕事ができる、それが完了することができたならば(それはカントによるメモリへの);どのようにアルゴリズムを変更して最低コストを取得し、メモリ制限内にとどめることができますか?
成熟前申請のお詫び私はdownvoteがあったものと仮定していますか? – DoubleDouble
私はその仕事があまり明確ではないと思います。注文が重要なときに「コスト」と「価値」の合計はどのように計算されますか?それぞれのオブジェクトが 'cost'と' value'を持つように指定すると 'List'は' List
私は謝罪します。計算に入る方程式は問題の範囲を超えていると思います。 'Container'クラスは含まれているオブジェクトの値を計算でき、' cost'はすべてのオブジェクト間に単純に追加されますが、実行時まで不明です。 – DoubleDouble