Задача о k-центрах в графе: постановка и алгоритмы

Задача о k-центрах в графе - это классическая задача размещения: нужно выбрать вершин-«центров» так, чтобы любая вершина графа оказалась как можно ближе к ближайшему из них. Она возникает в логистике (где поставить складов), в проектировании сетей (где разместить серверы или ретрансляторы) и в кластеризации данных. Формально это минимаксная оптимизационная задача, и в общем случае она NP-трудна, поэтому на практике решают её приближённо. Разберём строгую постановку, почему точное решение тяжело и как работает классический жадный алгоритм с гарантией качества.
Постановка задачи
Дан связный граф с заданными расстояниями между вершинами (длинами кратчайших путей) и число . Требуется выбрать множество центров размера так, чтобы минимизировать наибольшее расстояние от любой вершины до ближайшего центра.
Введём функцию покрытия - расстояние от вершины до множества центров :
Тогда стоимость размещения - это радиус покрытия:
а сама задача о k-центрах формулируется как
Оптимальное значение называют оптимальным радиусом: при размещении центров никакая вершина не окажется дальше от ближайшего из них. Структура «мин-макс-мин» и делает задачу нетривиальной.
Чтобы прочувствовать постановку, удобно сразу прогнать конкретный граф: задать рёбра, число и посмотреть, какие центры минимизируют максимальное расстояние. Инструмент ниже соберёт корректный запрос с пошаговым разбором.
Минимаксный критерий и его смысл
Ключевая особенность задачи о k-центрах - именно минимаксный (а не суммарный) критерий. Мы минимизируем худший случай: расстояние до самой неудачно расположенной вершины. Это отличает её от задачи о k-медианах, где минимизируют сумму , и от задачи о покрытии множества.
Минимаксный критерий уместен там, где важна гарантия для каждого потребителя, а не средняя по всем. Если центры - это пожарные части или станции скорой помощи, то «средняя» близость бесполезна: критично, чтобы даже самая удалённая точка обслуживалась за приемлемое время. Поэтому задача о k-центрах - это модель «справедливого» размещения с гарантией наихудшего случая.
Связь с радиусом и эксцентриситетом
При задача вырождается в поиск одной вершины с минимальным эксцентриситетом. Напомним, эксцентриситет вершины - это , и наименьший эксцентриситет по графу есть радиус:
При оптимальный радиус покрытия совпадает с радиусом графа , а единственный центр - это центральная вершина графа. Подробнее о том, как считать эти величины, - в разборе про радиус и диаметр графа и отдельно про эксцентриситет вершины. Задача о k-центрах обобщает эту идею: вместо одной «удобной» точки мы ищем точек, совместно покрывающих граф с минимальным радиусом.
С ростом оптимальный радиус монотонно не возрастает: добавление центра не может ухудшить покрытие. В предельном случае можно поставить центр в каждую вершину и получить .
Почему задача NP-трудна
Точное решение задачи о k-центрах в общем случае невозможно за полиномиальное время (если ). Доказательство - сведение от задачи о доминирующем множестве. Доминирующее множество размера существует тогда и только тогда, когда центров покрывают граф с радиусом . Поскольку проверка существования доминирующего множества заданного размера NP-полна, NP-трудной оказывается и задача о k-центрах.
Более того, доказано, что задачу нельзя приблизить с коэффициентом лучше : не существует полиномиального алгоритма, гарантирующего решение с радиусом строго меньше (опять же при ). Это делает значение особенным - и хорошая новость в том, что эта граница достижима.
NP-трудность означает, что полный перебор всех $\binom{n}{k}$ подмножеств работает только для маленьких графов. Уже при $n = 40$, $k = 8$ число вариантов превышает 75 миллионов - для учебной задачи перебор годится, для реальных сетей нет.
Жадный алгоритм Гонзалеса (2-приближение)
Существует простой жадный алгоритм (farthest-first traversal, алгоритм Гонзалеса), который гарантирует радиус не более - то есть достигает теоретического предела приближения.
Идея - «расставлять центры как можно дальше друг от друга»:
- Выбираем произвольную вершину первым центром: .
- Пока : находим вершину , наиболее удалённую от текущего множества центров (максимизирующую ), и добавляем её в .
- После выбора центров итоговый радиус покрытия равен .
Интуиция гарантии: алгоритм всегда «затыкает» самую дальнюю дыру в покрытии. Когда мы добавили центров, оставшийся максимум не превышает расстояния между двумя ближайшими из выбранных «далёких» точек, а оно, в свою очередь, ограничено через неравенство треугольника.
Доказательство оценки 2r*
Покажем, почему алгоритм Гонзалеса не превосходит . Пусть после работы алгоритма нашлась вершина с - это и есть полученный радиус. По жадному правилу любые два выбранных центра отстоят друг от друга не менее чем на , и сама отстоит от всех центров не менее чем на . Значит, у нас есть точка (k центров плюс ), попарно удалённых не менее чем на .
В оптимальном решении эти точку покрывают всего центров, поэтому по принципу Дирихле какие-то две из них попадают в зону одного оптимального центра . Тогда и , откуда по неравенству треугольника
Следовательно, радиус, выданный алгоритмом, не превосходит . Эта оценка точная и совпадает с нижней границей неприближаемости.
Параметрический подход и бинарный поиск
Альтернатива жадному методу - свести оптимизацию к серии задач разрешимости. Зафиксируем порог и спросим: можно ли покрыть граф центрами с радиусом ? Это «задача о порогах»: строим пороговый граф , оставляя ребро между вершинами, если , и проверяем, хватит ли доминирующих центров.
Перебирая кандидатов (а их не больше различных значений расстояний) бинарным поиском, можно найти минимальный допустимый порог. На этой идее основан точный алгоритм Ху и приближённый алгоритм с тем же коэффициентом . Для учебных целей бинарный поиск по значениям расстояний - наглядный способ понять, что оптимальный радиус всегда равен одному из попарных расстояний в графе.
Частые ошибки
- Минимизируют сумму расстояний вместо максимума. Сумма - это уже задача о k-медианах, у неё другие оптимумы и другие алгоритмы.
- Считают, что жадный алгоритм даёт точный оптимум. Он гарантирует лишь ; реальный оптимум часто меньше.
- Забывают, что центры обязаны быть вершинами графа. В «вершинной» постановке ; если центр можно ставить в любой точке ребра, это уже непрерывная (абсолютная) задача о центрах.
- Путают -центры с -кликами или -раскраской - это разные задачи, совпадает лишь буква .
- Применяют задачу к несвязному графу без оговорок. Если граф несвязен, вершины из разных компонент недостижимы, , и нужно отдельно оговаривать покрытие по компонентам.
FAQ
Чем k-центры отличаются от k-медиан? Критерием. В k-центрах минимизируют максимум расстояния (худший случай), в k-медианах - сумму расстояний (средний случай). Оптимальные размещения и алгоритмы у них разные, хотя постановки внешне похожи.
Можно ли решить задачу точно? Для небольших графов - да, полным перебором всех подмножеств вершин или бинарным поиском по порогу . Для больших - нет: задача NP-трудна, и в общем случае ограничиваются 2-приближённым алгоритмом.
Почему именно коэффициент 2 считается оптимальным? Доказано, что приблизить задачу лучше чем в раза за полиномиальное время невозможно (при ), а жадный алгоритм Гонзалеса этот коэффициент достигает. Поэтому - одновременно нижняя и верхняя граница приближаемости.
Коротко
Задача о k-центрах в графе - это выбор вершин-центров, минимизирующий максимальное расстояние от любой вершины до ближайшего центра: . При ответом служит центр графа с радиусом . Задача NP-трудна (сведение к доминирующему множеству) и неприближаема лучше чем в раза. Зато жадный алгоритм Гонзалеса, расставляющий центры «как можно дальше друг от друга», гарантирует радиус не более - и это оптимальная достижимая граница.
Читайте также

Алгоритм Прима - как построить остовное дерево по шагам
Разбираем, как алгоритм Прима шаг за шагом строит минимальное остовное дерево графа: идея жадного выбора, лемма о разрезе и трассировка на конкретном примере.

Хроматический полином графа: как считать и применять
Что такое хроматический полином графа, как его вычислить через теорему об удалении и стягивании ребра, свойства коэффициентов и связь с хроматическим числом. Формулы и пошаговый пример.

Максимальное независимое множество в графе: разбор
Что такое независимое множество вершин графа, чем различаются максимальное и наибольшее множество, как связаны число независимости, кликовое число и вершинное покрытие, как искать ответ вручную и алгоритмами.