Задача на тему Решение задачи коммивояжера методом ветвей и границ
Работа добавлена на сайт bukvasha.net: 2014-11-09Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
от 25%
договор
Решение задачи коммивояжера методом ветвей и границ
ОпределенияГрафом
Маршрутом в графе
Постановка задачи
Коммивояжер должен объездить n городов. Для того чтобы сократить расходы, он хочет построить такой маршрут, чтобы объездить все города точно по одному разу и вернуться в исходный с минимумом затрат.В терминах теории графов задачу можно сформулировать следующим образом. Задано n вершин и матрица {cij}, где cij ≥0 – длинна (или цена) дуги (i, j),
Решение задачи
Основная идея метода ветвей и границ состоит в том, что вначале строят нижнюю границу φ длин множества маршрутов Z. Затем множество маршрутов разбивается на два подмножества таким образом, чтобы первое подмножествоСравнивая нижние границы φ (
Затем одно из подмножеств
Если же такой найдется, то анализ оборванных ветвей продолжается относительно нового значения длины маршрута. Его называют вторым рекордом. Процесс решения заканчивается, когда будут проанализированы все подмножества.
Для практической реализации метода ветвей и границ применительно к задаче коммивояжера укажем прием определения нижних границ подмножеств и разбиения множества маршрутов на подмножества (ветвление).
Для того чтобы найти нижнюю границу воспользуемся следующим соображением: если к элементам любого ряда матрицы задачи коммивояжера (строке или столбцу) прибавить или вычесть из них некоторое число, то от этого оптимальность плана не изменится. Длина же любого маршрутом коммивояжера изменится на данную величину.
Вычтем из каждой строки число, равное минимальному элементу этой строки. Вычтем из каждого столбца число, равное минимальному элементу этого столбца. Полученная матрица называется приведенной по строкам и столбцам. Сумма всех вычтенных чисел называется константой приведения.
Константу приведения следует выбирать в качестве нижней границы длины маршрутов.
Разбиение множества маршрутов на подмножества
Для выделения претендентов на включение во множество дуг, по которым производится ветвление, рассмотрим в приведенной матрице все элементы, равные нулю. Найдем степени Θij нулевых элементов этой матрицы. Степень нулевого элемента Θij равна сумме минимального элемента в строке i и минимального элемента в столбце j (при выборе этих минимумов cij – не учитывается). С наибольшей вероятностью искомому маршруту принадлежат дуги с максимальной степенью нуля.
Для получения платежной матрицы маршрутов, включающей дугу (i, j) вычеркиваем в матрице строку i и столбец j, а чтобы не допустить образования цикла в маршруте, заменяем элемент, замыкающий текущую цепочку на бесконечность.
Множество маршрутов, не включающих дугу (i, j) получаем путем замены элемента cij на бесконечность.
Пример решения задачи коммивояжера методом ветвей и границ
Коммивояжер должен объездить 6 городов. Для того чтобы сократить расходы, он хочет построить такой маршрут, чтобы объездить все города точно по одному разу и вернуться в исходный с минимумом затрат. Исходный город A. Затраты на перемещение между городами заданы следующей матрицей: A | B | C | D | E | F | |
A | ∞ | 26 | 42 | 15 | 29 | 25 |
B | 7 | ∞ | 16 | 1 | 30 | 25 |
C | 20 | 13 | ∞ | 35 | 5 | 0 |
D | 21 | 16 | 25 | ∞ | 18 | 18 |
E | 12 | 46 | 27 | 48 | ∞ | 5 |
F | 23 | 5 | 5 | 9 | 5 | ∞ |
Решение задачи
Для удобства изложения везде ниже в платежной матрице заменим имена городов (A, B, …, F) номерами соответствующих строк и столбцов (1, 2, …, 6).Найдем нижнюю границу длин множества всех маршрутов. Вычтем из каждой строки число, равное минимальному элементу этой строки, далее вычтем из каждого столбца число, равное минимальному элементу этого столбца, и таким образом приведем матрицу по строкам и столбцам. Минимумы по строкам: r1=15, r2=1, r3=0, r4=16, r5=5, r6=5.
После их вычитания по строкам получим:
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ∞ | 11 | 27 | 0 | 14 | 10 |
2 | 6 | ∞ | 15 | 0 | 29 | 24 |
3 | 20 | 13 | ∞ | 35 | 5 | 0 |
4 | 5 | 0 | 9 | ∞ | 2 | 2 |
5 | 7 | 41 | 22 | 43 | ∞ | 0 |
6 | 18 | 0 | 0 | 4 | 0 | ∞ |
После их вычитания по столбцам получим приведенную матрицу:
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ∞ | 11 | 27 | 0 | 14 | 10 |
2 | 1 | ∞ | 15 | 0 | 29 | 24 |
3 | 15 | 13 | ∞ | 35 | 5 | 0 |
4 | 0 | 0 | 9 | ∞ | 2 | 2 |
5 | 2 | 41 | 22 | 43 | ∞ | 0 |
6 | 13 | 0 | 0 | 4 | 0 | ∞ |
Для выделения претендентов на включение во множество дуг, по которым производится ветвление, найдем степени Θij нулевых элементов этой матрицы (суммы минимумов по строке и столбцу). Θ14 = 10 + 0,
Θ24 = 1 + 0, Θ36 = 5+0, Θ41 = 0 + 1, Θ42 = 0 + 0, Θ56 = 2 + 0, Θ62 = 0 + 0,
Θ63 = 0 + 9, Θ65 = 0 + 2. Наибольшая степень Θ14 = 10. Ветвление проводим по дуге (1, 4).
Нижняя граница для множества
В матрице, соответствующей
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ∞ | 11 | 27 | ∞ | 14 | 10 |
2 | 1 | ∞ | 15 | 0 | 29 | 24 |
3 | 15 | 13 | ∞ | 35 | 5 | 0 |
4 | 0 | 0 | 9 | ∞ | 2 | 2 |
5 | 2 | 41 | 22 | 43 | ∞ | 0 |
6 | 13 | 0 | 0 | 4 | 0 | ∞ |
В матрице, соответствующей
1 | 2 | 3 | 5 | 6 | |
2 | 1 | ∞ | 15 | 29 | 24 |
3 | 15 | 13 | ∞ | 5 | 0 |
4 | ∞ | 0 | 9 | 2 | 2 |
5 | 2 | 41 | 22 | ∞ | 0 |
6 | 13 | 0 | 0 | 0 | ∞ |
φ (
Рис. 1 Ветвление на первом шаге
Приведенная платежная матрица для
1 | 2 | 3 | 5 | 6 | |
2 | 0 | ∞ | 15 | 29 | 24 |
3 | 14 | 13 | ∞ | 5 | 0 |
4 | ∞ | 0 | 9 | 2 | 2 |
5 | 1 | 41 | 22 | ∞ | 0 |
6 | 12 | 0 | 0 | 0 | ∞ |
В матрице для
2 | 3 | 5 | 6 | |
3 | 13 | ∞ | 5 | 0 |
4 | ∞ | 9 | 2 | 2 |
5 | 41 | 22 | ∞ | 0 |
6 | 0 | 0 | 0 | ∞ |
Нижняя граница для
Рис. 2 Ветвление на втором шаге
Приведенная платежная матрица для
2 | 3 | 5 | 6 | |
3 | 13 | ∞ | 5 | 0 |
4 | ∞ | 7 | 0 | 0 |
5 | 41 | 22 | ∞ | 0 |
6 | 0 | 0 | 0 | ∞ |
Нижняя граница для
2 | 3 | 5 | |
3 | 13 | ∞ | 5 |
4 | ∞ | 7 | 0 |
6 | 0 | 0 | ∞ |
Рис. 3 Ветвление на третьем шаге
Приведенная платежная матрица для
2 | 3 | 5 | |
3 | 8 | ∞ | 0 |
4 | ∞ | 7 | 0 |
6 | 0 | 0 | ∞ |
Нижняя граница для
2 | 3 | |
4 | ∞ | 7 |
6 | 0 | ∞ |
2 | 3 | |
4 | ∞ | 0 |
6 | 0 | ∞ |
SHAPE \* MERGEFORMAT
(3,5) |
55 |
(5, 6) |
63 |
62 |
(3, 5) |
Рис. 4 Ветвление на четвертом шаге
SHAPE \* MERGEFORMAT
62+0+0=62 |
63 |
67 |
(1, 4) |
64 |
72 |
(5, 6) |
50 |
(2, 1) |
55 |
(5, 6) |
(3, 5) |
62 |
(3, 5) |
47 |
Z |
48 |
(1,4) |
(2, 1) |
(4, 3) (6, 2) |
Рис. 5 Дерево ветвления с оценками
Полученный маршрутом коммивояжера z0 = (1, 4, 3, 5, 6, 2, 1) или (A-D-C-E-F-B-A).