3.3. Решение задачи коммивояжера
Коммивояжеру нужно посетить 5 городов, затраты на переход из города i в город j заданы матрицей, изображенной на рис.3.1(знак означает запрещение перехода).
|
j
|
1
|
2
|
3
|
4
|
5
|
i
|
|
|
|
|
|
|
1
|
|
|
3
|
4
|
7
|
5
|
2
|
|
6
|
#
|
7
|
4
|
8
|
3
|
|
9
|
6
|
#
|
5
|
10
|
4
|
|
4
|
7
|
5
|
#
|
8
|
5
|
|
3
|
9
|
8
|
7
|
#
|
Рис 3.1. Матрица затрат в задаче коммивояжера
Алгоритм метода ветвей и границ применительно к задаче коммивояжера:
1. Оценка вариантов. Пусть множество всех вариантов задачи. Вычислим оценку этого множества. Рассмотрим конкретный цикл с номерами городов . Затраты в таком цикле будут следующими:
.
Определим числа . Эти числа представляют собой минимальные затраты на переход из города i во все другие города (рис.3.2).
|
j
|
1
|
2
|
3
|
4
|
5
|
|
|
i
|
|
|
|
|
|
|
|
hi
|
1
|
|
#
|
3
|
4
|
7
|
5
|
|
3
|
2
|
|
6
|
#
|
7
|
4
|
8
|
|
4
|
3
|
|
9
|
6
|
#
|
5
|
10
|
|
5
|
4
|
|
4
|
7
|
5
|
#
|
8
|
|
4
|
5
|
|
3
|
9
|
8
|
7
|
#
|
|
3
|
Рис 3.2. Минимальные затраты на выход из города в задаче коммивояжера
Так как из каждого города нужно выйти, суммарные затраты составят не меньше чем . Вычтем эти числа из каждого элемента матрицы затрат . Очевидно, что теперь суммарные затраты составят .
Матрица затрат примет следующий вид:
|
j
|
1
|
2
|
3
|
4
|
5
|
i
|
|
|
|
|
|
|
1
|
|
#
|
0
|
1
|
4
|
2
|
2
|
|
2
|
#
|
3
|
0
|
4
|
3
|
|
4
|
1
|
#
|
0
|
5
|
4
|
|
0
|
3
|
1
|
#
|
4
|
5
|
|
0
|
6
|
5
|
4
|
#
|
Рис 3.3. Матрица затрат с вычетом
Рассмотрим минимальные величины по столбцам , . Эти числа представляют собой минимальные затраты на вход в город j. Так как в каждый город нужно войти, есть минимальные затраты на всем пути.
|
j
|
1
|
2
|
3
|
4
|
5
|
i
|
|
|
|
|
|
|
1
|
|
#
|
0
|
1
|
4
|
2
|
2
|
|
2
|
#
|
3
|
0
|
4
|
3
|
|
4
|
1
|
#
|
0
|
5
|
4
|
|
0
|
3
|
1
|
#
|
4
|
5
|
|
0
|
6
|
5
|
4
|
#
|
|
|
|
|
|
|
|
|
gj
|
0
|
0
|
1
|
0
|
2
|
Рис 3.4. Минимальные затраты на вход в города в задаче коммивояжера
Матрица называется приведенной матрицей, и значение функции через элементы этой матрицы будет следующее:
.
Очевидно, что оценка . Матрица представлена в следующем виде:
|
j
|
1
|
2
|
3
|
4
|
5
|
i
|
|
|
|
|
|
|
1
|
|
#
|
0
|
0
|
4
|
0
|
2
|
|
2
|
#
|
2
|
0
|
2
|
3
|
|
4
|
1
|
#
|
0
|
3
|
4
|
|
0
|
3
|
0
|
#
|
2
|
5
|
|
0
|
6
|
4
|
4
|
#
|
Рис. 3.5. Приведенная матрица затрат
.
2. Ветвление. Зададим множество , где - номер шага, - варианты множеств решений.
1) - множество всех маршрутов, содержащих путь из города i в город j;
2) - множество всех маршрутов, не содержащих путь из города i в город j;
В группу 1) включаем такой переход, который характеризуется минимальными (нулевыми) затратами. Поскольку таких переходов несколько (в данном случае 8), то среди нулевых элементов приведенной матрицы затрат выбираем такой путь, чтобы в группу 2) попали варианты с наибольшими затратами. Тогда для этих двух множеств будут получены оценки, максимально отличающиеся друг от друга.
Выбираем пару городов . Если несколько пар –определяем числа . Первое слагаемое в этом выражении характеризует минимальные затраты на выход из города r (переход из r в m запрещен), второе слагаемое – минимальные затраты на вход в город m при этом же условии. Сумма этих чисел дает минимальные затраты для множества маршрутов, не содержащих переход из r в m. Приведем результаты вычислений этих затрат:
|
j
|
1
|
2
|
3
|
4
|
5
|
|
|
i
|
|
|
|
|
|
|
|
i
|
1
|
|
#
|
0
|
0
|
4
|
0
|
|
0
|
2
|
|
2
|
#
|
2
|
0
|
2
|
|
2
|
3
|
|
4
|
1
|
#
|
0
|
3
|
|
1
|
4
|
|
0
|
3
|
0
|
#
|
2
|
|
0
|
5
|
|
0
|
6
|
4
|
4
|
#
|
|
4
|
|
|
|
|
|
|
|
|
|
|
j
|
0
|
1
|
0
|
0
|
2
|
|
|
Рис. 3.6. Минимальные затраты на выход из города
Максимизация затрат по парам городов с нулевыми затратами дает в результате переход из 5-го города в 1-й город (максимальные затраты равны 4):
|
j
|
1
|
2
|
3
|
4
|
5
|
|
|
i
|
|
|
|
|
|
|
|
i
|
1
|
|
|
1
|
0
|
|
2
|
|
0
|
2
|
|
|
|
|
2
|
|
|
2
|
3
|
|
|
|
|
1
|
|
|
1
|
4
|
|
0
|
|
0
|
|
|
|
0
|
5
|
|
4
|
|
|
|
|
|
4
|
|
|
|
|
|
|
|
|
|
|
j
|
0
|
1
|
0
|
0
|
2
|
|
|
Рис. 3.7. Минимальные затраты на выход из города
и максимальные затраты при запрещенном переходе из города в город
Приведем дерево вариантов после первого шага алгоритма с оценками снизу множества решений (рис. 5).
Рис. 5. Дерево вариантов после первого шага.
На втором шаге развиваем множество , имеющее наименьшую оценку.
На следующем шаге вычеркиваем из матрицы затрат 5-ю строку и 1-й столбец, делая невозможным обратный переход (1,5), то есть :
|
j
|
2
|
3
|
4
|
5
|
i
|
|
|
|
|
|
1
|
|
0
|
0
|
4
|
#
|
2
|
|
#
|
2
|
0
|
2
|
3
|
|
1
|
#
|
0
|
3
|
4
|
|
3
|
0
|
#
|
2
|
Рис. 3.10. матрица затрат после первого шага
Повторяем определение оценки для новой матрицы:
|
j
|
2
|
3
|
4
|
5
|
|
|
i
|
|
|
|
|
|
|
hi
|
1
|
|
0
|
0
|
4
|
#
|
|
0
|
2
|
|
#
|
2
|
0
|
2
|
|
0
|
3
|
|
1
|
#
|
0
|
3
|
|
0
|
4
|
|
3
|
0
|
#
|
2
|
|
0
|
Рис 3.11. Минимальные затраты на выход из города
|
j
|
2
|
3
|
4
|
5
|
i
|
|
|
|
|
|
1
|
|
0
|
0
|
4
|
#
|
2
|
|
#
|
2
|
0
|
2
|
3
|
|
1
|
#
|
0
|
3
|
4
|
|
3
|
0
|
#
|
2
|
|
|
|
|
|
|
|
gj
|
0
|
0
|
0
|
2
|
Рис 3.12. Минимальные затраты на вход в города
|
j
|
2
|
3
|
4
|
5
|
|
|
i
|
|
|
|
|
|
|
i
|
1
|
|
0
|
0
|
4
|
#
|
|
0
|
2
|
|
#
|
2
|
0
|
0
|
|
0
|
3
|
|
1
|
#
|
0
|
1
|
|
1
|
4
|
|
3
|
0
|
#
|
0
|
|
0
|
|
|
|
|
|
|
|
|
|
j
|
1
|
0
|
0
|
0
|
|
|
|
j
|
2
|
3
|
4
|
5
|
|
|
i
|
|
|
|
|
|
|
i
|
1
|
|
1
|
0
|
|
|
|
0
|
2
|
|
|
|
0
|
0
|
|
0
|
3
|
|
|
|
1
|
|
|
1
|
4
|
|
|
0
|
|
|
|
0
|
|
|
|
|
|
|
|
|
|
j
|
1
|
0
|
0
|
0
|
|
|
Рис. 3.13. Числа , и максимальные затраты при запрещенном переходе из города в город
Вычеркиваем 1-ю строку и 2-й столбец.
Запрещаем переход .
|
j
|
3
|
4
|
5
|
i
|
|
|
|
|
2
|
|
2
|
0
|
#
|
3
|
|
#
|
0
|
1
|
4
|
|
0
|
#
|
0
|
Рис. 3.14. Приведенная матрица затрат после второго шага
Ниже показано полученное дерево вариантов.
Рис. 3.14. Дерево вариантов после второго шага
Снова определяем оценку:
|
j
|
3
|
4
|
5
|
|
|
|
|
|
|
|
j
|
3
|
4
|
5
|
i
|
|
|
|
|
|
hi
|
|
|
|
|
i
|
|
|
|
|
2
|
|
2
|
0
|
#
|
|
0
|
|
|
|
|
2
|
|
2
|
0
|
#
|
3
|
|
#
|
0
|
1
|
|
0
|
|
|
|
|
3
|
|
#
|
0
|
1
|
4
|
|
0
|
#
|
0
|
|
0
|
|
|
|
|
4
|
|
0
|
#
|
0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gj
|
0
|
0
|
0
|
Рис. 3.15. Числа и
|
j
|
3
|
4
|
5
|
|
|
|
|
|
|
|
j
|
3
|
4
|
5
|
|
|
i
|
|
|
|
|
|
i
|
|
|
|
|
i
|
|
|
|
|
|
i
|
2
|
|
2
|
0
|
#
|
|
2
|
|
|
|
|
2
|
|
|
2
|
|
|
2
|
3
|
|
#
|
0
|
1
|
|
1
|
|
|
|
|
3
|
|
|
1
|
|
|
1
|
4
|
|
0
|
#
|
0
|
|
0
|
|
|
|
|
4
|
|
2
|
|
1
|
|
0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
j
|
2
|
0
|
1
|
|
|
|
|
|
|
|
j
|
2
|
0
|
1
|
|
|
Рис. 3.16. . Числа , и максимальные затраты при запрещенном переходе из города в город
Вычеркиваем 2-ю строку, 4-й столбец, запрещаем переход :
Рис. 3.17. Приведенная матрица затрат на последнем шаге
Остается единственный вариант (стоимость - 1).
Полный замкнутый путь: с затратами 3+3+4+5+10=25. Сравнивая полученное решение с оценками множеств , приходим к выводу, что лучшего решения в этих множествах нет, и они могут быть отброшены (рис. 6).
Рис. 6. Дерево вариантов после третьего шага.
3. Отбрасывание вариантов. Если стоимость нашего варианта (25) оказалась бы выше стоимости какого-нибудь из «отвергнутых» вариантов (те, что справа), то пришлось бы раскрывать другой вариант. В данном случае задача решена.
Ниже приведен документа MATHCAD (док. Д.6), решающего задачу коммивояжера. Здесь С – матрица затрат в задаче с 5 городами, Аtab – таблица расчетов с приведенной матрицей, p ,q – числа соответственно, Сn_1 – матрица цен для задачи на втором шаге с меньшей размерностью.
Лабораторная работа №2. Задача ДП
Определить оптимальные вложения ресурса в 100 ед. частями xj по 10 ед. в п=с+3 проектов с функциями прибыли
Достарыңызбен бөлісу: |