Я пытаюсь разработать приложение на C #, которое будет генерировать список всех возможных перестановок в пределах лимита и стоимости. Например, у меня есть список из 80 заданий. Каждое задание имеет значение (1-5) (обычно 3), и у каждого инженера есть предел того, что они могут сделать, обычно значение 20.
На данный момент я начал с производства список всех возможных комбинаций (n! / (k! * (nk)!, где n - общее количество заданий, а k равно 2). Связь между каждым заданием должна быть взвешена с учетом расстояния между каждым заданием.
Отсюда я хотел бы выбрать начальное стартовое задание и составить список всех возможных комбинаций заданий (от начального задания) до предела 20, а затем упорядочить по сумме веса. Маршрут с наименьшим весом выиграет и будет назначен инженеру. Моя проблема в том, что я не знаю, как к этому подойти - какая структура данных будет лучше?
Обычно насчитывается около 6-8 инженеров (в зависимости от рабочей нагрузки), я планировал направлять каждого инженера по одному за раз - как только маршрут будет назначен другому инженеру, эти задания будут удалены из списка, и будет выбрано новое стартовое задание с созданным новым набором комбинаций. Звучит ли это как приемлемый подход?
Любая помощь будет приветствоваться.