15684-1 (Задача коммивояжера), страница 5
Описание файла
Документ из архива "Задача коммивояжера", который расположен в категории "". Всё это находится в предмете "экономика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "экономика" в общих файлах.
Онлайн просмотр документа "15684-1"
Текст 5 страницы из документа "15684-1"
Попробуем решить данным алгоритмом ЗК для восьми городов. Пусть имеем восемь городов, расположение которых показано на рис. 11. Матрица расстояний приведена рядом на табл. 13. Промежуточные построения кратчайшего тура показаны пунктирными линиями, цифры – порядок удаления рёбер. Таким образом, имеем для данного случая кратчайший тур 1-3-7-5-4-8-6-2-1. Длина этого тура: D=6+7+5+2+6+5+13+13=57. Этот результат является правильным, т. к. алгоритм лексического перебора, который никогда не ошибается, даёт точно такой же тур. (Следует также отметить, что жадный алгоритм для этого случая ошибается всего на 1 и даёт тур 1-3-4-5-7-8-6-2-1 длиной в 58).
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
1 | 13 | 6 | 13 | 14 | 15 | 14 | 16 | |
2 | 13 | 11 | 11 | 8 | 13 | 17 | 14 | |
3 | 6 | 11 | 5 | 6 | 11 | 7 | 11 | |
4 | 13 | 11 | 5 | 2 | 6 | 7 | 6 | |
5 | 14 | 8 | 6 | 2 | 6 | 5 | 6 | |
6 | 15 | 13 | 11 | 6 | 6 | 13 | 5 | |
7 | 14 | 17 | 7 | 7 | 5 | 13 | 9 | |
8 | 16 | 14 | 11 | 6 | 6 | 5 | 9 | |
табл. 13 |
О дним из возможных недостатков такого алгоритма является необходимость знать не матрицу расстояний, а координаты каждого города на плоскости. Если нам известна матрица расстояний между городами, но неизвестны их координаты, то для их нахождения нужно будет решить n систем квадратных уравнений с n неизвестными для каждой координаты. Уже для 6 городов это сделать очень сложно. Если же, наоборот, имеются координаты всех городов, но нет матрицы расстояний между ними, то создать эту матрицу несложно. Это можно легко сделать в уме для 5-6 городов. Для большего количества городов можно воспользоваться возможностями компьютера, в то время как промоделировать решение системы квадратных уравнений на компьютере довольно сложно.
На основе вышеизложенного можно сделать вывод, что мой алгоритм, наряду с деревянным алгоритмом и алгоритмом Дейкстры, можно отнести к приближённым (хотя за этим алгоритмом ни разу не было замечено выдачи неправильного варианта).
1.2.6. Анализ методов решения задачи коммивояжера
Для подведения итогов в изучении методов решения ЗК протестируем наиболее оптимальные алгоритмы на компьютере по следующим показателям: количество городов, время обработки, вероятность неправильного ответа. Данные занесём в таблицу.
Алгоритм лексического перебора | |||
Кол-во городов | Время обработки, c | Вероятность неправильного ответа, % | Тип алгоритма |
10 | 41 | 0 | точный |
12 | 12000=3ч.20мин | 0 | |
32 | -* | 0 | |
100 | -* | 0 | |
Метод ветвей и границ | |||
10 | ~0 | 0 | точный |
32 | ~0.0001 | 0 | |
100 | 1.2 | 0 | |
Мой алгоритм решения ЗК | |||
10 | 0.001 | 0 | приближенный |
32 | 2.5 | 0 | |
100 | 6 | 0 |
*- ЗК с таким количеством городов методом лексического перебора современный компьютер не смог бы решить даже за всё время существования Вселенной.
Как видим по результатам этой таблицы, алгоритм лексического перебора можно применять лишь в случае с количеством городов 5..12. Метод ветвей и границ, наряду с моим методом, можно применять всегда. Хотя мой метод я отнёс к приближённым алгоритмам, он фактически является точным, так как доказать обратное ещё не удалось.
1.3 Практическое применение задачи коммивояжера
Кроме очевидного применения ЗК на практике, существует ещё ряд задач, сводимых к решению ЗК.
Задача о производстве красок. Имеется производственная линия для производства n красок разного цвета; обозначим эти краски номерами 1,2… n. Всю производственную линию будем считать одним процессором.. Будем считать также, что единовременно процессор производит только одну краску, поэтому краски нужно производить в некотором порядке Поскольку производство циклическое, то краски надо производить в циклическом порядке =(j1,j2,..,jn,j1). После окончания производства краски i и перед началом производства краски j надо отмыть оборудование от краски i. Для этого требуется время C[i,j]. Очевидно, что C[i,j] зависит как от i, так и от j, и что, вообще говоря,C[i,j]≠C[j,i]. При некотором выбранном порядке придется на цикл производства красок потратить время.
Таким образом, ЗК и задача о минимизации времени переналадки – это просто одна задача, только варианты ее описаны разными словами.
Задача о дыропробивном прессе. Дыропробивной пресс производит большое число одинаковых панелей – металлических листов, в которых последовательно по одному пробиваются отверстия разной формы и величины. Схематически пресс можно представить в виде стола, двигающегося независимо по координатам 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)
Проделать то же самое по оси y, затратив время ti,j(y)
Повернуть головку по кратчайшей из двух дуг из положения zi в положение zj, затратив время ti,j(z) .
Пробить j-тое отверстие, затратив время tj.
Конкретный вид функций t(x), t(y), t(z) зависит от механических свойств пресса и достаточно громоздок. Явно выписывать эти функции нет необходимости
Действия 1-3 (переналадка с i-того отверстия j-тое) происходит одновременно, и пробивка происходит немедленно после завершения самого длительного из этих действий. Поэтому
С[i,j] = max(t(x), t(y), t(z))
Теперь, как и в предыдущем случае, задача составления оптимальной программы для дыропробивного пресса сводится к ЗК (здесь - симметричной).
Выводы
Изучены эвристический, приближенный и точный алгоритмы решения ЗК. Точные алгоритмы решения ЗК – это полный перебор или усовершенствованный перебор. Оба они, особенно первый, не эффективны при большом числе вершин графа.
Предложен собственный эффективный метод решения ЗК на основе построения выпуклого многоугольника и включения в него центральных вершин (городов).
Проведён анализ наиболее рациональных методов решения ЗК и определены области их эффективного действия: для малого числа вершин можно использовать точный метод лексического перебора; для большого числа вершин рациональнее применять метод ветвей и границ или метод автора работы (Анищенко Сергея Александровича).
Изучены практические применения ЗК и задачи с переналадками, сводимые к ЗК.
Приведены тексты программ, позволяющие решить ЗК различными методами.
Список литературы
О. Оре Графы и их применение. Пер. с англ. под ред. И.М. Яглома. - М., «Мир», 1965, 174 с.
В. П. Сигорский. Математический аппарат инженера. - К., «Техніка», 1975, 768 с.
Ю. Н. Кузнецов, В. И. Кузубов, А. Б. Волощенко. Математическое программирование: учебное пособие. 2-е изд. перераб. и доп. - М.; Высшая школа, 1980, 300 с., ил.
Е. В. Маркова, А. Н. Лисенков. Комбинаторные планы в задачах многофакторного эксперимента. – М., Наука, 1979, 345 с.
Е. П. Липатов. Теория графов и её применения. - М., Знание, 1986, 32 с.
В. М. Бондарев, В. И. Рублинецкий, Е. Г. Качко. Основы программирования. – Харьков, Фолио; Ростов на Дону, Феникс, 1998, 368 с.
Ф. А. Новиков Дискретная математика для программистов. - Санкт-Петербург, Питер, 2001, 304 с., ил.