Здравствуйте, Alexan, Вы писали:
A>У нас есть N серверов. На каждом лежит Bi записей (i=1..N). На них нужно выложить новых U записей. Надо распределить нагрузку равномерно. A>Например: есть 4 сервера, на них — 20, 18, 12 и 0 записей (всего 50). Нужно распределить 10 записей. Ответ — 20, 18, 12 и 10. A>А в общем случае?
Хм. Вообще говоря, если не критично местоположение каждой записи в отдельности и можно последовательно добавлять по одной записи, тогда всё просто.
Пусть Bi -- количество записей на i-том сервере. B -- общее колчисетво записей. Тогда фактор загруженности сервера вычисляется как Bi/B.
Находим сервер с наименьшим фактором и добавляем туда запись. пересчитываем факторы загруженнсоти и повторяем добавление записи.