Аноним

Метрическая задача коммивояжера: различия между версиями

Материал из WEGA
м
мНет описания правки
Строка 22: Строка 22:


== Основные результаты ==
== Основные результаты ==
Простой 2-аппроксимацией метрической задачи коммивояжера является ''алгоритм удвоения дерева''. Он использует минимальные остовные деревья для вычисления гамильтоновых обходов. [[Остовное дерево]] T графа G = (V, E, w) представляет собой связный ациклический подграф G, содержащий все вершины V. Вес w(T) такого остовного дерева равен сумме весов его ребер, т.е. <math>w(T) = \sum_{e \in TH} w(e) \;</math>. Остовное дерево является минимальным, если его вес минимален среди всех остовных деревьев G. Можно эффективно вычислить минимальное остовное дерево, например, при помощи алгоритмов Прима или Крускала (см., например, [5]).
Простой 2-аппроксимацией метрической задачи коммивояжера является ''алгоритм удвоения дерева''. Он использует минимальные остовные деревья для вычисления гамильтоновых обходов. [[Остовное дерево]] T графа G = (V, E, w) представляет собой связный ациклический подграф G, содержащий все вершины V. Вес w(T) такого остовного дерева равен сумме весов его ребер, т.е. <math>w(T) = \sum_{e \in T} w(e) \;</math>. Остовное дерево является минимальным, если его вес минимален среди всех остовных деревьев G. Можно эффективно вычислить минимальное остовное дерево, например, при помощи алгоритмов Прима или Крускала (см., к примеру, [5]).




Алгоритм удвоения дерева известен с давних времен. Следующая лемма доказывает верхнюю границу гарантии эффективности алгоритма удвоения дерева.
Алгоритм удвоения дерева известен с давних времен. Следующая лемма необходима для доказательства верхней границы гарантии эффективности алгоритма удвоения дерева.




   Дано: полный неориентированный граф без циклов G = (V, E, w) с взвешенными ребрами и весовая функция <math>w: E \to \mathbb{Q}_{ \ge 0}</math>, удовлетворяющая неравенству треугольника.
   Дано: полный неориентированный граф без циклов G = (V, E, w) с взвешенными ребрами и весовая функция <math>w: E \to \mathbb{Q}_{ \ge 0}</math>, удовлетворяющая неравенству треугольника.
    
    
   Требуется: найти гамильтонов обход для G, являющийся 2”-аппроксимацией.
   Требуется: найти гамильтонов обход для G, являющийся 2-аппроксимацией.
    
    
   1: Вычислить минимальное остовное дерево T графа G.
   1: Вычислить минимальное остовное дерево T графа G.
   2: Продублировать каждое ребро T и получить эйлеров мультиграф T’.
   2: Продублировать каждое ребро T и получить эйлеров мультиграф T’.
   3: Вычислить эйлеров обход для T (например, при помощи поиска в глубину по T). При посещении вершины эйлерова обхода, которая ранее уже была посещена, эта вершина пропускается,
   3: Вычислить эйлеров обход для T' (например, при помощи поиска в глубину по T). При посещении вершины эйлерова обхода, которая ранее уже была посещена, пропускаем эту вершину
       и мы переходим к следующей непосещенной вершине эйлерова обхода. (Этот процесс называется сокращением обхода).
       и переходим к следующей непосещенной вершине эйлерова обхода. (Этот процесс называется ''сокращением обхода'').
       Вернуть полученный гамильтонов обход H.
       Вернуть полученный гамильтонов обход H.


Строка 58: Строка 58:
   Дано: полный неориентированный граф без циклов G = (V, E, w) с весовой функцией <math>w: E \to \mathbb{Q}_{ \ge 0}</math>, удовлетворяющей неравенству треугольника.
   Дано: полный неориентированный граф без циклов G = (V, E, w) с весовой функцией <math>w: E \to \mathbb{Q}_{ \ge 0}</math>, удовлетворяющей неравенству треугольника.
    
    
   Требуется: найти гамильтонов обход для G, являющийся 3/2”-аппроксимацией.
   Требуется: найти гамильтонов обход для G, являющийся 3/2-аппроксимацией.
    
    
   1: Вычислить минимальное остовное дерево T графа G.
   1: Вычислить минимальное остовное дерево T графа G.
4551

правка