4551
правка
Irina (обсуждение | вклад) |
Irina (обсуждение | вклад) Нет описания правки |
||
Строка 22: | Строка 22: | ||
== Основные результаты == | == Основные результаты == | ||
Простой 2-аппроксимацией метрической задачи коммивояжера является алгоритм удвоения дерева. Он использует минимальные остовные деревья для вычисления гамильтоновых обходов. [[Остовное дерево]] T графа G = (V, E, w) представляет собой связный ациклический подграф G, содержащий все вершины E. Вес w(T) такого остовного дерева равен сумме весов его ребер, т.е. w(T) = | Простой 2-аппроксимацией метрической задачи коммивояжера является алгоритм удвоения дерева. Он использует минимальные остовные деревья для вычисления гамильтоновых обходов. [[Остовное дерево]] T графа G = (V, E, w) представляет собой связный ациклический подграф G, содержащий все вершины E. Вес w(T) такого остовного дерева равен сумме весов его ребер, т.е. <math>w(T) = \sum_{e \in TH} w(e) \;</math>. Остовное дерево является минимальным, если его вес минимален среди всех остовных деревьев G. Можно эффективно вычислить минимальное остовное дерево, например, при помощи алгоритмов Прима или Крускала (см., например, [5]). | ||
Строка 28: | Строка 28: | ||
Дано: полный неориентированный граф без циклов G = (V, E, w) с взвешенными ребрами и весовая функция w: E | Дано: полный неориентированный граф без циклов 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). При посещении вершины эйлерова обхода, которая ранее уже была посещена, эта вершина пропускается, и мы переходим к следующей непосещенной вершине эйлерова обхода. (Этот процесс называется сокращением обхода.) Вернуть полученный гамильтонов обхода H. | 3: Вычислить эйлеров обход для T (например, при помощи поиска в глубину по T). При посещении вершины эйлерова обхода, которая ранее уже была посещена, эта вершина пропускается, и мы переходим к следующей непосещенной вершине эйлерова обхода. (Этот процесс называется сокращением обхода.) Вернуть полученный гамильтонов обхода H. | ||
Алгоритм 1. Алгоритм удвоения дерева | Алгоритм 1. Алгоритм удвоения дерева | ||
Строка 41: | Строка 41: | ||
Лемма 1. Пусть T – минимальное остовное дерево G = (V, E, w). Тогда w(T) < OPT. | Лемма 1. Пусть T – минимальное остовное дерево G = (V, E, w). Тогда w(T) < OPT. | ||
Доказательство. Если удалить любое ребро гамильтонова обхода G, получим остовное дерево G. | Доказательство. Если удалить любое ребро гамильтонова обхода G, получим остовное дерево G. | ||
правка