2013-03-08 3 views
0

Определения классических путешествующих продавцов (TSP):TSP-Вариант, возможный алгоритм?

Учитывая взвешенный полный неориентированный граф, где выполняется неравенство треугольника, возвращает гамильтонов путь минимального общего веса.

В моем случае я не хочу пути Гамильтона, мне нужен путь между двумя хорошо известными вершинами. Таким образом, формулировка будет выглядеть так:

Учитывая взвешенный полный неориентированный граф, где выполняется неравенство треугольника, и две специальные вершины, называемые источником и получателем, возвращают минимальный взвешенный путь, который посещает все узлы ровно один раз и начинается с источника и заканчивается до пункта назначения.

Напомню, что путь гамильтониана - это путь в неориентированном графе, который посещает каждую вершину ровно один раз.

Для оригинальной проблемы хорошее приближение (в худшем случае 3/2 наилучшего решения) является алгоритмом Христодеса, его можно изменить для моего случая? Или ты знаешь другой способ?

+0

У вас есть ограничение на то, что каждую вершину нужно посещать ровно один раз? – bloops

+0

........................ Исправлено. Благодарю. –

+0

Для того, что стоит, вариант проблемы Гамильтонова пути, где указаны начальные/конечные вершины, иногда называют «ограниченным гамильтоновым путём». – mhum

ответ

0

Добавьте край (= дорога) от узла назначения к исходному узлу со стоимостью 0, и у вас есть TSP (для которого неравенство треугольника не выполняется).

В книге «В погоне за путешественником» кратко упоминается эта техника.

+0

График завершен, там уже есть граница между источником и пунктом назначения. Я не уверен, что изменение веса имеет смысл. Имеет ли это? –

+0

Думаю, у меня есть идея. Добавьте вершину с двумя ребрами нулевого веса в источник и место назначения. Наконец, вычислим гамильтоновую траекторию на новом графе. Вес 0 гарантирует, что источник и пункт назначения будут последовательно. Просто удалите дополнительный узел и относительные края, и у вас есть решение. –

0

Почему вы не используете алгоритм dijkstra с дополнительным хранением книг на каждом узле для информации о пути. то есть список вершин, переданных в кратчайший путь к этой конкретной вершине из источника.

И остановитесь, когда достигнете своей конечной вершины. Тогда ваш путь будет

Путь к начальной вершине текущего края + текущий край.

где текущий край - это последний край, который ведет вас к месту назначения.

+0

Мне нужно посетить все узлы ровно один раз. –

Смежные вопросы