Перебор вариантов с помощью дерева
Задача о рюкзаке — это NP-полная задача комбинаторной оптимизации, в которой требуется выбрать набор предметов с определёнными весами и ценностями так, чтобы общая ценность выбранных предметов была максимальной, а суммарный вес не превышал заданную грузоподъёмность рюкзака.
Основные понятия
- Грузоподъёмность рюкзака () — максимальный допустимый вес всех выбранных предметов.
- Предметы — набор из вещей, каждая из которых имеет вес и ценность , где .
- Переменные выбора — бинарные переменные , определяющие, выбран предмет () или нет ().
Математическая формулировка
Необходимо:
- максимизировать функцию ценности:
- при ограничении на суммарный вес:
Методы решения
Перебор всех возможных комбинаций предметов (всего имеется предметов) для нахождения оптимального решения.
Для каждого предмета существует 2 варианта: предмет кладётся в рюкзак, либо предмет не кладётся в рюкзак. Количество вариантов растёт экспоненциально с увеличением числа предметов (), поэтому метод применим только для малых значений .
На рисунке показано дерево перебора для трёх предметов. Каждый лист соответствует некоторому подмножеству предметов. После составления дерева необходимо найти лист с максимальной ценностью среди тех, вес которых не превышает .
Позволяет сократить количество рассматриваемых вариантов по сравнению с полным перебором. Строится дерево решений, в котором отсекаются заведомо неоптимальные ветви на основе оценок верхних границ ценности. Для каждого узла оценивается верхняя граница ценности решения, и продолжается построение дерева только для узла с максимальной оценкой. Когда максимальная верхняя граница оказывается в листе дерева, алгоритм заканчивает свою работу.
Эффективно решает задачу при целочисленных весах предметов. Временная сложность метода — , где — количество предметов, — грузоподъёмность рюкзака.
Рекуррентное соотношение:
- Инициализация:
- Рекуррентные формулы:
Здесь — максимальная ценность при рассмотрении первых предметов и суммарном весе не более .
Заключается в сортировке предметов по убыванию удельной ценности () и последовательном добавлении их в рюкзак до достижения ограничения по весу. Даёт оптимальное решение для непрерывной версии задачи, но не гарантирует оптимальности в дискретном случае.
Применения
- Планирование загрузки: оптимизация размещения грузов при ограниченной грузоподъёмности транспорта.
- Инвестиционный портфель: выбор проектов для инвестирования при ограниченном бюджете.
- Раскрой материалов: минимизация отходов при раскрое ресурсов (ткань, металл и др.).
- Криптография: основа для построения некоторых алгоритмов шифрования, например, ранцевой криптосистемы Меркла — Хеллмана.
Заключение
Задача о рюкзаке является важной в теории алгоритмов и имеет множество практических приложений. Несмотря на её вычислительную сложность, существуют эффективные методы, позволяющие находить точные и приближённые решения, что делает её полезной в различных областях науки и техники.
Литература
- Босова Л. Л., Босова А. Ю. Информатика: учебник для 9 класса. — М.: БИНОМ. Лаборатория знаний, 2013.
- Семакин И. Г., Залогова Л. А., Русаков С. В., Шестакова Л. В. Информатика: учебник для 9 класса. — М.: БИНОМ. Лаборатория знаний, 2015. — Т. 3-е изд..
- Поляков К. Ю., Еремин Е. А. Информатика. 9 класс. — М.: БИНОМ. Лаборатория знаний, 2017.
- Угринович Н. Д. Информатика и ИКТ: учебник для 9 класса. — М.: БИНОМ. Лаборатория знаний, 2012. — Т. 6-е изд..




