Я должен реализовать решение задачи 0/1 Knapsack с ограничениями. Моя проблема будет иметь в большинстве случаев несколько переменных (~ 10-20, самое большее 50).0/1 Рюкзак с несколькими переменными: какой алгоритм?
Я помню из университета, что существует ряд алгоритмов, которые во многих случаях работают лучше, чем грубая сила (я имею в виду, например, алгоритм ветвления и привязки).
Поскольку моя проблема относительно небольшая, мне интересно, есть ли значительное преимущество с точки зрения эффективности при использовании сложного решения, а не грубой силы.
Если это помогает, я программирую на Python.
Подход «посередине» на самом деле работает больше, чем время O (2^(N/2)), так как разбиение занимает 2^(N/2) времени, а затем фактическое совпадение занимает N^2 раз или Nlog (N), если вы его обыщите. –