Метод ветвей и границ
Метод ветвей и границ — это общий алгоритмический метод для решения дискретных оптимизационных задач, основанный на декомпозиции множества допустимых решений на подмножества (ветвление) и отсеве неперспективных подмножеств с помощью вычисления верхних и нижних границ целевой функции. Метод относится к классу точных методов, то есть гарантирует нахождение глобального оптимума, но в худшем случае имеет экспоненциальную вычислительную сложность.
История
Метод ветвей и границ был впервые предложен в 1960 году Алисой Лэнд и Алисон Дойг для решения задач целочисленного линейного программирования. В 1963 году Дж. Д. К. Литтл, К. Г. Мурти, Д. У. Суини и К. Карел развили метод для решения задачи коммивояжёра. В СССР метод активно развивался в 1960–1970-х годах в работах В. С. Михалевича, В. В. Шкурбы и других математиков.
Первоначально метод применялся исключительно для задач комбинаторной оптимизации, но впоследствии был обобщён на широкий класс дискретных задач, включая задачи теории расписаний, размещения, раскроя и упаковки.
Основные принципы
Метод ветвей и границ основан на двух ключевых процедурах: ветвление и вычисление границ.
Ветвление
Ветвление — это процесс разбиения исходного множества допустимых решений на непересекающиеся подмножества. Каждое подмножество представляет собой подзадачу, которая решается рекурсивно. Стратегия ветвления определяет, какое подмножество выбирать для дальнейшего разбиения. Наиболее распространённые стратегии:
- Поиск в глубину — выбирается последнее созданное подмножество.
- Поиск в ширину — выбирается подмножество с наименьшей нижней границей.
- Наилучшая граница — выбирается подмножество с наилучшей (минимальной для задачи минимизации) нижней границей.
Вычисление границ
Для каждого подмножества вычисляется нижняя граница (для задачи минимизации) или верхняя граница (для задачи максимизации). Граница — это оценка оптимального значения целевой функции на данном подмножестве. Она должна быть:
- Оптимистичной — не хуже реального оптимума на подмножестве.
- Вычислительно эффективной — вычисляться быстрее, чем решение подзадачи точным методом.
Если нижняя граница подмножества превышает текущее лучшее найденное решение (рекорд), то это подмножество отсекается — оно заведомо не содержит оптимального решения.
Отсечение
Подмножество может быть отсечено в трёх случаях:
- По границе — нижняя граница подмножества не меньше текущего рекорда.
- По недопустимости — подмножество не содержит допустимых решений.
- По оптимальности — подмножество состоит из одного решения, которое становится новым рекордом.
Алгоритм
Общая схема метода ветвей и границ для задачи минимизации:
- Инициализация: установить рекорд
R = +∞. Создать корневое подмножествоS0— всё множество допустимых решений. ПоместитьS0в список активных подмножеств. - Выбор подмножества: извлечь подмножество
Sиз списка активных. - Вычисление границы: вычислить нижнюю границу
LB(S). - Проверка отсечения: если
LB(S) >= R, перейти к шагу 2. - Ветвление: разбить
Sна подмножестваS1, S2, ..., Sk. - Обновление рекорда: для каждого подмножества, если оно состоит из одного решения, вычислить значение целевой функции
f. Еслиf < R, установитьR = f. - Добавление подмножеств: поместить все подмножества, не отсечённые на шаге 4, в список активных.
- Проверка завершения: если список активных пуст, завершить алгоритм. Иначе перейти к шагу 2.
Результат — значение R и соответствующее ему решение.
Применение
Метод ветвей и границ применяется для решения широкого круга задач:
Задача коммивояжёра
Классическая задача нахождения кратчайшего маршрута, проходящего через все заданные города ровно один раз. Метод ветвей и границ (алгоритм Литтла) позволяет находить точное решение для задач с числом городов до 50–100.
Задача о рюкзаке
Задача выбора предметов с максимальной суммарной стоимостью при ограничении на общий вес. Метод ветвей и границ используется как для булевой (0-1), так и для ограниченной задачи о рюкзаке.
Целочисленное линейное программирование
Метод ветвей и границ является основой большинства коммерческих и открытых решателей (солверов) для задач целочисленного линейного программирования, таких как CPLEX, Gurobi, SCIP. В этом контексте метод сочетается с симплекс-методом для вычисления границ.
Задачи теории расписаний
Метод применяется для построения оптимальных расписаний выполнения работ на станках, в вычислительных системах и производственных линиях.
Задачи размещения и упаковки
В задачах размещения объектов (например, заводов или складов) и упаковки предметов в контейнеры метод ветвей и границ позволяет находить оптимальные конфигурации.
Модификации и улучшения
Метод ветвей и отсечений (Branch and Cut)
Сочетает метод ветвей и границ с методом отсекающих плоскостей. На каждом узле дерева ветвления добавляются линейные неравенства, отсекающие нецелочисленные решения. Этот подход используется в современных решателях целочисленного программирования.
Метод ветвей и цен (Branch and Price)
Применяется для задач с большим числом переменных. Вместо явного перечисления всех переменных используется генерация столбцов — добавление новых переменных по мере необходимости.
Параллельная реализация
Дерево ветвления может быть распараллелено: разные подмножества обрабатываются на разных вычислительных узлах. Это позволяет решать задачи с большим числом переменных за приемлемое время.
Ограничения и критика
Основным ограничением метода является экспоненциальный рост числа подмножеств в худшем случае. Для некоторых классов задач (например, NP-трудных) метод может требовать экспоненциального времени работы даже при использовании эффективных границ.
Метод чувствителен к качеству вычисляемых границ: слабые границы приводят к большому числу ветвлений и медленной сходимости. Выбор стратегии ветвления также существенно влияет на производительность.
Для задач большой размерности (сотни и тысячи переменных) метод ветвей и границ часто уступает эвристическим и метаэвристическим алгоритмам (генетические алгоритмы, имитация отжига) по времени работы, хотя и гарантирует точность.
Примеры
Пример 1: Задача о рюкзаке
Дано: 4 предмета, веса [2, 3, 4, 5], стоимости [3, 4, 5, 6], вместимость рюкзака 8. Метод ветвей и границ строит дерево, где на каждом шаге решается, брать или не брать предмет. Нижняя граница вычисляется как сумма стоимостей уже взятых предметов плюс оценка оставшихся (например, дробное решение задачи о рюкзаке). Оптимальное решение: предметы 1, 2 и 4 (вес 10, стоимость 13) или предметы 3 и 4 (вес 9, стоимость 11) — первое недопустимо по весу, второе допустимо. Фактический оптимум: предметы 2 и 3 (вес 7, стоимость 9).
Пример 2: Задача коммивояжёра (3 города)
Даны расстояния: A-B = 10, A-C = 15, B-C = 20. Метод ветвей и границ (алгоритм Литтла) вычисляет нижнюю границу как сумму минимальных элементов строк и столбцов матрицы расстояний после приведения. Ветвление происходит по выбору ребра. Оптимальный маршрут: A-B-C-A (длина 45).
Источники
- Лэнд А., Дойг А. — «An Automatic Method of Solving Discrete Programming Problems» (1960).
- Литтл Дж. Д. К., Мурти К. Г., Суини Д. У., Карел К. — «An Algorithm for the Traveling Salesman Problem» (1963).
- Михалевич В. С., Шкурба В. В. — «Последовательные схемы оптимизации» (1965).
- Пападимитриу Х., Стайглиц К. — «Комбинаторная оптимизация: алгоритмы и сложность» (1982).
- Вольфсон М. А. — «Методы ветвей и границ в задачах дискретной оптимизации» (2000).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →