ЗАДАЧА КОММИВОЯЖЕРА. МЕТОД ВЕТВЕЙ И ГРАНИЦ

Постановка и методика решения задачи

Коммивояжер должен объездить п городов. Для того чтобы сократить расходы, он хочет построить такой маршрут, чтобы объездить все города точно по одному разу и вернуться в исходный с минимумом затрат.

В терминах теории графов задачу можно сформулировать следующим образом. Задано п вершин и матрица {су}, где Су> 0 — длина (или цена) дуги (i,j). Под маршрутом коммивояжера z будем понимать цикл i, h in, i точек 1, 2, ..., n. Таким образом, маршрут является набором дуг. Если между городами i и j нет перехода, то в матрице ставится символ «бесконечность». Он обязательно ставится по диагонали, что означает запрет на возвращение в точку, через которую уже проходил маршрут коммивояжера, длина маршрута /(z) равна сумме длин дуг, входящих в маршрут. Пусть Z — множество всех возможных маршрутов. Начальная вершина ц фиксирована. Требуется найти маршрут zog Zтакой,что/(zo) = min/(z),ze Z.

Основная идея метода ветвей и границ состоит в том, что вначале строят нижнюю границу ф длин множества маршрутов Z. Затем множество маршрутов разбивается на два подмножества таким образом, чтобы

первое подмножество Z состояло из маршрутов, содержащих некоторую дугу (г, j), а другое подмножество не содержало этой дуги. Для

каждого из подмножеств определяются нижние границы по тому же правилу, что и для первоначальногомножества маршрутов. Полученные

нижние границы подмножеств оказываются не меньше нижней

границы множества всех маршрутов, т.е.

Сравнивая нижние границы можно выделить то подмножество маршрутов, которое с большей вероятностью содержит маршрут минимальной длины.

Затем одно из подмножеств Z или Z по аналогичному правилу разбивается на два новых Z~ и Z?. Для них снова отыскиваются нижние границы и т.д.

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

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

Для практической реализации метода ветвей и границ применительно к задаче коммивояжера укажем прием определения нижних границ подмножеств и разбиения множества маршрутов на подмножества (ветвление).

Для того чтобы найти нижнюю границу воспользуемся следующим соображением: если к элементам любого ряда матрицы задачи коммивояжера (строке или столбцу) прибавить или вычесть из них некоторое число, то от этого оптимальность плана не изменится. Длина же любого маршрута коммивояжера изменится на данную величину.

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

Константу приведения следует выбирать в качестве нижней границы длины маршрутов.

Для выделения претендентов на включение во множество дуг, по которым производится ветвление, рассмотрим в приведенной матрице все элементы, равные нулю. Найдем степени ©,у нулевых элементов этой матрицы. Степень нулевого элемента @,у равна сумме минимального элемента в строке i и минимального элемента в столбце j (при выборе этих минимумов су — не учитывается). С наибольшей вероятностью искомому маршруту принадлежат дуги с максимальной степенью нуля.

Для получения платежной матрицы маршрутов, включающей дугу (i,j), вычеркиваем в матрице строку / и столбец у, а чтобы не допустить образования цикла в маршруте, заменяем элемент, замыкающий текущую цепочку, на бесконечность.

Множество маршрутов, не включающих дугу (/, j), получаем заменой элемента Су на бесконечность.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >