У меня есть набор целых чисел M и целевой суммы k. Я хочу найти подмножество M, которое при объединении ближе всего к k, не переходя.
Например:
M = {1, 3, 5, 5, 14}
k = 12
answer = {1, 5, 5}
because 1 + 5 + 5 = 11 and there is no way to make 12.
У меня есть дополнительное ограничение, что подмножество может содержать не более 4 элементов.
В моем приложении размер | M | может быть большим (порядка тысяч элементов). Если в течение разумного времени невозможно найти оптимальный ответ, меня интересуют решения, которые, по крайней мере, дают "хороший" ответ.
Сейчас я решаю эту проблему, создавая 10 000 случайных подмножеств и выбираю ближайший, который работает лучше, чем можно было бы ожидать, но медленный. Я не уверен, насколько далек от оптимального на самом деле, но любое понимание этого было бы интересно и мне.