Алгоритм выбора / сортировки (рюкзак)

Я столкнулся с проблемой, с которой сталкиваюсь. У меня есть база данных с предметами, которые имеют значение «цена». Они связаны с различными «раундами», а «раунды» имеют «общее значение», где все эти значения «цена» этих элементов, вместе взятые, определяют «общее значение». Итак, я хочу выбрать, какие предметы отдать, а какие сохранить. Предполагается, что будет сохранено от 5% до 10% от общего значения, а остальное будет отдано.

Я мог бы просто выбрать все элементы в этом раунде, отсортировать по значению «цена», от низшего к высшему и затем:

if ($totSave < $totVal*0.1) { addToSaveArray($item); $totSave += $item['price']; }

Но у меня также есть список, который должен расставить приоритеты для элементов, настроенных так:

$prioList[] = array("name" => $list[$i], "price" => $price);

Итак, каков наилучший подход к этому? Должен ли я пройтись по $ prioList, проверить, совпадает ли какое-либо имя, а затем добавить цену к $ totSave или как вы думаете?

Помощь будет ОЧЕНЬ признательна!

1

Решение

Джим попросил меня опубликовать ответ, вот что я делаю 🙂 Так как это проблема с рюкзаком, я погуглил и нашел это:
https://github.com/acmeism/RosettaCodeData/tree/master/Task/Knapsack-problem-0-1/PHP

Мне также были нужны индексы, поэтому я выбрал верхний (глючный). (Невозможно опубликовать ссылку из-за низкой репутации …)

Так как тот был глючным, я добавил функцию «попробовать». Вот:
http://pastebin.com/AycE4Kzm

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]