Класс | Алгоритм аппроксимации |
---|---|
Структура данных | График |
Худший случай производительность | |
Худший -case сложность пространства |
алгоритм ближайшего соседа был одним из первые алгоритмы, использованные для приближенного решения задачи коммивояжера. В этой задаче продавец начинает со случайного города и неоднократно посещает ближайший город, пока не будут посещены все. Алгоритм быстро дает короткий тур, но обычно не самый оптимальный.
Это шаги алгоритма:
Последовательность посещенных вершин является результатом работы алгоритма.
Алгоритм ближайшего соседа легко реализовать и выполняется быстро, но иногда он может пропускать более короткие маршруты, которые легко заметить с помощью человеческого понимания из-за его «жадной» природы. В качестве общего ориентира, если последние несколько этапов тура сопоставимы по продолжительности с первыми этапами, то тур является разумным; если их намного больше, то, вероятно, существуют гораздо лучшие туры. Другая проверка - использовать такой алгоритм, как алгоритм нижней границы, чтобы оценить, достаточно ли хорош этот тур.
В худшем случае алгоритм дает обход, который намного длиннее оптимального. Чтобы быть точным, для каждой константы r существует экземпляр задачи коммивояжера такой, что длина маршрута, вычисленная алгоритмом ближайшего соседа, больше, чем r, умноженная на длину оптимальный тур. Более того, для каждого количества городов есть присвоение расстояний между городами, для которых эвристика ближайшего соседа дает уникальный наихудший возможный тур. (Если алгоритм применяется к каждой вершине в качестве начальной, лучший найденный путь будет лучше, чем по крайней мере N / 2-1 других обходов, где N - количество вершин)
Алгоритм ближайшего соседа может вообще не найти подходящего тура, даже если он существует.