LINUX.ORG.RU

Поиск подмножества с заданной суммой


0

0
Надо из элементов заданного списка выбрать ЛЮБОЕ подмножество, сумма элементов которого даст заданную сумму (не факт, что такое подмножество есть). Да, практически тот самый рюкзак :)

Тупой перебор долго работает. Элементов >> 10.

Где поискать оптимизированные алгоритмы?

★★★★★
Это называется "Subset Sum Problem," NP-полная. 
Вот тут объясняется один алгоритм: www-fs.informatik.uni-tuebingen.de/~reinhard/krypto/English/4.5.1.e.html
grob ★★★★★
()
Ответ на: комментарий от grob
Спасибо. Пошел по азимуту...
yyk ★★★★★
() автор топика
Ответ на: комментарий от yyk
Сам мудак! (это я себе)

Загнав в рекурсию с сохранением промежуточных вариантов в хэш-таблице получил то, что надо.

yyk ★★★★★
() автор топика
Ответ на: комментарий от yyk
че-то не пойму: нету опасности, что во время рекурсии, NP-полная функция съест весь стэк? (или все-таке размер задачи не такой уж и большой?)
phrm ★★
()
Ответ на: комментарий от phrm
Скорее всего задача не слишком большая: размер списка ~200 элементов.

Да и рекурсия бывает разная.

yyk ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.