Алгоритм программирования: как равномерно распределить категории по столбцам - PullRequest
2 голосов
/ 16 декабря 2010

У меня есть несколько категорий, в каждой категории есть несколько элементов.Сейчас я ищу алгоритм программирования для распределения этих категорий по заранее определенному количеству столбцов, не разбивая категории, сохраняя порядок категорий и сохраняя оптимальное число элементов в каждом столбце.Например: распределение 5 категорий по 3 столбцам

Data:
category A, 7 elements
category B, 7 elements
category C, 3 elements
category D, 2 elements
category E, 8 elements

Результат:

Column 1: category A, 7 elements
Column 2: category B and C, 10 elements
Column 3: category D and E, 10 elements

1 Ответ

3 голосов
/ 16 декабря 2010

У вас есть общее количество элементов, поэтому вы можете разделить это число на количество столбцов, чтобы получить ожидаемое количество элементов в каждом столбце. Ваша задача состоит в том, чтобы минимизировать сумму квадратов разностей (поэтому, если вам нужно хранить 8 элементов, а вы сохраняете 10, вы получите квадрат разности 2² = 4 для этого столбца).

Затем можно написать рекурсивную функцию, которая для каждой категории решает, перемещать ли эту категорию в следующий столбец или оставить ее в текущем столбце. Это логическое решение, поэтому вы можете начать с ветви, которая создает наименьшую разницу, а затем ветви, которая создает наибольшую разницу. Функция будет отслеживать лучшее решение, найденное на данный момент, и немедленно остановится, если текущая сумма квадратов разностей будет больше, чем сумма для этого решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...