Я хочу, чтобы алгоритм (без определенного языка) находил подмножество из набора целых чисел, чтобы их сумма находилась в определенном диапазоне.
Например, если у меня есть группа людей, вес которых выглядит следующим образом.
var people:{
jane:126,
julia:112,
charles:98,
john:182,
bob:213,
edgar: 237,
jay: 223,
dan: 191,
alex: 210,
david: 196
}
Теперь, от этих людей, я бы хотел найти подмножество, суммарная масса которого составляет 818-822 фунтов (если вы пытаетесь сделать математику... не беспокойтесь, эти цифры из моего голова, и я даже не знаю, есть ли решение с этим набором данных). Количество людей в группе не имеет значения, просто группа из большего набора. И действительно, любая группа будет делать (хотя случайный лучше в моем случае).
Обратите внимание, что это всего лишь быстрый пример... на самом деле было бы сотни людей, и было бы возможно, что не было бы никакой комбинации, которая бы соответствовала этим критериям. Поскольку фактические числа были бы намного больше, чем это, я обеспокоен проблемой n ^ n и выполняю тысячи итераций, хотя мне нужно, чтобы это выполнялось очень быстро.
Возможно, я засыпал в этот день в классе информатики, но мне не удалось придумать ничего, кроме методов грубой силы.
Я отметил это как javascript, просто потому, что это ближе всего к моей реальной реализации (и это легче читать). Открыты для других решений, если они не основаны на какой-либо функции Cthulhu.
Я знаю, что это странный вопрос, чтобы спросить о SO, но любая помощь здесь будет оценена.
Хорошо, я в тупике. 23 часа, чтобы опубликовать щедрость для чего-то, что я могу понять по коду - мой фон, конечно же, не в этом мире, и мне нелегко даже разбираться в обозначениях, используемых для описания проблемы, не говоря уже о решениях.
Кто-нибудь хочет мне помочь и бросить мне образец кода javascript, который я могу внести в окончательный проект? Я буду добавлять 250-процентную щедрость, когда смогу... но если придет приличное решение, я отдам его, когда придет время.