- •6.1. Продолжительность симплекс-алгоритма
- •6.2. Размер экземпляра задачи лп
- •6.3. Задача эквивалентной допустимости
- •6.4. Начальные сведения о методе эллипсоида
- •6.5. Описание метода эллипсоида на интуитивном уровне
- •7.1. Алгоритм Хачияна
- •7.2. Обоснование метода эллипсоида
- •8.1. Терминология теории графов
- •8.2. Задача потока минимальной стоимости
- •8.3. Метод остовного дерева
- •8.4. Условия оптимальности
- •8.5. Стержневое правило для изменения базиса
- •8.6. Поиск начального допустимого решения
- •8.7. Целочисленность оптимальных решений
- •9.1. Транспортная задача
- •9.2. Табличная форма
- •9.3. Задача назначений
- •9.4. Лп-ослабления
- •9.5. Задача о максимальном потоке
- •10.1. Теорема максимального потока – минимального разреза
- •10.2. Управление проектом
- •10.3. Задача кратчайшего пути
- •10.4. Уравнение Беллмана
- •11.1. Алгоритм Беллмана-Форда
- •11.2. Алгоритм Дейкстры
- •11.3. Преформулировка с неотрицательным
- •11.4. Задача минимального остовного дерева (мод)
- •11.5. Жадный алгоритм Прима для задачи мод
- •12.1. Задача максимального разреза
- •12.2. Задача полуопределенного программирования
- •12.3. Игра «Симметричное рандеву»
- •12.4. Методы внутренней точки для лп и поп
- •13.1. Основы метода
- •13.2. Задача о ранце
- •13.3. Метод Дакина
- •14.1. Виды алгоритмов
- •14.2. Точные методы
- •14.3. Полиномиальная формулировка зк
- •14.4. Решение с помощью метода ветвей и границ
- •14.5. Приближенный алгоритм для задачи коммивояжера
- •15.1. Эвристики задачи коммивояжера
- •15.2. Метод ближайшего соседа
- •15.3. Метод ближайшего соседа для зк
- •15.4. Имитация отжига
- •15.5. Генетические алгоритмы
13.2. Задача о ранце
Задачу о ранце рассмотрим на конкретном примере.
Пример 13.1. Исходные данные для решения одного из экзепляров задачи о ранце представлены в табл. 13.1. Турист хочет взять с собой в путешествие некоторые вещи. Какие вещи он должен взять, чтобы общая их стоимость составляла не меньше 9, а общий их вес был минимально возможным?
Таблица 13.1.
|
i |
1 |
2 |
3 |
4 |
|
|
5 |
5 |
4 |
2 |
|
|
5 |
6 |
3 |
1 |
|
|
1 |
1.2 |
0.75 |
0.5 |
Каждое из 16 подмножеств множества {1, 2, 3, 4} является возможным решением. Однако только 8 из них допустимые. Задача туриста формулируется следующим образом:
минимизировать
при условии
и
для
всех
.
Начинаем с Х как единственного подмножества. Рассматриваем различные сочетания из представленных в таблице вещей, для которых их общая стоимость равна (или чуть больше) 9. Произвольно выбираем подмножество {2, 3, 4}, которое дает общую стоимость: U=5+4+2=11. Так как мы должны включить в список хотя бы одну из этих вещей, и самая легкая из них весит 1, то ℓ(X) = 1.
Делим Х на две подзадачи
и
,
которые соответствуют вариантам: турист
берет (или не берет) вещь 1 в свой рюкзак.
Очевидно,
и
.
Ни одна из этих двух подзадач не может
быть исключена с помощью тестов (а)
или (б).
Так что:
.Разбиваем
на подзадачи
и
,
которые соответствуют вариантам: турист
не берет вещь 1 и берет (или не берет)
вещь 2.
является недопустимой, и поэтому мы
исключаем ее из рассмотрения. Для
получаем
.
Теперь
.Разбиваем
на две подзадачи
и
,
которые соответствуют ситуациям: рюкзак
содержит вещь 1 и содержит (или не
содержит) вещь 2. Мы имеем
и
.
Следовательно
может быть устранена путем теста (а)
и
.Разбиваем
на подзадачи
и
,
которые соответствуют ситуациям: рюкзак
содержит вещь 1, но не содержит вещь 2 и
содержит или не содержат вещь 3. Мы
исключаем
тестом (б). Очевидно, задача
решается путем
,
.
Таким образом, следуя (в),
примем U
= 8
и
.Разбиваем
на подзадачи
и
.
Так как
,
мы устраняем
тестом (а).
Что касается
– это не допустимое решение. И поэтому
устраняется тестом (б).
Список
подзадач L
теперь пустой и алгоритм закончил свою
работу. Оптимальное решение
.

Рис. 13.1. Дерево ветвей и границ задачи о ранце
Примечание 1. Существует зависимость между числом итераций, необходимых для завершения алгоритма, и усилиями, прилагаемыми при расчете границ. В общем, скорость данного метода во многом зависит от экзепляра задачи и от способа рассчета границ.
Например,
затратив немного больше усилий, мы можем
вычислить более точные границы. При
расчете
можно заметить, что для вещей 2, 3 и 4 –
значения
равны соответственно
,
и
.
Итак, чтобы заполнить рюкзак общей
стоимостью ровно 9 без использования
вещи 1, требуется вес, как минимум, равный:
,
и
мы можем принять
.
Кроме того,
.
По аналогии получим:
.
Так что после шага 5 мы могли бы сразу
устранить
,
и шаг 6 нам был бы уже не нужен.
Примечание
2.
Предположим, что задача имеет несколько
оптимальных решений и мы хотим получить
их все. В этом случае заменяем тест (а)
на
и корректируем тест (в)
так, что если
,
то
мы добавляем дополнительное решение в
список оптимальных решений, а если
,
то выбрасываем все текущие решения из
списка и заменяем их новыми.
