Задача о \(k\)-центрах
Рассмотрим следующую задачу. В сельском районе расположено несколько небольших населенных пунктов, связанных дорогами. Необходимо построить \(k\) больниц так, чтобы минимизировать максимальное расстояние от каждого населенного пункта до ближайшей больницы. Назовем эту задачу задачей о \(k\)-центрах. Далее в главе рассматривается задача о \(k\)-центрах и ее взвешенная версия при условии, что расстояния между городами удовлетворяют неравенству треугольника. Без такого ограничения для задачи о \(k\)-центрах не существует \(\alpha (n)\)-приближенных алгоритмов для любой полиномиально вычислимой функции \(\alpha (n)\) при условии, что \(P \neq N P\).
Пусть даны произвольное подмножество вершин \(S \subseteq V\) и произвольная вершина \(v \in V\). Определим расстояние от \(v\) до \(S\) как
\[ \operatorname {connect}(v, S) := \min \{ \operatorname {cost}(u, v) \mid u \in S\} \]
Метрическая задача о \(k\)-центрах
\(I = \left(G, \operatorname {cost}, k\right)\), где
Полный граф \(G=(V, E)\);
Стоимости ребер \(\operatorname {cost}: E \rightarrow \mathbf{Q}^{+}\) такие, что для любых трех вершин \(u, v\) и \(w\) выполняется
\[ \operatorname {cost}(u, v) \leq \operatorname {cost}(u, w)+\operatorname {cost}(w, v) \]
Натуральное число \(k \in \mathbb {N}\) (\(k \leq \left|V\right|\)), устанавливающее размер \(S\).
Найти подмножество вершин \(S \subseteq V\), с \(|S|=k\), которое минимизирует величину \[ \max _{v \in V} \left\{ \operatorname {connect}(v,S)\right\} \]
Метрическая задача о \(k\) центрах: пример
Полный граф на \(17\) вершинах, \(k=3\) (для наглядности показана часть рёбер). Наведите курсор на вершину — увидите, к какому центру она приписана.
1 Параметрическое сокращение для метрической задачи о \(k\)-центрах
Зачастую знание стоимости оптимального решения упрощает поиск хорошего приближенного решения. В частности, это позволяет отсечь заведомо неподходящие входные данные и сузить область поиска. К сожалению, вычисление стоимости оптимального решения имеет ту же сложность, что и нахождение самого решения NP-трудной оптимизационной задачи. Техника параметрического сокращения позволяет обходить эту трудность для некоторых задач. Выберем параметр \(t\), который является предположением о стоимости оптимального решения. Для выбранного значения \(t\) из заданного примера \(I\) удалим те данные, которые не будут использоваться в любом решении стоимостью не больше \(t\). Обозначим такой сокращенный пример как \(I(t)\).
Алгоритм состоит из нескольких идей. Пусть дана индивидуальная задача \(I\).
Параметризация. Получить параметризованную задачу разрешимости (т.е. задачу с ответом “ДА”/“НЕТ”) \(\operatorname {decision}(I, t)\) для исходной задачи оптимизации:
\(\operatorname {optimization}(I)\): минимизировать (максимизировать) стоимость решения;
\(\operatorname {decision}(I, t)\): понять, есть ли допустимое решение стоимости \(\operatorname {cost} \leq t\) (\(\operatorname {cost} \geq t\)).
Свести оптимизационную задачу к задаче разрешимости \(\operatorname {decision}(t)\): решать \(\operatorname {decision}(t)\) для возрастающих \(t\) до тех пор, пока не получим ответ “ДА”.
Сокращение параметров. Рассматривая \(\operatorname {decision}(I, t)\) для фиксированных \(I, t\), перейти от \(I\) к индивидуальной задаче \(I' = I'(t)\), удаляя те части \(I\), которые заведомо не могут быть использованы в допустимом решении \(\sigma\), для которого \(\operatorname {cost}(\sigma ) \leq t\).
Нижняя оценка. \(\alpha\)-приближенный алгоритм состоит из 2-х шагов:
семейство примеров \(I(t)\) используется для подсчета нижней оценки на \(\operatorname {OPT}\), назовем ее \(t^{*}\);
находится допустимое решение на примере \(I\left(\alpha \cdot t^{*}\right)\).
Покажем, как технику параметрического сокращения применить к задаче о \(k\)-центрах. Занумеруем ребра графа \(G\) по неубыванию стоимостей, т.е.
\[ \operatorname {cost}\left(e_{1}\right) \leq \operatorname {cost}\left(e_{2}\right) \leq \ldots \leq \operatorname {cost}\left(e_{m}\right), \]
и пусть \(G_{i}=\left(V, E_{i}\right)\), где \(E_{i}=\left\{ e_{1}, e_{2}, \ldots , e_{i}\right\}\).
Параметризация. Вместо исходной задачи рассматриваем следующую задачу разрешимости \(\operatorname {decision}(I,t)\): для данного \(I = (G, \operatorname {cost}, k)\) и для данного \(t \in \mathbb {Q}_+\) необходимо понять, существует ли в \(G\) такое подмножество вершин \(S \subset V\), что
\[ \max _{v \in V} \left\{ \operatorname {connect}(v,S)\right\} \leq t \]
Заметим, что нам достаточно решать \(\operatorname {decision}(I, t)\) для \(t \in \left\{ \operatorname {cost}(e) \mid e \in E\right\}\). Пусть \(t = \operatorname {cost}(e_j)\) для некоторого \(j = 1, \ldots , m\).
Сокращение параметров. При рассмотрении указанной задачи \(\operatorname {decision}(I,t)\) ребра, стоимость которых больше \(t = \operatorname {cost}(e_j)\), на ответ влиять не будут. Их можно удалить из индивидуальной задачи \(I\): перейти к \(I' = I_j = (G_j, \operatorname {cost}_j, k)\), где
\(G_j = (V, E_j)\);
\(\operatorname {cost}_j = \operatorname {cost}|_{E_j}\).
Переходим от \(\operatorname {decision}(I,t)\) к \(\operatorname {decision}(I_j,t)\).
Параметрическое сокращение для задачи о \(k\)-центрах
Решение \(\{s_1,s_2,s_3\}\) (зелёные); синие рёбра — звёзды с центрами в \(S\); красное ребро \(e_j\) — самое дорогое из них. Справа — сокращённый граф \(G_j=(V,\{e_1,\ldots,e_j\})\): убраны все рёбра дороже \(\mathrm{cost}(e_j)\). Наведите курсор на ребро, чтобы узнать, пережило ли оно сокращение.
Доминирующим множеством в неориентированном графе \(H=(U, F)\) называется подмножество \(S \subset U\), такое, что каждая вершина из множества \(U \setminus S\) смежна с некоторой вершиной из множества \(S\). Обозначим через \(\operatorname {dom}(H)\) мощность минимального (по мощности) доминирующего множества в \(H\). Заметим, что задача \(\operatorname {decision}(I_j, \operatorname {cost}(e_j))\) является, по сути, задачей проверки неравенства \(\operatorname {dom}(G_j) \leq k\).
Задача о \(k\)-центрах эквивалентна поиску минимального индекса \(j\), такого, что \(G_{j}\) содержит доминирующее множество мощности не более \(k\), т. е. \(G_{j}\) содержит \(k\) звезд, охватывающих все вершины, где звезда это граф \(K_{1, p}, p \geq 1\). Если \(j^{*}\)- это минимальный такой индекс, тогда величина \(\operatorname {cost}\left(e_{j^{*}}\right)\) является оптимальным значением решения задачи о \(k\) центрах. Обозначим эту величину как \(\operatorname {OPT}\).
Сведение исходной задачи к вычислению \(\operatorname {dom}(G_j)\) не может напрямую нам помочь: вычисление мощности доминирующего множества для произвольного графа является NP-трудной задачей.
Независимым множеством в графе \(H=(U, F)\) называется подмножество вершин \(I \subset U\), такое, что в нем нет смежных вершин.
Назовем квадратом графа \(H=(V, F)\) граф \(H^{2}=(V, E)\), такой, что ребро \((u, v) \in E\) тогда и только тогда, когда граф \(H\) содержит путь между вершинами \(u\) и \(v, u \neq v\), длины не более 2.
Квадрат графа
В \(G_j^2\) вершина \(u\) соединена не только со своими соседями (толстые рёбра), но и с их соседями — со всеми, до кого есть путь длины \(\le2\) (светлые дуги). Например, \(u\) и \(u'\) в \(G_j\) не смежны, а в \(G_j^2\) соединены. Наведите курсор на вершину в правой панели.
Приведем пример, который показывает, что эта оценка точна. Пусть задан граф на \(n+1\) вершинах, с одной центральной вершиной. Ребра, смежные с центральной вершиной, имеют стоимость 1, все остальные ребра имеют стоимость 2. Пример графа изображен на рисунке ниже.
Точность оценки 2 алгоритма Хохбаума–Шмойса
Звезда \(K_{1,n}\): рёбра при центре \(c\) стоят \(1\), все остальные — \(2\) (пунктир, показана лишь часть). При \(k=1\) оптимум — центр, \(\mathrm{OPT}=1\). Алгоритм останавливается на \(j\), при котором \(G_j\) — звезда из единичных рёбер, а \(G_j^2\) — полный граф: любая вершина — максимальное независимое множество. Кликните по вершине, чтобы выбрать её центром.
Для \(k=1\) оптимальное решение - это центральная вершина, и \(\operatorname {OPT}=1\). Алгоритм Хошбаума-Шмойса получит индекс \(j=n\). Граф \(G_{n}^{2}\)- это полный граф, и если в качестве максимального независимого множества выбрана не центральная вершина, то стоимость решения, полученного алгоритмом, будет 2.
2 Задача о взвешенных центрах
Технику параметрического сокращения можно использовать и для решения метрической задачи о взвешенных центрах.
Метрическая задача о взвешенных центрах
полный граф \(G=(V, E)\);
стоимости ребер \(\operatorname {cost}: E \rightarrow \mathbf{Q}^{+}\), такие, что для любых трех вершин \(u, v\) и \(w\) выполняется \(\operatorname {cost}(u, v) \leq\) \(\operatorname {cost}(u, w)+\operatorname {cost}(w, v)\);
веса вершин \(w: V \rightarrow \mathbf{R}^{+}\) и верхняя граница \(W \in \mathbf{R}^{+}\).
Множество \(S \subseteq V\) суммарного веса \(w(S) \leq W\), которое минимизирует величину \(\max_{v}\{ \operatorname {connect}(v, S)\}\).
Задача о взвешенных центрах
Веса вершин \(1\), \(2\), \(3\) подписаны на вершинах; верхняя граница суммарного веса центров \(W=4\). Зелёные вершины — выбранные центры, жёлтые рёбра — их звёзды. Наведите курсор на вершину, чтобы узнать её вес и центр.
Обозначим через \(w \operatorname {dom}(G)\) вес доминирующего множества минимального веса в графе \(G\). Для решения метрической задачи о взвешенных центрах требуется найти наименьший индекс \(i\), такой, что \(w \operatorname {dom}\left(G_{i}\right) \leq\) \(W\). Пусть это будет индекс \(i^{*}\), тогда стоимость оптимального решения \(\operatorname {OPT}=\operatorname {cost}\left(e_{i^{*}}\right)\).
Рассмотрим вершинно-взвешенный граф \(H\), и пусть \(I\)- независимое множество в графе \(H^{2}\). Для каждого \(u \in I\) обозначим через \(s(u)\) самого легкого соседа вершины \(u\) в графе \(H\) (вершина \(u\) также считается сама для себя соседом). Пусть \(S=\{ s(u) \mid u \in I\}\).
В Алгоритме Хошбаума-Шмойса-2 вершина \(s_{i}(u)\) обозначает самого легкого соседа вершины \(u\) в графе \(G_{i}\).
Точный пример на оценку 3 для алгоритма Хохбаума–Шмойса-2
Путь \(a\text{-}b\text{-}c\text{-}d\) с единичными рёбрами, веса вершин \(a{:}1,\ b{:}2,\ c{:}2,\ d{:}2\), и \(n\) вершин бесконечного веса, каждая соединена с \(a\) ребром стоимости \(1+\varepsilon\) (остальные расстояния — кратчайшие пути). При \(W=3\) сравните оптимум и то, что может выдать алгоритм.