Если мы говорим о 14 упражнениях, лучшим вариантом, вероятно, будет использование метода branch и bound . Давайте go рекурсивно пройдемся по всем перестановкам. Если наш текущий максимум больше оценки верхней границы, которую мы имели прежде, мы не должны продолжать эту перестановку, потому что она гарантированно будет хуже. Если мы вычислили одну полную перестановку, мы должны обновить верхнюю границу. Общее количество штатов равно
14! = 8e10
, но значительное их количество будет отключено.
Это также помогает иметь приличное жадное решение для использования в качестве начальной оценки.
Я также почти уверен, что полиномиального решения не существует, потому что функция, которую мы пытаемся оптимизировать, слишком сложно.