Изменения

Перейти к: навигация, поиск

Meet-in-the-middle

28 байт добавлено, 21:05, 4 января 2017
Алгоритм
=== Алгоритм ===
Разделим наше множество на две части. Подсчитаем все подмножества из первой части и будем хранить их в массиве <tex> \mathtt{first }</tex>. Отсортируем массив <tex> \mathtt{first }</tex> по весу. Далее пройдемся по этому массиву и оставим только те подмножества, для которых не существует другого подмножества с меньшим весом и большей стоимостью. Очевидно, что подмножества, для которых существует другое, более легкое и одновременно более ценное подмножество, можно удалять.Таким образом в массиве <tex> \mathtt{first }</tex> мы имеем подмножества, отсортированные не только по весу, но и по стоимости. Тогда начнем перебирать все возможные комбинации вещей из второй половины и находить бинарным поиском удовлетворяющие нам подмножества из первой половины, хранящиеся в массиве <tex> \mathtt{first }</tex>.
=== Реализация ===
84
правки

Навигация