Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мат. мет. исл. оп Погорелов / Лекции по мат. мет. ИО.doc
Скачиваний:
67
Добавлен:
26.03.2015
Размер:
3.62 Mб
Скачать

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 из них допустимые. Задача туриста формулируется следующим образом:

минимизировать при условии и для всех .

  1. Начинаем с Х как единственного подмножества. Рассматриваем различные сочетания из представленных в таблице вещей, для которых их общая стоимость равна (или чуть больше) 9. Произвольно выбираем подмножество {2, 3, 4}, которое дает общую стоимость: U=5+4+2=11. Так как мы должны включить в список хотя бы одну из этих вещей, и самая легкая из них весит 1, то (X) = 1.

  2. Делим Х на две подзадачи и, которые соответствуют вариантам: турист берет (или не берет) вещь 1 в свой рюкзак. Очевидно,и. Ни одна из этих двух подзадач не может быть исключена с помощью тестов (а) или (б). Так что: .

  3. Разбиваем на подзадачии , которые соответствуют вариантам: турист не берет вещь 1 и берет (или не берет) вещь 2.является недопустимой, и поэтому мы исключаем ее из рассмотрения. Дляполучаем. Теперь.

  4. Разбиваем на две подзадачии, которые соответствуют ситуациям: рюкзак содержит вещь 1 и содержит (или не содержит) вещь 2. Мы имееми. Следовательноможет быть устранена путем теста (а) и .

  5. Разбиваем на подзадачии, которые соответствуют ситуациям: рюкзак содержит вещь 1, но не содержит вещь 2 и содержит или не содержат вещь 3. Мы исключаемтестом (б). Очевидно, задачарешается путем ,. Таким образом, следуя (в), примем U = 8 и .

  6. Разбиваем на подзадачии. Так как, мы устраняемтестом (а). Что касается – это не допустимое решение. И поэтому устраняется тестом (б).

Список подзадач L теперь пустой и алгоритм закончил свою работу. Оптимальное решение .

Рис. 13.1. Дерево ветвей и границ задачи о ранце

Примечание 1. Существует зависимость между числом итераций, необходимых для завершения алгоритма, и усилиями, прилагаемыми при расчете границ. В общем, скорость данного метода во многом зависит от экзепляра задачи и от способа рассчета границ.

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

Примечание 2. Предположим, что задача имеет несколько оптимальных решений и мы хотим получить их все. В этом случае заменяем тест (а) на и корректируем тест (в) так, что если , то мы добавляем дополнительное решение в список оптимальных решений, а если , то выбрасываем все текущие решения из списка и заменяем их новыми.