Мне не удалось сопоставить эту проблему с какой-то канонической, и я хотел бы, чтобы некоторые руководства создали / использовали алгоритм и решили его.Описание выглядит следующим образом:
У нас есть люди, которые хотят завтракать.Каждый может заказать любое количество кофе, сока и тостов.Мы накапливаем заказ для всей группы.
InitialOrder = { C1, J1, T1 } with C1, J1, T1 being integer non-negative numbers.
Каждый компонент имеет заданную цену, поэтому общая цена начального заказа составляет
InitialPrice = C1 * Pc + J1 * Pj + T1 * Pt with Pc, Pj, Pt being rational positive numbers
Кафетерий имеет также «меню завтрака», состоящее из комбинаций стандартных элементов
full breakfast = coffee + juice + toast
normal breakfast = coffee + toast
bread breakfast = 2 toast
Выбор этих меню дешевле, чем выбор каждого компонента отдельно, поэтому у нас есть
Pf < Pc + Pj + Pt
Pn < Pc + Pt
Pb < 2 * Pt
with Pf, Pn, Pb being rational positive numbers
Люди хотят сгруппировать начальный заказ в меню, чтобы минимизировать общую сумму расходов.Тогда
FinalOrder = { C2, J2, T2, F, N, B } with C2, J2, T2, F, N, B integer non-negative numbers
, и у нас будет FinalPrice <= InitialPrice as </p>
FinalPrice = C2 * Pc + J2 * Pj + T2 * Pt + F * Pf + N * Pn + B * Pb with Pc, Pj, Pt, Pf, Pn, Pb as rational positive numbers
Все цены (Pc, Pj, Pt, Pf, Pn и Pb) известны заранее.
Пожалуйста, знаете ли вы, какой подход я должен использовать, чтобы построить алгоритм минимизации FinalPrice для данного InitialOrder?Не стесняйтесь спрашивать любые дополнительные детали, которые вам нужны.
Заранее спасибо.