Материал: 3080

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

11

поставить запрет в клетку (2,3), так как уже построен фрагмент тура из ребер (1,2) и (3,1), т.е. [3,1,2], и нужно запретить преждевременное замыкание (2,3). Эта матрица приводится по столбцу на 1 (табл. 8), таким образом, каждый тур соответствующего класса (т.е. тур, содержащий ребра (1,2) и (3,1)) стоит 36 и более.

 

3

4

5

6

2

1

3

1

0

4

01

-

1

3

5

0

02

-

0

6

3

2

03

-

 

 

табл. 8

 

 

 

3

4

6

2

1

3

03

4

03

-

3

5

0

03

0

 

табл. 9

 

 

 

3

 

4

4

 

0

 

-

5

 

0

 

0

 

 

табл. 10

 

Оцениваем теперь нули в приведенной матрице C[(1,2),(3,1)] нуль с максимальной оценкой 3 находится в клетке (6,5). Отрицательный вариант имеет оценку 38+3=41. Для получения оценки положительного варианта убираем строчку 6 и столбец 5, ставим запрет в клетку (5,6), см. табл. 9. Эта матрица неприводима. Следовательно, оценка положительного варианта не увеличивается (рис.5).

Оценивая нули в матрице на табл. 9, получаем ветвление по выбору ребра (2,6), отрицательный вариант получает оценку 36+3=39, а для получения оценки

положительного варианта вычеркиваем вторую строку и шестой столбец, получая матрицу на табл. 10.

В матрицу надо добавить запрет в клетку (5,3), ибо уже построен фрагмент тура [3,1,2,6,5] и надо запретить преждевременный возврат (5,3). Теперь, когда осталась матрица 2х2 с запретами по диагонали, достраиваем тур ребрами (4,3) и (5,4). Мы не зря ветвились, по положительным вариантам. Сейчас получен тур: 1→2→6→5→4→3→1 стоимостью в 36. При достижении низа по дереву перебора класс туров сузился до одного тура, а оценка снизу превратилась в точную стоимость.

12

Итак, все классы, имеющие оценку 36 и выше, лучшего тура не содержат. Поэтому соответствующие вершины вычеркиваются. Вычеркиваются также вершины, оба потомка которой вычеркнуты. Мы колоссально сократили полный перебор. Осталось проверить, не содержит ли лучшего тура класс, соответствующий матрице С[Not(1,2)], т.е. приведенной матрице С с запретом в клетке 1,2, приведенной на 1 по столбцу (что дало оценку 34+1=35). Оценка нулей дает 3 для нуля в клетке (1,3), так что оценка отрицательного варианта 35+3 превосходит стоимость уже полученного тура 36 и отрицательный вариант отсекается.

Для получения оценки положительного варианта исключаем из матрицы первую строку и третий столбец, ставим запрет (3,1) и получаем матрицу. Эта матрица приводится по четвертой строке на 1, оценка класса достигает 36 и кружок зачеркивается. Поскольку у вершины «все» убиты оба потомка, она убивается тоже. Вершин не осталось, перебор окончен. Мы получили тот же минимальный тур, который показан подчеркиванием на табл. 1.

Удовлетворительных теоретических оценок быстродействия алгоритма Литтла и родственных алгоритмов нет, но практика показывает, что на современных ЭВМ они часто позволяют решить ЗК с n = 100. Это огромный прогресс по сравнению с полным перебором. Кроме того, алгоритмы типа ветвей и границ являются, если нет возможности доводить их до конца, эффективными эвристическими процедурами.

1.3 Практическое применение задачи коммивояжера

Кроме очевидного применения ЗК на практике, существует ещё ряд задач, сводимых к решению ЗК.

Задача о производстве красок. Имеется производственная линия для производства n красок разного цвета; обозначим эти краски номерами 1,2,…,n. Всю производственную линию будем считать одним процессором.. Будем считать также, что единовременно процессор производит только одну краску, поэтому краски нужно производить в некотором порядке. Поскольку производство циклическое, то краски надо производить в циклическом порядке π=(j1,j2,…,jn,j1). После окончания производства краски i и перед началом производства краски j надо отмыть оборудование от краски i. Для этого

13

требуется время C[i,j]. Очевидно, что C[i,j] зависит как от i, так и от j, и что, вообще говоря,C[i,j]≠C[j,i]. При некотором выбранном порядке придется на цикл производства красок потратить время

Где tk - чистое время производства k-ой краски (не считая переналадок). Однако вторая сумма в правой части постоянна, поэтому полное время на цикл производства минимизируется вместе с общим временем на переналадку.

Таким образом, ЗК и задача о минимизации времени переналадки – это просто одна задача, только варианты ее описаны разными словами.

Задача о дыропробивном прессе. Дыропробивной пресс производит большое число одинаковых панелей – металлических листов, в которых последовательно по одному пробиваются отверстия разной формы и величины. Схематически пресс можно представить в виде стола, двигающегося независимо по координатам x, y, и вращающегося над столом диска, по периметру которого расположены дыропробивные инструменты разной формы и величины. Каждый инструмент присутствует в одном экземпляре. Диск может вращаться одинаково в двух направлениях (координата вращения z). Имеется собственно пресс, который надавливает на подвешенный под него инструмент тогда, когда под инструмент подведена нужная точка листа.

Операция пробивки j-того отверстия характеризуется четверкой чисел (xj,yj,zj,tj),, где xj,yj - координаты нужного положения стола, zj - координата нужного положения диска и tj - время пробивки j-того отверстия.

Производство панелей носит циклический характер: в начале и конце обработки каждого листа стол должен находиться в положениях (x0, y0) диск в положении z0 причем в этом положении отверстие не пробивается. Это начальное состояние системы можно считать пробивкой фиктивного нулевого отверстия. С параметрами (x0,y0,z0,0).

Чтобы пробить j-тое отверстие непосредственно после i-того необходимо произвести следующие действия:

1. Переместить стол по оси x из положения xi в положение xj, затрачивая при

этом время t(x)(|xi-xj|)=ti,j(x)

2. Проделать то же самое по оси y, затратив время ti,j(y)

14

3.Повернуть головку по кратчайшей из двух дуг из положения zi в положение zj, затратив время ti,j(z) .

4.Пробить j-тое отверстие, затратив время tj.

Конкретный вид функций t(x), t(y), t(z) зависит от механических свойств пресса и достаточно громоздок. Явно выписывать эти функции нет необходимости

Действия 1-3 (переналадка с i-того отверстия j-тое) происходит одновременно, и пробивка происходит немедленно после завершения самого длительного из этих действий. Поэтому

С[i,j] = max(t(x), t(y), t(z))

Теперь, как и в предыдущем случае, задача составления оптимальной программы для дыропробивного пресса сводится к ЗК (здесь - симметричной).

 

 

 

 

 

 

 

 

15

 

 

 

 

 

 

 

 

 

 

 

 

 

1.4. Индивидуальные задания

 

 

 

Задача 2.1.

 

 

 

 

Задача 2.6.

 

 

 

 

 

1

2

3

4

 

5

 

 

1

2

 

3

4

5

 

1

-

6

4

9

 

7

 

1

-

6

 

4

6

7

 

2

3

-

7

6

 

8

 

2

3

-

 

7

6

8

 

3

9

7

-

5

 

4

 

3

9

7

 

-

5

4

 

4

7

5

9

-

 

9

 

4

7

5

 

6

-

9

 

5

3

7

5

7

 

-

 

5

3

4

 

5

7

-

Задача 2.2.

 

 

 

 

Задача 2.7.

 

 

 

 

 

1

2

3

4

 

5

 

 

1

2

 

3

4

5

 

1

-

3

4

9

 

7

 

1

-

3

 

4

9

7

 

2

3

-

7

6

 

8

 

2

3

-

 

7

6

8

 

3

9

7

-

3

 

4

 

3

9

7

 

-

5

4

 

4

7

5

9

-

 

9

 

4

7

5

 

3

-

9

 

5

3

7

5

7

 

-

 

5

3

7

 

5

3

-

Задача 2.3.

 

 

 

 

Задача 2.8.

 

 

 

 

 

1

2

3

4

 

5

 

 

1

2

 

3

4

5

 

1

-

6

4

2

 

7

 

1

-

6

 

4

9

2

 

2

3

-

7

6

 

8

 

2

3

-

 

7

6

8

 

3

9

7

-

5

 

4

 

3

9

3

 

-

5

4

 

4

7

5

9

-

 

4

 

4

7

5

 

2

-

9

 

5

3

7

5

7

 

-

 

5

3

7

 

5

4

-

Задача 2.4.

 

 

 

 

Задача 2.9.

 

 

 

 

 

1

2

3

4

 

5

 

 

1

2

 

3

4

5

 

1

-

6

4

9

 

7

 

1

-

6

 

3

9

7

 

2

3

-

4

6

 

8

 

2

3

-

 

7

6

4

 

3

9

7

-

5

 

4

 

3

9

7

 

-

5

4

 

4

7

5

2

-

 

9

 

4

7

2

 

9

-

9

 

5

3

7

5

7

 

-

 

5

3

7

 

5

7

-

Задача 2.5.

 

 

 

 

Задача 2.10.

 

 

 

 

 

1

2

3

4

 

5

 

 

1

2

 

3

4

5

 

1

-

3

4

9

 

7

 

1

-

4

 

4

9

7

 

2

3

-

7

6

 

8

 

2

3

-

 

7

3

8

 

3

2

7

-

5

 

4

 

3

9

7

 

-

5

4

 

4

7

5

9

-

 

5

 

4

7

5

 

4

-

9

 

5

3

7

5

7

 

-

 

5

3

7

 

5

7

-