Мне интересно узнать, какой алгоритм лучше всего подходит для решения следующей проблемы. Вот критерии.
У меня есть список игроков. Каждый игрок имеет три атрибута.
- Команда
- Значение
- Позиция
В каждой команде около 20 игроков. Скажем, мы говорим о бейсболе здесь, а позиции 1B
, 2B
, 3B
, SS
, C
, OF
.
Что мне интересно делать, это сортировка для комбинаций N
, где N > 0
самого высокого комбинированного значения для товарищей команды 4
.
Таким образом, каждая комбинация 4 players
должна находиться в одной команде. Каждая комбинация 4 players
должна иметь более высокую общую комбинацию Value
, а затем каждую последующую комбинацию.
Единственное ограничение состоит в том, что каждая позиция может использоваться только один раз за комбинацию, за исключением OF
, которую можно использовать до трех раз в одной комбинации из 4 игроков.
Итак, в следующем пуле составленных игроков я покажу лучшие 2 комбинации:
Team Toronto
Player 1, SS, 1.0
Player 2, 1B, 1.0
Player 3, 1B, 2.0
Player 4, 2B, 2.0
Player 5, 3B, 4.0
Player 6, 3B, 3.0
Player 7, C, 4.0
Player 8, OF, 1.0
Player 9, OF, 2.0
Player 10, OF, 5.0
Player 11, OF, 6.0
Team Washington
Team Toronto
Player 1, SS, 3.0
Player 2, 1B, 2.0
Player 3, 1B, 1.0
Player 4, 2B, 2.0
Player 5, 3B, 2.0
Player 6, 3B, 3.0
Player 7, C, 7.0
Player 8, OF, 1.0
Player 9, OF, 2.0
Player 10, OF, 2.0
Player 11, OF, 3.0
Самая высокая прогнозируемая комбо будет
Team Toronto:
* Player 11
* Player 10
* Player 7
* Player 5
общее значение 19.0
Второй по величине прогнозируемый комбо также будет Team Toronto с
* Player 11
* Player 10
* Player 7
* Player 6
с суммой 18.0
Самая высокая команда команды Washington - Player 1, Player 6, Player 7 и Player 11, а их значение - только 16.0
, поэтому они не появятся до конца в сортировке.
Какой лучший алгоритм для эффективного решения этого вопроса, если я говорю, что я имею дело с пулом из 500 игроков в день (распределяется более 10 или более команд)?