Алгоритм упорядоченных комбинаций C #

Я пытаюсь разработать приложение на C #, которое будет генерировать список всех возможных перестановок в пределах лимита и стоимости. Например, у меня есть список из 80 заданий. Каждое задание имеет значение (1-5) (обычно 3), и у каждого инженера есть предел того, что они могут сделать, обычно значение 20.

На данный момент я начал с производства список всех возможных комбинаций (n! / (k! * (nk)!, где n - общее количество заданий, а k равно 2). Связь между каждым заданием должна быть взвешена с учетом расстояния между каждым заданием.

Отсюда я хотел бы выбрать начальное стартовое задание и составить список всех возможных комбинаций заданий (от начального задания) до предела 20, а затем упорядочить по сумме веса. Маршрут с наименьшим весом выиграет и будет назначен инженеру. Моя проблема в том, что я не знаю, как к этому подойти - какая структура данных будет лучше?

Обычно насчитывается около 6-8 инженеров (в зависимости от рабочей нагрузки), я планировал направлять каждого инженера по одному за раз - как только маршрут будет назначен другому инженеру, эти задания будут удалены из списка, и будет выбрано новое стартовое задание с созданным новым набором комбинаций. Звучит ли это как приемлемый подход?

Любая помощь будет приветствоваться.

6
задан Bill the Lizard 15 May 2011 в 14:41
поделиться