Алгоритм заказа комбинации из 2 предметов - PullRequest
0 голосов
/ 04 октября 2018

У меня есть 5 математических задач, которые нужно решить, и 30 человек, которые попытаются решить каждую из этих проблем.

Я знаю, как быстро каждый из них способен решить определенную проблему как таковую:

Человек 1 сможет решить проблему A за 5 секунд, B за 7, C за 20 и D за 2 минуты.

Только один человек может работать над проблемой одновременно.

Есть ли какой-нибудь алгоритм, который может помочь мне определить порядок, в котором я должен программировать этих людей, чтобы получить самое короткое время решения golbal или overall?

1 Ответ

0 голосов
/ 04 октября 2018

Алгоритмика: https://en.wikipedia.org/wiki/Backtracking

У вас есть дерево с 5 уровнями (задачами-этапами).Это что-то вроде комбинатора.Вы будете пробовать каждую комбинацию и экономить лучшее время.Если у вас есть один раз, и текущая комбинация больше его, вы вернетесь назад и попробуете другие альтернативные отбрасывания, например, некоторые из них (скажем, отбрасывая ветви комбинационного дерева).

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

У вас будет наилучшее оптимальное решение с другими альтернативами, но это даст вам то, что вы хотите, и не займет много времени.

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