Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задача коммивояжера Эйлера, Необходим алгоритм 
V
    Опции темы
iDeus
Дата 7.6.2009, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Deus vult
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 5.6.2008
Где: Vladivostok

Репутация: нет
Всего: нет



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

Дан пяти-вершинный неориентированный граф, где каждая вершина соединена с каждой. Известны веса ребер. 

user posted image

Не мог бы кто-нибудь описать алгоритм решения задачи методом Эйлера?

Заранее очень благодарен.   
PM MAIL ICQ Skype GTalk   Вверх
maxdiver
Дата 8.6.2009, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 29.1.2008
Где: Саратов

Репутация: 16
Всего: 18



Интересно, первый раз слышу про алгоритм Эйлера (хотя не факт, что Эйлер - действительно автор этого алгоритма smile ).

Ну а описание в Окулове мне показалось нормальным. Находим минимальное остовное дерево (т.е. набор из n-1 рёбер наименьшего суммарного веса, который связывает все вершины). Потом там написано, что строим эйлеров цикл в этом остовном дереве, а затем из эйлерова цикла удаляем повторы вершин, и останется результат. Ну этот шаг можно представить проще: просто запускаем обход в глубину на остовном дереве, и каждый раз, когда мы приходим в какую-то новую вершину, добавляем её в ответ.
PM MAIL WWW ICQ   Вверх
iDeus
Дата 9.6.2009, 07:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Deus vult
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 5.6.2008
Где: Vladivostok

Репутация: нет
Всего: нет



По Окулову определенная роль отводится неравенству треугольников. Вот основной момент мне не понятный. 
PM MAIL ICQ Skype GTalk   Вверх
maxdiver
Дата 9.6.2009, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 29.1.2008
Где: Саратов

Репутация: 16
Всего: 18



Наличие у графа этого свойства (что d[i][j] + d[j][k] >= d[i][k]) говорит о том, что алгоритм Эйлера даст "достаточно хороший" ответ, т.е. не более чем в 2 раза дороже, чем оптимальный гамильтонов путь (на то он и приближенный алгоритм).

Откуда это следует?

С одной стороны, стоимость минимального каркаса < стоимости оптимального гамильтонова пути (действительно, гамильтонов путь - это цикл; удаляя из него любое ребро, мы будем получать каркас, который никак не может быть дешевле минимального каркаса).

С другой стороны, какой ответ находит алгоритм Эйлера - он берёт из каркаса каждое ребро дважды, а потом некоторые рёбра удаляет, заменяя их "срезками" (скажем, в дереве-цепочке 1-2-3 можно оставить рёбра 1-2, 2-3, 3-1, т.е. рёбра 3-2 и 2-1 заменились одной "срезкой" 3-1). Из неравенства треугольников следует, что после "срезок" стоимость пути никак не может увеличиться. Таким образом, стоимость пути-результата алгоритма Эйлера не выше, чем 2 * стоимость минимального каркаса.

Итого по двум этим неравенствам получаем, что алгоритм Эйлера найдёт путь не более чем в 2 раза худший, чем оптимальный.
PM MAIL WWW ICQ   Вверх
iDeus
Дата 10.6.2009, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Deus vult
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 5.6.2008
Где: Vladivostok

Репутация: нет
Всего: нет



maxdiver, благодарю, очень толково и доходчиво. 
70% программы уже реализовано. 
Еще раз большое спасибо. 
Вопрос закрыт
PM MAIL ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0389 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.