Как классифицировать/сгруппировать элементы числового ряда так, чтобы сумма элементов в каждой группе была примерно одинаковой?

Есть числовой ряд: 2717, 1995, 1633, 1244, 978, 745, 588 (чисел много больше).

Нужно разбить эти числа на группы так, чтобы сумма элементов группы была максимально равной.
Количество групп задается (не константа).
  • Вопрос задан
  • 232 просмотра
Пригласить эксперта
Ответы на вопрос 1
wataru
@wataru Куратор тега Математика
Разработчик на С++, экс-олимпиадник.
Это задача об оптимальном разбиении на подмножества, она NP-сложная. Тут нет какого-то простого и быстрого алгоритма.

Полный перебор, метод ветвей и границ, всякие методы отжига и генетические алгоритмы вам в помощь.

В отдельных случаях (сумма не очень большая и множеств всего 2; числа очень маленькие) возможны быстрые алгоритмы на основе динамического программирования
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы