Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1. Задачи / Образцы выполненных СРС 1-12 МАТЕСО / 12 / Солнцева Светлана, гр. 8512_СРС 12

.doc
Скачиваний:
29
Добавлен:
30.05.2015
Размер:
157.18 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ РОССИЙСКОЙ ФЕДЕРАЦИИ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра ОСУ

Самостоятельная работа студента №12

Задача о коммивояжере

Выполнила: студентка группы 8512

Солнцева Светлана Сергеевна

Проверил: Ротарь В.Г.

ТОМСК

2004

ЗАДАНИЕ

Решить задачу о коммивояжере, используя венгерский метод и алгоритм Флада. Необходимо найти маршрут коммивояжера, который бы включал в себя все города, при этом представлял из себя один единственный обход, т.е. в каждый город коммивояжер будет въезжать и выезжать один раз. Минимизировать транспортные издержки С.

ХОД РАБОТЫ

  1. Задача в формальном виде выглядит следующим образом:

при условиях

Запишем матрицу транспортных издержек Сij, используя код ФИО:

g

1

2

3

4

5

6

1

16 (О)

13 (Л)

15 (Н)

24 (Ц)

6 (Е)

2

3 (В)

19 (С)

3 (В)

6 (Е)

20 (Т)

3

13 (Л)

1 (А)

1 (А)

19 (С)

6 (Е)

4

18 (Р)

4 (Г)

6 (Е)

3 (В)

15 (Н)

5

1 (А)

19 (С)

16 (О)

13 (Л)

24 (Ц)

6

6 (Е)

3 (В)

1 (А)

19 (С)

3 (В)

Этап 1: подготовительный этап, использующий венгерский метод (алгоритм Флада):

  1. Переход g => g´ (ищем в каждой строке матрицы g минимальный элемент). Тогда коэффициент приведения матрицы , следовательно, .

  2. Переход g´ => g´´ (ищем в каждом столбце матрицы g´ минимальный элемент). Тогда коэффициент приведения матрицы , следовательно, .

  3. Операции (1) и (2) этапа 1 обеспечили в каждой строке и в каждом столбце появление хотя бы одного ноля.

  4. Подсчитываем в матрице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

    16

    13

    15

    24

    6

    6

    1

    10

    7

    9

    18

    0

    1

    10

    7

    9

    18

    0/12

    2

    3

    19

    3

    6

    20

    3

    2

    0

    16

    0

    3

    17

    2

    0/0

    16

    0/0

    3

    17

    3

    13

    1

    1

    19

    6

    1

    3

    12

    0

    0

    18

    5

    3

    12

    0/1

    0/0

    18

    5

    4

    18

    4

    6

    3

    15

    3

    4

    15

    1

    3

    0

    12

    4

    15

    1

    3

    0/3

    12

    5

    1

    19

    16

    13

    24

    1

    5

    0

    18

    15

    12

    23

    5

    0/12

    18

    15

    12

    23

    6

    6

    3

    1

    19

    3

    1

    6

    5

    2

    0

    18

    2

    6

    5

    2

    0/5

    18

    2

    Σ

    =

    15

    0

    0

    0

    0

    0

    0

    Σ

    =

    0

  5. Находим элемент с максимальной оценкой и вычеркиваем строку и столбец, на пересечении которых он расположен и составляем заново таблицу. Таким образом, ноль, имеющий максимальную оценку, равную 12, находится на позиции i = 5, j = 1. Следовательно, вычеркиваем строку №5 и столбец №1, а также позиции С15 присваиваем ∞.

  6. Так как все минимальные элементы по строкам и столбцам в матрице g''(1) равны нолю, следовательно, матрица не пересчитывается. Поэтому мы только находим оценки нолей в матрице g''(1) и находим элемент с максимальной оценкой, это элемент с максимальной оценкой, равной 12, находящийся в позиции i = 1, j = 6. Следовательно, вычеркиваем строку №1 и столбец №6, а также позиции С65 присваиваем ∞.

    g''(1)

    2

    3

    4

    5

    6

    1

    10

    7

    9

    0/12

    0

    2

    16

    0/3

    3

    17

    0

    3

    0/1

    0/0

    18

    5

    0

    4

    1

    3

    0/3

    12

    0

    6

    2

    0/5

    18

    2

    0

    0

    0

    0

    0

    0

    Σ

    =

    0

  7. Так как все минимальные элементы по строкам и столбцам в матрице g''(2) равны нолю, следовательно, матрица не пересчитывается. Поэтому мы только находим оценки нолей в матрице g''(2) и находим элемент с максимальной оценкой, это элемент с максимальной оценкой, равной 5, находящийся в позиции i = 6, j = 3. Следовательно, вычеркиваем строку №6 и столбец №3, а также позиции С35 присваиваем ∞.

    g''(2)

    2

    3

    4

    5

    2

    16

    0/3

    3

    0

    3

    0/1

    0/0

    18

    0

    4

    1

    3

    0/4

    0

    6

    2

    0/5

    18

    0

    0

    0

    0

    0

  8. Так как все минимальные элементы по строкам и столбцам в матрице g''(3) равны нолю, следовательно, матрица не пересчитывается. Поэтому мы только находим оценки нолей в матрице g''(3) и находим элемент с максимальной оценкой, это элемент с максимальной оценкой, равной 4, находящийся в позиции i = 4, j = 5. Следовательно, вычеркиваем строку №4 и столбец №5, а также позиции С34 присваиваем ∞.

    g''(3)

    2

    4

    5

    2

    0/3

    3

    0

    3

    0/1

    0/0

    0

    4

    1

    0/4

    0

    0

    0

    0

  9. Получаем конечные пункты маршрута: i = 2, j = 4 и i = 3, j = 2.

g''(4)

2

4

2

0

3

0

Таким образом, маршрут обхода выглядит следующим образом:

Построим дерево решений:

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

Z (X)min = 1 + 6 + 1 + 3 + 3 + 1 = 15

Соседние файлы в папке 12