Лекция 16 Метод ветвей и границ.ppt
- Количество слайдов: 43
Алгоритмические стратегии Метод ветвей и границ (branch and bound)
Метод ветвей и границ Основная идея метода поиска с возвратом, рассмотренного на прошлой лекции, – обрезка ветви дерева пространства состояний задачи, как только можно сделать вывод, что она не ведет к решению. Эта идея может быть усилена при работе с оптимизационными задачами, которые должны минимизировать или максимизировать целевую функцию, обычно при наличии некоторых ограничений. Заметим, что в стандартной терминологии задач оптимизации допустимое решение представляет собой точку в пространстве состояний задачи, которая удовлетворяет всем ее ограничениям, а оптимальное решение является допустимым решением с наилучшим значением целевой функции.
Метод ветвей и границ Впервые метод ветвей и границ был предложен Лендом (Land A. H. ) и Дойгом (Doig A. G. ) в 1960 году для решения общей задачи целочисленного линейного программирования. Интерес к этому методу и фактически его «второе рождение» связано с работой Литтла (Little J. D. C. ), Мурти (Murty K. G. ), Суини (Sweeney D. W. ) и Кэрела (Karel C. ) (1963 г. ), посвященной задаче комивояжера. Начиная с этого момента, появилось большое число работ, посвященных методу ветвей и границ и различным его модификациям. Столь большой успех объясняется тем, что авторы первыми обратили внимание на широту возможностей метода, отметили важность использования специфики задачи и сами воспользовались спецификой задачи коммивояжера.
Метод ветвей и границ • • Метод ветвей и границ требует: способа получить для каждого узла дерева пространства состояний границу наилучшего значения целевой функции (эта граница должна быть нижней границей для задач минимизации и верхней – для задач максимизации) для всех решений, которые могут быть получены путем дальнейшего добавления компонентов к частичному решению, представленному узлом; выбора значения наилучшего решения, полученному к этому моменту.
Метод ветвей и границ Если такая информация доступна, мы можем сравнивать значение границы узла со значением наилучшего решения, полученного к этому моменту: если значения границы не лучше значения уже имеющегося наилучшего решения – т. е. не меньше в случае задачи минимизации или не больше в случае задачи минимизации, - то такой узел является бесперспективным и его обработка может быть завершена (иногда говорят, что эта ветвь обрезается), поскольку ни одно получаемое решение не может оказаться лучше того, что уже имеется. В этом заключается основная идея метода ветвей и границ.
Метод ветвей и границ • • В общем случае мы завершаем путь поиска в текущем узле дерева пространства состояний алгоритма ветвей и границ по одной из трех следующих причин. значение границы узла не лучше значения наилучшего решения, найденного к этому моменту. узел не представляет допустимых решений из-за нарушения ограничений, налагаемых задачей.
Метод ветвей и границ • подмножество допустимых решений, представляемое узлом, состоит из одного элемента (следовательно, дальнейший выбор невозможен) – в этом случае мы сравниваем значение целевой функции для этого допустимого решения со значением целевой функции наилучшего полученного к настоящему моменту решения и обновляем последнее текущем, если новое решение оказывается лучше.
Метод ветвей и границ Пример 1. Задача о назначениях. Имеется n работников, которым надо выполнить n заданий, по одному заданию каждый (т. е. каждому работнику назначается только одно задание и каждое задание назначается лишь одному человеку). Стоимость выполнения i-ым работником j-го задания известна и равна C(i, j) для всех пар i, j = 1, … , n. Задача заключается в следующем: надо распределить задания между работниками таким образом, чтобы они были выполнены с наименьшей стоимостью. Если решать эту задачу методом исчерпывающего перебора (придумайте алгоритм ☺), то количество вариантов будет n! и сложность O(n!).
Метод ветвей и границ Задачу можно сформулировать следующим образом: выбрать по одному элементу в каждой строке матрицы так, чтобы никакие два выбранных элемента не располагались в одном столбце, а общая сумма выбранных элементов была минимальной. Сложность перебора ~4! = 24. Зад. 1 Зад. 2 Зад. 3 Зад. 4 9 2 7 8 Работник a 6 4 3 7 Работник b 5 8 1 8 Работник c 7 6 9 4 Работник d
Метод ветвей и границ Как найти нижнюю границу стоимости оптимального решения без реального решения задачи? Можно сделать это разными путями. Например, ясно, что стоимость любого решения, включая оптимальное, не может быть меньше суммы наименьших элементов в каждой из строк матрицы. Для приведенного примера эта сумма равна 2+3+1+4=10. Важно отметить, что это значение не является суммой ни одного из допустимых выборов (т. к. 3 и 1 находятся в одном столбце матрицы), это просто нижняя граница стоимости любого выбора, соответствующего ограничениям задачи.
Метод ветвей и границ В методе ветвей и границ, также как и в поиске с возвратом, строится дерево пространства состояний. Однако, вместо генерации одного дочернего узла по отношению к последнему обещающему, как это делалось при поиске с возвратом, мы будем генерировать все дочерние узлы для наиболее обещающего среди незавершенных листьев текущего дерева (незавершенные листья, т. е. все еще обещающие листья, иногда называют живыми листьями).
Метод ветвей и границ Как можно определить, какие из узлов являются наиболее обещающими? Это можно сделать, сравнивая нижние границы живых листьев. Разумно рассматривать как наиболее обещающий узел с наилучшей границей, хотя это не препятствует тому, что оптимальное решение будет в конечном итоге принадлежать иной ветви дерева пространства состояний. Такая стратегия называется методом ветвей и границ с выбором наилучшего варианта.
Метод ветвей и границ Начнем с корня, который соответствует отсутствию какого-либо выбора элементов матрицы стоимости. Значение нижней границы (которое мы обозначим lb, low bound) для корня равно 10 (lb = 10). Узлы на первом уровне дерева соответствуют четырем элементам (заданиям) в первой строке матрицы (для первого работника), поскольку все они могут быть потенциальными первыми компонентами оптимального решения. Итак, мы имеем четыре живых листа, которые могут содержать оптимальное решение. Наиболее обещающим среди них является узел 2, поскольку он имеет наименьшее значение нижней границы.
Метод ветвей и границ работнику a -> 1 задание lb = 9+3+1+4 = 17 работнику a -> 2 задание lb = 2+3+1+4 = 10 работнику a -> 3 задание lb = 7+4+5+4 = 20 работнику a -> 4 задание lb = 8+3+1+6 = 18 Таким образом, для работника a мы выделяем задание 2. Следуя стратегии выбора наилучшего варианта, исследуем сперва эту ветвь, перед тем как перейти к остальным. Теперь для работника b и оставшихся заданий мы должны произвести подсчет оценок стоимостей (естественно, с учетом работника a и задания 2).
Метод ветвей и границ Из рассматриваемого листа выходят три ветви, соответствующие набору элемента из второй строки, не находящегося во втором столбце, и представляющие три различные задания, предназначенные работнику b. a -> зад. 2 работнику b -> зад. 1 lb = 13 работнику b -> зад. 3 lb = 14 работнику b -> зад. 4 lb = 17 Рассмотрим выбор третьего элемента из строки с – при этом у нас не остается иного выбора, кроме назначения 4 работнику d, что дает нам лист, который соответствует допустимому решению с общей стоимостью 13.
Метод ветвей и границ Другой «сестринский» узел соответствует допустимому решению {a->2, b->1, c->4, d->3} с общей стоимостью 25. Поскольку эта стоимость больше стоимости решения, соответствующего предыдущему узлу, работа с этим узлом просто прекращается (если бы его стоимость была меньше 13, пришлось бы заменить информацию о найденном наилучшем решении данными, соответствующими этому листу).
Метод ветвей и границ Теперь, если мы обратимся к каждому из пяти листьев построенного дерева пространства состояний, то обнаружим, что их значения нижних границ не меньше значения целевой функции наилучшего решения, обнаруженного к настоящему времени. Следовательно, работа с ними прекращается, и решение, представленное этим листом, является оптимальным решением поставленной задачи. Интересно отметить, что это задача имеет полиномиальный алгоритм решения известный под названием Венгерский метод (в честь открывших его венгерских математиков Кёнига и Эгервари).
Метод ветвей и границ 9 6 5 7 2 4 8 6 7 3 1 9 0 8 7 8 4 1 start lb=2+3+1+4=10 2 3 4 a→ 1 a→ 2 a→ 3 a→ 4 lb=9+3+1+4=17 lb=2+3+1+4=10 lb=7+4+5+4=20 lb=8+3+1+6=18 Числа над узлами указывают порядок генерации узлов. Поля узла указывают номер назначенного задания работнику a и значение нижней границы lb для данного узла.
Метод ветвей и границ 9 6 5 7 2 4 8 6 7 3 1 9 0 8 7 8 4 1 start lb=2+3+1+4=10 2 3 4 a→ 1 a→ 2 a→ 3 a→ 4 lb=9+3+1+4=17 lb=2+3+1+4=10 lb=7+4+5+4=20 lb=8+3+1+5=18 5 6 7 b→ 1 b→ 3 b→ 4 lb=2+6+1+4=13 lb=2+3+5+4=14 lb=2+7+1+7=17
Метод ветвей и границ 9 6 5 7 2 4 8 6 7 3 1 9 0 8 7 8 4 1 start lb=2+3+1+4=10 2 3 4 a→ 1 a→ 2 a→ 3 a→ 4 lb=9+3+1+4=17 lb=2+3+1+4=10 lb=7+4+5+4=20 lb=8+3+1+5=18 5 6 7 b→ 1 b→ 3 b→ 4 lb=2+6+1+4=13 lb=2+3+5+4=14 lb=2+7+1+7=17 8 9 c→ 3 d→ 4 c→ 4 d→ 3 cost = 13 Cost = 25
Метод ветвей и границ 9 6 5 7 2 4 8 6 7 3 1 9 0 8 7 8 4 1 start lb=2+3+1+4=10 2 3 4 a→ 1 a→ 2 a→ 3 a→ 4 lb=9+3+1+4=17 x 5 lb=2+3+1+4=10 lb=7+4+5+4=20 x 7 lb=8+3+1+5=18 x b→ 1 b→ 3 b→ 4 lb=2+6+1+4=13 lb=2+3+5+4=14 x lb=2+7+1+7=17 x c→ 3 d→ 4 c→ 4 d→ 3 cost = 13 cost = 25 Решение 6 Худшее решение
Метод ветвей и границ А что даст жадная стратегия? Напоминаю, что при этом нужно разбить решение задачи на шаги, делая на каждом шаге локально оптимальный выбор. Мы можем на каждом шаге брать очередного работника или очередное задание. Например, будем на каждом шаге брать очередного работника и для него подбирать задания из оставшихся с минимальной стоимостью. Получим: a → 2, b → 3, c → 1, d → 4. Общая стоимость будет 5+2+3+4=14. Если на каждом шаге брать очередное задание и подбирать для него работника с минимальной стоимостью из оставшихся, то получим: c → 1, a → 2, b → 3, d → 4 т. е. то же самое.
Метод ветвей и границ Пример 2. Задача о рюкзаке Дано n предметов с весами w 1, …, wn и ценами v 1, …, vn, а также рюкзак, выдерживающий вес W. Требуется найти подмножество предметов, которое можно разместить в рюкзаке и которое имеет при этом максимальную цену. Поскольку общее количество подмножеств n-элементного множества равно 2ⁿ, исчерпывающий перебор приводит к алгоритму со временем работы Ω(2ⁿ). Оказывается удобным упорядочить предметы в убывающем порядке по их удельной цене (отношение цены к весу), с разрешением неоднозначностей произвольным образом.
Метод ветвей и границ v 1/w 1 ≥ v 2/w 2 ≥ … ≥ vn/wn Естественной структурой дерева пространства состояний для данной задачи является бинарное дерево, построенное следующим образом. Каждый узел на уровне 0 <= i <= n представляет все подмножества из n элементов, которые включают определенный набор из первых i упорядоченных элементов. Этот частичный выбор однозначно определяется путем от корня к узлу: ветвь, идущая влево, указывает на включение очередного элемента в подмножестве.
Метод ветвей и границ Мы записываем общий вес w и общую стоимость v выбора, соответствующего узлу, вместе с верхней границей ub значения для любого подмножества, которое может быть получено путем добавления некоторых элементом (возможно, никаких) к этому выбору. Простым способом вычисления верхней границы ub является добавление к общей стоимости уже выбранных элементов v произведения оставшейся емкости рюкзака W-w и наибольшего значения удельной стоимости среди оставшихся элементов, которое равно vi+1/wi+1: ub = v + (W-w)(vi+1/wi+1)
Метод ветвей и границ Предмет 1 2 3 4 Вес Стоимость Удельная стоимость 4 40 10 7 42 6 5 25 5 3 12 4 Емкость рюкзака W = 10.
Метод ветвей и границ 4 40 10 0 7 42 6 5 25 5 3 12 4 w=0, v=0 ub = 100
Метод ветвей и границ 4 40 10 0 7 42 6 5 25 5 3 12 4 w=0, v=0 1 c 1 ub = 100 без 1 2 w=4, v=40 w=0, v=0 ub=40+36=76 ub = 60
Метод ветвей и границ 4 40 10 0 7 42 6 5 25 5 3 12 4 w=0, v=0 c 1 1 ub = 100 без 1 2 w=4, v=40 w=0, v=0 ub = 40+36=76 c 2 3 4 без 2 ub = 60 w=11>10 w=4, v=40 ub = 70
Метод ветвей и границ 4 40 10 0 7 42 6 5 25 5 3 12 4 w=0, v=0 ub = 100 c 1 1 без 1 2 w=4, v=40 w=0, v=0 ub = 78 ub = 60 c 2 3 w=11>10 4 без 2 w=4, v=40 ub = 70 c 3 5 6 без 3 w=9, v=65 w=4, v=40 ub=65+4=69 ub = 64
Метод ветвей и границ 4 40 10 0 7 42 6 5 25 5 3 12 4 w=0, v=0 ub = 100 c 1 1 без 1 2 w=4, v=40 w=0, v=0 ub = 78 ub = 60 c 2 3 w=11>10 x 4 без 2 w=4, v=40 ub = 70 c 3 5 6 w=9, v=65 7 w=12>10 x без 3 w=4, v=40 ub = 69 c 4 x Меньше, чем в узле 8 8 ub = 64 без 4 x Меньше, чем в узле 8 w=9, v=65 ub = 65 Решение
Метод ветвей и границ Пример 3. Задача коммивояжера. Мы сможем применить метод ветвей и границ к экземпляру задачи коммивояжера, если найдем подходящий метод оценки нижней границы длины маршрута. Одна очень простая нижняя граница может быть получена путем поиска наименьшего элемента в матрице расстояний между городами и умножении его на количество городов n. Однако имеется менее очевидная и более информативная нижняя граница, не требующая большого количества вычислений. Нетрудно показать, что можно вычислить нижнюю границу длины l любого маршрута следующим образом.
Метод ветвей и границ Для каждого i-го города (1 ≤ i ≤ n) находим сумму si расстояний от города i до двух ближайших городов, после чего вычисляем сумму n этих чисел и делим результат на 2. Если все расстояния – целые числа, округляем результат до ближайшего целого. Кроме того, для любого подмножества маршрутов, которое должно включать некоторые ребра данного графа, мы можем соответственно изменить нижнюю границу. Чтобы уменьшить количество потенциальной работы, воспользуемся двумя наблюдениями.
Метод ветвей и границ Во-первых, без потери общности мы можем рассматривать только маршруты, начинающиеся в вершине a. Во-вторых, поскольку граф неориентированный, мы можем генерировать только маршруты, в которых вершина b посещается перед вершиной c. И в дополнение: после посещения n-1 городов нет выбора, кроме как посетить оставшийся город и вернуться в начало маршрута. Построим дерево пространства состояний для данного алгоритма, примененного к конкретному графу.
Метод ветвей и границ 3 a 8 5 1 6 4 c b 2 7 d 3 e 9 0 3 1 5 8 3 0 6 7 9 1 6 0 4 2 5 7 4 0 3 8 9 2 3 0
Метод ветвей и границ 0 a lb=14 1 2 3 a, b a, c a, d a, e lb=14 b не перед c lb=16 lb=19 4
Метод ветвей и границ 0 a lb=14 1 2 a, b a, c a, d a, e lb=14 b не перед c lb=16 lb=19 5 6 3 7 a, b, c a, b, d a, b, e lb=16 lb=19 4
Метод ветвей и границ 0 a lb=14 1 2 a, b a, c a, d a, e lb=14 b не перед c lb=16 lb=19 5 3 6 7 a, b, c a, b, d a, b, e lb=16 lb=19 a, b, c, d (e, a) a, b, c, e (d, e) l=24 l=19 a, b, d, c a, b, d, e (e, a) (c, a) l=24 l=16 4
Метод ветвей и границ 0 a lb=14 1 2 a, b a, c a, d a, e lb=14 b не перед c lb=16 lb=19 5 3 6 4 7 a, b, c a, b, d a, b, e lb=16 lb=19 8 9 a, b, c, d (e, a) a, b, c, e (d, e) l=24 l=19 10 11 a, b, d, c a, b, d, e (e, a) (c, a) l=24 l=16 Оптимальный маршрут
Метод ветвей и границ Комментарии, которые были сделаны о сильных и слабых сторонах поиска с возвратом, в той же мере применимы и к методу ветвей и границ. Самое главное, - что оба эти метода позволяют решать многие большие экземпляры сложных комбинаторных задач. Однако, как правило, почти невозможно предсказать, какие именно экземпляры окажутся решаемы за реальное время. Алгоритм ветвей и границ зачастую может быть ускорен, если знать значение целевой функции для некоторого нетривиального допустимого решения.
Метод ветвей и границ Такую информацию может оказаться возможным получить до начала построения дерева пространства состояний, скажем, воспользовавшись конкретными данными, а для некоторых задач даже сгенерировав допустимое значение случайным образом. Такое решение тут же может использоваться в качестве наилучшего, полученного к данному моменту, что позволяет не ожидать, пока ветвление приведет к какомулибо допустимому решению.
Метод ветвей и границ В противоположность поиску с возвратом решение задачи методом ветвей и границ включает как необходимость выбора порядка генерации узлов, так и поиска хорошей функции для вычисления границ. Хотя правило выбора наилучшего варианта, использовавшееся здесь, представляет собой достаточно разумный подход, оно может и не приводить к решению быстрее, чем другие стратегии. (Кстати, область кибернетики, посвященная искусственному интеллекту, среди прочего интересуется стратегиями разработки деревьев пространства состояний).
Метод ветвей и границ Поиск хорошей функции для вычисления границ – задача обычно не простая. С одной стороны, требуется, чтобы эта функция была легко вычислимой. С другой стороны, она не может быть слишком упрощенной – в противном случае она не сможет выполнить свою основную задачу отсечения как можно большего количества ветвей дерева пространства состояний. Поиск компромисса между этими конкурирующими требованиями может потребовать интенсивных экспериментов с широким диапазоном экземпляров рассматриваемой задачи.
Лекция 16 Метод ветвей и границ.ppt