Алгоритм Христофидеса или алгоритм Христофидеса–Сердюкова — это алгоритм для нахождения приближённых решений задачи коммивояжёра в случаях, когда расстояния образуют метрическое пространство (они симметричны и подчиняются неравенству треугольника ). [1] Это приближённый алгоритм , который гарантирует, что его решения будут находиться в пределах множителя 3/2 от оптимальной длины решения, и назван в честь Никоса Христофидеса и Анатолия Ивановича Сердюкова ; последний открыл его независимо в 1976 году (но публикация датирована 1978 годом). [2] [3] [4]
Пусть G = ( V , w ) — пример задачи коммивояжера. То есть G — полный граф на множестве вершин V , а функция w присваивает неотрицательный действительный вес каждому ребру G . Согласно неравенству треугольника, для каждых трех вершин u , v , и x должно быть так, что w ( uv ) + w ( vx ) ≥ w ( ux ) .
Тогда алгоритм можно описать на псевдокоде следующим образом. [1]
Шаги 5 и 6 не обязательно дают только один результат; как таковой эвристика может дать несколько различных путей.
В худшем случае сложность алгоритма определяется шагом идеального соответствия, который имеет сложность. [2] В статье Сердюкова заявлена сложность, [4] поскольку автору был известен только менее эффективный алгоритм идеального соответствия. [3]
Стоимость решения, полученного с помощью алгоритма, находится в пределах 3/2 от оптимума. Чтобы доказать это, пусть C будет оптимальным туром коммивояжера. Удаление ребра из C дает остовное дерево, которое должно иметь вес не меньше веса минимального остовного дерева, что подразумевает, что w ( T ) ≤ w ( C ) - нижняя граница стоимости оптимального решения.
Алгоритм решает проблему, что T не является туром, путем идентификации всех вершин нечетной степени в T ; поскольку сумма степеней в любом графе четна (по лемме о рукопожатии ), существует четное число таких вершин. Алгоритм находит идеальное паросочетание M минимального веса среди вершин нечетной степени.
Далее, пронумеруем вершины O в циклическом порядке вокруг C и разобьем C на два набора путей: те, в которых первая вершина пути в циклическом порядке имеет нечетный номер, и те, в которых первая вершина пути имеет четный номер. Каждый набор путей соответствует идеальному совпадению O , которое соответствует двум конечным точкам каждого пути, и вес этого совпадения не больше веса путей. Фактически, каждая конечная точка пути будет связана с другой конечной точкой, которая также имеет нечетное количество посещений из-за характера тура.
Так как эти два набора путей разделяют ребра C , один из двух наборов имеет не более половины веса C , и благодаря неравенству треугольника его соответствующее паросочетание имеет вес, который также не более половины веса C. Совершенное паросочетание с минимальным весом не может иметь большего веса, поэтому w ( M ) ≤ w ( C )/2 . Сложение весов T и M дает вес эйлерова тура, не более 3 w ( C )/2 . Благодаря неравенству треугольника, даже если эйлеров тур может повторно посещать вершины, сокращение не увеличивает вес, поэтому вес выхода также не более 3 w ( C )/2 . [1]
Существуют входные данные для задачи коммивояжера, которые заставляют алгоритм Кристофидеса находить решение, коэффициент аппроксимации которого произвольно близок к 3/2 . Один из таких классов входных данных образован путем из n вершин , где ребра пути имеют вес 1 , вместе с набором ребер, соединяющих вершины, отстоящие друг от друга на два шага в пути с весом 1 + ε для числа ε, выбранного близким к нулю, но положительным.
Все оставшиеся ребра полного графа имеют расстояния, заданные кратчайшими путями в этом подграфе. Тогда минимальное остовное дерево будет задано путем длиной n − 1 , и единственные две нечетные вершины будут конечными точками пути, чье идеальное паросочетание состоит из одного ребра с весом приблизительно n /2 .
Объединение дерева и сопоставления представляет собой цикл без возможных сокращений и с весом приблизительно 3 n /2 . Однако оптимальное решение использует ребра веса 1 + ε вместе с двумя ребрами веса 1 , инцидентными конечным точкам пути, и имеет общий вес (1 + ε )( n − 2) + 2 , близкий к n для малых значений ε . Следовательно, мы получаем коэффициент аппроксимации 3/2. [5]
Дано: полный граф, веса ребер которого подчиняются неравенству треугольника. | |
Вычислить минимальное остовное дерево T | |
Вычислить множество вершин O с нечетной степенью в T | |
Образуем подграф G, используя только вершины O | |
Построить минимальное по весу идеальное паросочетание M в этом подграфе | |
Объединить дерево соответствия и остовное дерево T ∪ M, чтобы сформировать эйлеров мультиграф | |
Вычислить цикл Эйлера Здесь цикл идет по пути A->B->C->A->D->E->A. Также допустимо A->B->C->A->E->D->A. | |
Удалим повторяющиеся вершины, что даст выход алгоритма. Если бы использовался альтернативный маршрут, то сокращение пути было бы от C до E, что приводит к более короткому маршруту (A->B->C->E->D->A), если это евклидов граф, поскольку маршрут A->B->C->D->E->A имеет пересекающиеся линии, что, как доказано, не является кратчайшим маршрутом. |
Этот алгоритм по-прежнему остается лучшим полиномиальным алгоритмом аппроксимации времени для указанной задачи, который был тщательно рецензирован соответствующим научным сообществом для задачи коммивояжера на общих метрических пространствах. В июле 2020 года Карлин, Кляйн и Гаран выпустили препринт, в котором они представили новый алгоритм аппроксимации и заявили, что его коэффициент аппроксимации составляет 1,5 − 10 −36 . Их алгоритм является рандомизированным и следует принципам, аналогичным алгоритму Кристофидеса, но использует случайно выбранное дерево из тщательно выбранного случайного распределения вместо минимального остовного дерева. [6] [7] Статья была опубликована на STOC'21 [8] , где она получила награду за лучшую статью. [9]
В частном случае евклидова пространства для любого c > 0, где d — число измерений в евклидовом пространстве, существует алгоритм с полиномиальным временем выполнения, который находит маршрут длиной не более (1 + 1/ c ) раз большей оптимальной для геометрических примеров задачи коммивояжера в
это называется схемой аппроксимации полиномиального времени (PTAS). [10] Санджив Арора и Джозеф СБ Митчелл были награждены премией Гёделя в 2010 году за одновременное открытие PTAS для евклидовой задачи коммивояжера.