Оптимизация распределения по блокам
От: Glenn  
Дата: 24.01.08 17:50
Оценка:
У меня есть следующая задача. Есть массив положительных чисел, назовём его A. Например: {30, 3, 2892}. В действительности каждое из этих чисел — количество объектов (каких, неважно). Эти объекты надо распределить по блокам размера X (это — искомая величина) следующим образом. Если A[i] делится на X без остатка, то считаем, что на A[i] приходится число блоков равное A[i]/X; иначе – (A[i]/X + 1). Понятно, если A[i] < X, то на A[i] приходится один блок. Пример: если для нашего массива {30, 3, 2892} X равно 10, то:
— на A[0] приходится 3 блока;
— на A[1] приходится 1 блок;
— на A[2] приходится 290 блоков;

X надо подобрать исходя из следующих условий:
a) Минимальное значение X равно MinSize (заданная величина)
b) Суммарное количество блоков, полученное для ВСЕХ элементов массива A при данном X не должно превышать MaxCount (заданная величина)
c) Суммарное количество блоков, упомянутое в пункте (b), должно быть максимально возможным для данного X

Таким образом, имеем задачу оптимизации: чем меньше X, тем больше суммарное количество блоков; и в то же время суммарное количество блоков не должно превысить MaxCount.

Как эту задачу решить? Существует ли здесь аналитическое решение?

Примечание: естественно, постановка задачи предполагает, что размер массива A не больше значения MaxCount
Glen
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.