Алгоритм аппроксимации для варианта TSP, фиксированные начало и конец где угодно, кроме начальной точки + несколько посещений в каждой вершине РАЗРЕШЕНО

ПРИМЕЧАНИЕ: из-за того, что поездка не заканчивается в том же месте, в котором она началась, а также из-за того, что каждую точку можно посетить более одного раза, если я все еще посещаю их все, это на самом деле не вариант TSP, но Ставлю из-за отсутствия лучшего определения проблемы.

So..

Предположим, я собираюсь в поход с n достопримечательностями. Все эти точки связаны пешеходными тропами. У меня есть карта, на которой показаны все тропы с их расстояниями, что дает мне ориентированный график.

Моя проблема заключается в том, как приблизить тур, который начинается в точке A и посещает все n достопримечательностей, а заканчивается тур в любом месте, кроме точки, с которой я начал, и я хочу, чтобы тур был как можно короче.

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

Также я считаю, что это должен быть алгоритм, который работает для неметрических графов, где неравенство треугольника не выполняется, поскольку переход от a к b к c может быть быстрее, чем по очень долгому и странному пути от a к c напрямую. Я действительно учел, сохраняется ли неравенство треугольника, поскольку нет ограничений относительно того, сколько раз я посещаю каждую точку, пока я посещаю все из них, что означает, что я всегда буду выбирать самый короткий из двух различных путей от a до c и, следовательно, никогда такр долгий и странный путь.

Я считаю, что моя проблема проще, чем TSP, поэтому эти алгоритмы не подходят для этой задачи. Я думал об использовании минимального остовного дерева, но мне трудно убедить себя, что они могут быть применены к неметрическому асимметричному ориентированному графу.

Что мне действительно нужно, так это несколько указателей на то, как я могу придумать алгоритм аппроксимации, который найдет почти оптимальный тур по всем n точкам.


person Casper    schedule 27.04.2012    source источник
comment
Вы должны отправить этот вопрос на cs.stackexchange.com   -  person Vitaly Olegovitch    schedule 28.04.2012
comment
Поскольку вы не против посещения одного и того же узла несколько раз, вы можете преобразовать веса так, чтобы выполнялось неравенство треугольника. Например. Если a- ›c дальше, чем a-› b- ›c в оптимальном решении, вы никогда не собираетесь использовать прямой a-› c. Поэтому лучше, если вы замените a- ›c значением a-› b- ›c, чтобы ваша метрика удовлетворяла треугольному неравенству (где вы можете получить лучшие результаты).   -  person ElKamina    schedule 28.04.2012
comment
Кажется, этот вопрос не вызывает здесь особой любви. Я голосую за то, чтобы переместить его на cs.stackexchange.com - надеюсь, там будут какие-то ответы. :)   -  person Li-aung Yip    schedule 28.04.2012


Ответы (2)


Вы можете упростить эту задачу до обычной задачи TSP с n + 1 вершиной. Для этого возьмите узел «А» и все точки интереса и вычислите кратчайший путь между каждой парой этих точек. Вы можете использовать алгоритм кратчайшего пути для всех пар на исходном графе. Или, если n значительно меньше размера исходного графа, используйте алгоритм кратчайшего пути с одним источником для этих n + 1 вершин. Также вы можете установить длину всех путей, заканчивающихся на 'A', на некоторую константу, большую, чем любой другой путь, что позволяет завершить поездку в любом месте (это может потребоваться только для алгоритмов TSP, ищущих путь туда и обратно) .

В результате вы получаете полный график, который является метрическим, но все же асимметричным. Все, что вам сейчас нужно, это решить обычную задачу TSP на этом графике. Если вы хотите преобразовать этот асимметричный граф в симметричный, Википедия объяснит, как это сделать. .

person Evgeny Kluev    schedule 28.04.2012
comment
Похоже, это правильный путь: он остается простым, но дает правдоподобный результат. Я выбрал этот и пометил ваш пост как ответ. Большое спасибо за уделенное время - person Casper; 29.04.2012
comment
Кажется, это попытка найти (гамильтонов) путь, поэтому этот ответ мне кажется правильным в том смысле, что решение одного решает другое. Мне ваша проблема не кажется проще, чем TSP. Возможно, вам тоже нравятся повторения (TSP-R), но это не значит, что это другая сложность. - person ntg; 29.07.2014

Чтобы свести вашу проблему к асимметричной TSP, введите новый узел u и сделайте дуги длины L от u до A и от всех узлов, кроме A до u, где L очень велико (достаточно велико, чтобы ни одно оптимальное решение не возвращалось к u). Удалите u из маршрута, чтобы получить путь от A к другому узлу через все остальные. К сожалению, это сокращение сохраняет цель только аддитивно, что ухудшает гарантии приближения на постоянный коэффициент.

Целью редукции, на которую указал Евгений, является неметрический симметричный TSP, поэтому такое сокращение вам не полезно, потому что все известные приближения требуют метрических экземпляров. Предполагая, что набор следов образует планарный граф (или близок к нему), существует приближение постоянного множителя из-за Gharan и Saberi, которые, к сожалению, довольно сложно реализовать и не могут дать разумных результатов на практике. Frieze, Galbiati и Maffioli дают простую аппроксимацию лог-фактора для общих графиков.

Если есть разумное количество троп, ветвь и граница могут дать вам оптимальное решение. И G&S, и ветвь, и граница требуют решения линейной программы Хельда-Карпа для ATSP, которая сама по себе может быть полезна для оценки других подходов. Для многих случаев симметричного TSP, которые возникают на практике, он дает нижнюю границу стоимости оптимального решения в пределах 10% от истинного значения.

person oqi    schedule 28.04.2012
comment
Спасибо, что указали на ошибку в моем ответе. Исправлено теперь, чтобы сделать его метрическим. - person Evgeny Kluev; 28.04.2012
comment
Прежде всего, спасибо, что нашли время ответить на мой вопрос. Я немного поигрался с ветвью и связыванием, но мне не удалось добиться результата, который мне нравился. Это только из-за моей некомпетентности (:)), а не из-за вашего ответа. Тем не менее, мне все же удалось вполне нормально написать другой пост, поэтому я взял на себя смелость пометить его как ответ, но все равно спасибо! - person Casper; 29.04.2012