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

4_ Коммивояжер

.pdf
Скачиваний:
20
Добавлен:
28.03.2016
Размер:
623.01 Кб
Скачать

Задача о назначениях

0.Выделить в каждой строке min элемент. Сосчитать столбцы с - минимальными элементами, если все, то STOP.

1.Выберем столбец без -основы и обозначим его S1.

2.Увеличим S1 на максимальное так, чтобы все -минимальные элементы остались -минимальными. Получим для строки i1 новый-минимальный элемент ci1S1 — альтернативная основа для строки i1.

3.Для строки i1 столбец j(i1) с -основой пометим меткой S2.

4.Увеличим S1 и S2 на максимальное так, чтобы все -основы остались -минимальными элементами. Найдем новую альтернативную основу в одном из столбцов S1 или S2. Пусть она оказалась в строке i2. Пометим столбец j(i2) меткой S3 и будем продолжать этот процесс до тех пор пока не встретим столбец с двумя или более основами.

5.Произведем замену основ, начиная со строки, где лежит последняя альтернативная основа (строка ik).

21

Лекция 4. Задача коммивояжера

 

 

36

44

37

41

 

 

 

 

 

32

 

48

57

43

 

 

 

 

 

49

41

 

39

60

 

 

 

 

 

38

34

35

 

52

 

 

 

 

 

40

43

47

37

 

 

 

 

 

 

22 14 18 21 30

16 15 17 19 21

20 22 18 21 19

14 21 20 16 18

14 17 15 20 18

22

Лекция 4. Задача коммивояжера

 

Эвристические алгоритмы построения допустимого решения

Алгоритм АБ «Иди в ближайший из непройденных городов»

1.Выбираем произвольный город i1.

2.Находим ближайший город к i1, обозначаем его i2 и помечаем город

i1:

ci1i2 min ci1 j . j i1

3.На k-м шаге находим ближайший город к ik, обозначаем его ik+1 и помечаем город ik :

ci i

min ci j .

k k 1

j i1 ,...,ik

k

 

 

Теорема 4. Для любого r > 1 найдется пример I задачи коммивояжера такой, что

AБ(I) r OPT(I)

даже при условии, что cij cik + ckj, для всех 1 i, j, k n.

23

Лекция 4. Задача коммивояжера

 

Трудный пример для алгоритма АБ

Имеется 15 городов, расположенных на окружности длиной 15 единиц,

OPT(I) =15.

 

 

с1

 

 

 

 

Алгоритм АБ получает 27 единиц:

c3 1

1

 

c12 1 c13

 

 

 

 

 

 

 

 

 

 

1

 

1

 

 

 

 

c2

 

 

 

 

1

 

 

 

 

 

 

 

1

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

c7

2

 

 

 

 

2

c11

 

 

 

 

 

 

 

1

 

3

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

3

 

 

c14

c4

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

1

1

1

 

 

 

 

1

c9

 

 

 

 

 

 

 

 

 

 

 

c6

 

 

 

 

 

1

 

 

 

 

 

 

 

 

1

 

 

 

 

 

c10

 

c5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

c15

1

 

c8

1

 

 

 

 

 

 

24

Лекция 4. Задача коммивояжера

 

Алгоритм с гарантированной точностью для Евклидовой задачи

Остовное дерево. Дан связный граф G = (V, E), каждому ребру e E приписан вес we 0. Найти в G остовное дерево с минимальным суммарным весом ребер.

Алгоритм Краcкала AK дает точное решение задачи и нижнюю оценку для задачи коммивояжера:

AK(I) OPT(I).

25

Лекция 4. Задача коммивояжера

 

Двойной обход остовного дерева

Обходим остовное дерево по правилу алгоритма «Поиск в глубину». Получаем маршрут, проходящий через все вершины. Листья посещаются один раз, но внутренние вершины посещаются несколько раз.

26

Лекция 4. Задача коммивояжера

 

Перестройка остовного дерева

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

27

Лекция 4. Задача коммивояжера

 

Оценка точности алгоритма

Теорема 5. Если матрица (cij) удовлетворяет неравенству треугольника, то алгоритм перестройки двойного обхода остовного дерева AST получает Гамильтонов цикл не более чем в 2 раза хуже оптимального для любого примера I задачи коммивояжера, то есть

AST (I) 2 OPT(I).

Доказательство. Для длины двойного обхода имеем

2 AK (I) 2 OPT(I).

Пусть новое ребро e, не содержащееся в двойном обходе, заменяет цепочку ребер {e1, e2,…, ek}. Из неравенства треугольника следует, что

k

we wei ,

i 1

то есть AST (I) 2 AK (I) 2 OPT(I).

28

Лекция 4. Задача коммивояжера

 

Теорема 6. Полученная оценка точности

AST (I) 2 OPT(I)

является неулучшаемой.

Доказательство. Приведем пример семейства исходных данных задачи коммивояжера, на котором оценка 2 достигается асимптотически.

Рассмотрим следующий пример на полного графа с n вершинами, вес толстых ребер равен 1, остальных – 2. Вес оптимального решения n:

29

Лекция 4. Задача коммивояжера

 

Для этого примера минимальное остовное дерево имеет вид:

Алгоритм перестройки двойного обхода может получить решение:

Длина этого Гамильтонова цикла AST 2n -2 Оптимальное решение задачи OPT(I) n

Таким образом, при n получаем AST (I) / OPT(I) 2.

30

Лекция 4. Задача коммивояжера

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]