4551
правка
Irina (обсуждение | вклад) |
Irina (обсуждение | вклад) |
||
Строка 28: | Строка 28: | ||
Дано: полный неориентированный граф без циклов G = (V, E, w) с взвешенными ребрами и | Дано: полный неориентированный граф без циклов G = (V, E, w) с взвешенными ребрами и весовой функцей <math>w: E \to \mathbb{Q}_{ \ge 0}</math>, удовлетворяющей неравенству треугольника. | ||
Требуется: найти гамильтонов обход для G, являющийся 2-аппроксимацией. | Требуется: найти гамильтонов обход для G, являющийся 2-аппроксимацией. | ||
Строка 43: | Строка 43: | ||
'''Лемма 1. Пусть T – минимальное остовное дерево G = (V, E, w). Тогда <math>w(T) \le OPT \;</math>.''' | '''Лемма 1. Пусть T – минимальное остовное дерево G = (V, E, w). Тогда <math>w(T) \le OPT \;</math>.''' | ||
Доказательство. Если удалить любое ребро гамильтонова обхода G, получим остовное дерево G. | Доказательство. Если удалить любое ребро гамильтонова обхода G, получим остовное дерево G. <math>\Box</math> | ||
'''Теорема 2. Алгоритм 1 всегда возвращает гамильтонов обход, вес которого не более чем вдвое превышает вес оптимального обхода. Он имеет полиномиальное время выполнения.''' | '''Теорема 2. Алгоритм 1 всегда возвращает гамильтонов обход, вес которого не более чем вдвое превышает вес оптимального обхода. Он имеет полиномиальное время выполнения.''' | ||
Доказательство. Согласно лемме 1, <math>w(T) \le OPT \;</math>. Поскольку мы удваиваем каждое ребро T, вес | Доказательство. Согласно лемме 1, <math>w(T) \le OPT \;</math>. Поскольку мы удваиваем каждое ребро T, вес T' составляет <math>w(T') = 2w(T) \le 2 OPT \;</math>. В результате сокращения обхода на шаге 3 путь в T' заменяется одним ребром. Согласно неравенству треугольника, сумма весов ребер на таком пути не меньше веса ребра, которым он заменяется. (Для произвольных весовых функций данный алгоритм оказывается недействительным). Следовательно, <math>w(H) \le w(T') \;</math>. Это доказывает утверждение по поводу эффективности аппроксимации. | ||
Время выполнения определяется главным образом временем вычисления минимального остовного дерева – которое, очевидно, является полиномиальным. | Время выполнения определяется главным образом временем вычисления минимального остовного дерева – которое, очевидно, является полиномиальным. <math>\Box</math> | ||
Алгоритм Кристофидеса (алгоритм 2) представляет собой продуманное уточнение алгоритма удвоения дерева. Вначале он вычисляет минимальное остовное дерево. Затем для всех вершин, имеющих нечетную степень в T, он вычисляет совершенное паросочетание с минимальным весом. Паросочетание M для графа G называется паросочетанием на <math>U \subseteq V \;</math>, если все ребра M состоят из двух вершин подмножества U. Такое паросочетание называется [[совершенное паросочетание|совершенным]], если каждая вершина из U инцидентна ребру из M. | Алгоритм Кристофидеса (алгоритм 2) представляет собой продуманное уточнение алгоритма удвоения дерева. Вначале он вычисляет минимальное остовное дерево. Затем для всех вершин, имеющих нечетную степень в T, он вычисляет совершенное паросочетание с минимальным весом. [[Паросочетание]] M для графа G называется паросочетанием на <math>U \subseteq V \;</math>, если все ребра M состоят из двух вершин подмножества U. Такое паросочетание называется [[совершенное паросочетание|совершенным]], если каждая вершина из U инцидентна ребру из M. | ||
Дано: полный неориентированный граф без циклов G = (V, E, w) с весовой | Дано: полный неориентированный граф без циклов G = (V, E, w) с взвешенными ребрами и весовой функцей <math>w: E \to \mathbb{Q}_{ \ge 0}</math>, удовлетворяющей неравенству треугольника. | ||
Требуется: найти гамильтонов обход для G, являющийся 3/2-аппроксимацией. | Требуется: найти гамильтонов обход для G, являющийся 3/2-аппроксимацией. |
правка