Проблема раздела, как известно, NP-hard. В зависимости от конкретного экземпляра проблемы мы можем попробовать динамическое программирование или некоторые эвристики, такие как различие (также известный как алгоритм Кармаркар-Карпа).
Последнее кажется очень полезным для экземпляров с большими числами (что делает динамическое программирование неразрешимым), но не всегда идеально. Каков эффективный способ найти лучшее решение (случайный, табу-поиск, другие аппроксимации)?
PS: У этого вопроса есть история. Существует проблема Johnny Goes Shopping, доступная в SPOJ с июля 2004 года. До сих пор проблема была решена 1087 пользователями, но только 11 из них набрали лучше, чем правильный Кармаркар Реализация алгоритма Карпа (с текущим счетом, Кармаркар-Карп дает 11.796614 пунктов). Как сделать лучше? (Ответы, поддерживаемые принятым подачей, наиболее востребованы, но, пожалуйста, не раскрывайте свой код.)