1. Задачи / Образцы выполненных СРС 1-12 МАТЕСО / 12 / СРС 12 Ярусова Н. 8512
.docФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ РОССИЙСКОЙ ФЕДЕРАЦИИ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра ОСУ
Самостоятельная работа студента №12
Задача о коммивояжере
Выполнил: студент группы 8512
Ярусов Н.К.
Проверил: Ротарь В.Г.
ТОМСК
2004
ЗАДАНИЕ
Решить задачу о коммивояжере, используя венгерский метод и алгоритм Флада. Необходимо найти маршрут коммивояжера, который бы включал в себя все города, при этом представлял из себя один единственный обход, т.е. в каждый город коммивояжер будет въезжать и выезжать один раз. Минимизировать транспортные издержки С.
ХОД РАБОТЫ
-
Задача в формальном виде выглядит следующим образом:
при условиях
Запишем матрицу транспортных издержек Сij, используя код ФИО:
g |
1 |
2 |
3 |
4 |
5 |
6 |
1 |
∞ |
18 (Р) |
21 (У) |
19 (С) |
16 (О) |
3 (В) |
2 |
15 (Н) |
∞ |
12 (К) |
16 (О) |
13 (Л) |
1 (А) |
3 |
11 (Й) |
12 (К) |
∞ |
15 (Н) |
19 (С) |
20(Т) |
4 |
1 (А) |
15 (Н) |
20 (Т) |
∞ |
15 (Н) |
16 (О) |
5 |
3 (В) |
10 (И) |
25 (Ч) |
33 (Я) |
∞ |
21(У) |
6 |
19 (С) |
16 (О) |
3 (В) |
15 (Н) |
10 (И) |
∞ |
Этап 1: подготовительный этап, использующий венгерский метод (алгоритм Флада):
-
Переход g => g´ (ищем в каждой строке матрицы g минимальный элемент). Тогда коэффициент приведения матрицы , следовательно, .
-
Переход g´ => g´´ (ищем в каждом столбце матрицы g´ минимальный элемент). Тогда коэффициент приведения матрицы , следовательно, .
-
Операции (1) и (2) этапа 1 обеспечили в каждой строке и в каждом столбце появление хотя бы одного ноля.
-
Подсчитываем в матрице g´´ для получившихся нулей их оценку, которая складывается из суммы минимальных элементов в строке i и в столбце j, соответствующих позиции ноля.
g
1
2
3
4
5
6
g'
1
2
3
4
5
6
g''
1
2
3
4
5
6
1
∞
18
21
19
16
3
3
1
∞
15
18
16
13
0
1
∞
14
18
12
6
0/6
2
15
∞
12
16
13
1
1
2
14
∞
11
15
12
0
2
14
∞
11
11
5
0/5
3
11
12
∞
15
19
20
11
3
0
1
∞
4
8
9
3
0/1
0/6
∞
0/8
1
9
4
1
15
20
∞
15
16
1
4
0
14
19
∞
14
15
4
0/7
13
19
∞
7
15
5
3
10
25
33
∞
21
3
5
0
7
22
30
∞
18
5
0/6
6
22
26
∞
18
6
19
16
3
15
10
∞
3
6
16
13
0
12
7
∞
6
16
12
0/11
8
0/1
∞
Σ
=
22
0
0
0
0
0
0
Σ
=
0
-
Находим элемент с максимальной оценкой и вычеркиваем строку и столбец, на пересечении которых он расположен и составляем заново таблицу. Таким образом, ноль, имеющий максимальную оценку, равную 11, находится на позиции i = 6, j = 3. Следовательно, вычеркиваем строку №6 и столбец №3, а также позиции С36 присваиваем ∞.
-
Пересчитываем матрицу по столбцам, находим оценки нолей в матрице g''(1) и находим элемент с максимальной оценкой, это элемент с максимальной оценкой, равной 11, находящийся в позиции i = 3, j = 4. Следовательно, вычеркиваем строку №3 и столбец №4, а также позиции С46 присваиваем ∞.
g''(1)
1
2
4
5
6
1
∞
14
12
5
0/5
0
2
14
∞
11
4
0/4
0
3
0/0
0/6
0/11
0/4
∞
0
4
0/6
13
∞
6
15
0
5
0/6
6
26
∞
18
0
0
0
0
0
0
Σ
=
0
-
Пересчитываем матрицу по столбцам, находим оценки нолей в матрице g''(2) и находим элемент с максимальной оценкой, это элемент с максимальной оценкой, равной 7 находящийся в позиции i = 5 j = 2. Следовательно, вычеркиваем строку №5 и столбец №2, а также позиции С25 присваиваем ∞.
g''(2)
1
2
5
6
1
∞
8
1
0/1
0
2
14
∞
0/1
0/0
0
4
0/2
7
2
∞
0
5
0/0
0/7
∞
18
0
0
0
0
0
-
Так как все минимальные элементы по строкам и столбцам в матрице g''(3) равны нолю, следовательно, матрица не пересчитывается. Поэтому мы только находим оценки нолей в матрице g''(3) и находим элемент с максимальной оценкой, это элемент с максимальной оценкой, равной 16, находящийся в позиции i = 4, j = 1. Следовательно, вычеркиваем строку №4 и столбец №5, а также позиции С16 присваиваем ∞.
g''(3)
1
5
6
1
∞
1
0/1
0
2
14
∞
0/0
0
4
0/16
2
∞
0
0
0
0
-
Получаем конечные пункты маршрута: i = 1, j = 5 и i = 2, j = 6.
g''(4) |
5 |
6 |
1 |
1 |
∞ |
2 |
∞ |
0/0 |
|
1 |
|
g''(4) |
5 |
6 |
1 |
0 |
∞ |
2 |
∞ |
0 |
Таким образом, маршрут обхода выглядит следующим образом:
Построим дерево решений: